summaryrefslogtreecommitdiff
path: root/src/assets/viz/2/cljs/core.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets/viz/2/cljs/core.js')
-rw-r--r--src/assets/viz/2/cljs/core.js37633
1 files changed, 37633 insertions, 0 deletions
diff --git a/src/assets/viz/2/cljs/core.js b/src/assets/viz/2/cljs/core.js
new file mode 100644
index 0000000..31ad4ae
--- /dev/null
+++ b/src/assets/viz/2/cljs/core.js
@@ -0,0 +1,37633 @@
+// Compiled by ClojureScript 1.10.439 {:static-fns true}
+goog.provide('cljs.core');
+goog.require('goog.math.Long');
+goog.require('goog.math.Integer');
+goog.require('goog.string');
+goog.require('goog.object');
+goog.require('goog.array');
+goog.require('goog.Uri');
+goog.require('goog.string.StringBuffer');
+cljs.core._STAR_clojurescript_version_STAR_ = "1.10.439";
+cljs.core._STAR_unchecked_if_STAR_ = false;
+cljs.core._STAR_unchecked_arrays_STAR_ = false;
+cljs.core._STAR_warn_on_infer_STAR_ = false;
+if((typeof cljs !== 'undefined') && (typeof cljs.core !== 'undefined') && (typeof cljs.core.PROTOCOL_SENTINEL !== 'undefined')){
+} else {
+cljs.core.PROTOCOL_SENTINEL = ({});
+}
+cljs.core.MODULE_URIS = null;
+cljs.core.MODULE_INFOS = null;
+
+/** @define {string} */
+goog.define("cljs.core._STAR_target_STAR_","default");
+/**
+ * Var bound to the current namespace. Only used for bootstrapping.
+ * @type {*}
+ */
+cljs.core._STAR_ns_STAR_ = null;
+/**
+ * @type {*}
+ */
+cljs.core._STAR_out_STAR_ = null;
+cljs.core._STAR_assert_STAR_ = true;
+if((typeof cljs !== 'undefined') && (typeof cljs.core !== 'undefined') && (typeof cljs.core._STAR_print_fn_STAR_ !== 'undefined')){
+} else {
+/**
+ * Each runtime environment provides a different way to print output.
+ * Whatever function *print-fn* is bound to will be passed any
+ * Strings which should be printed.
+ */
+cljs.core._STAR_print_fn_STAR_ = null;
+}
+/**
+ * Arranges to have tap functions executed via the supplied f, a
+ * function of no arguments. Returns true if successful, false otherwise.
+ */
+cljs.core._STAR_exec_tap_fn_STAR_ = (function cljs$core$_STAR_exec_tap_fn_STAR_(f){
+var and__7791__auto__ = (typeof setTimeout !== 'undefined');
+if(and__7791__auto__){
+var and__7791__auto____$1 = setTimeout(f,(0));
+if(cljs.core.truth_(and__7791__auto____$1)){
+return true;
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+});
+if((typeof cljs !== 'undefined') && (typeof cljs.core !== 'undefined') && (typeof cljs.core._STAR_print_err_fn_STAR_ !== 'undefined')){
+} else {
+/**
+ * Each runtime environment provides a different way to print error output.
+ * Whatever function *print-err-fn* is bound to will be passed any
+ * Strings which should be printed.
+ */
+cljs.core._STAR_print_err_fn_STAR_ = null;
+}
+/**
+ * Set *print-fn* to f.
+ */
+cljs.core.set_print_fn_BANG_ = (function cljs$core$set_print_fn_BANG_(f){
+return cljs.core._STAR_print_fn_STAR_ = f;
+});
+/**
+ * Set *print-err-fn* to f.
+ */
+cljs.core.set_print_err_fn_BANG_ = (function cljs$core$set_print_err_fn_BANG_(f){
+return cljs.core._STAR_print_err_fn_STAR_ = f;
+});
+/**
+ * When set to true, output will be flushed whenever a newline is printed.
+ *
+ * Defaults to true.
+ */
+cljs.core._STAR_flush_on_newline_STAR_ = true;
+/**
+ * When set to logical false will drop newlines from printing calls.
+ * This is to work around the implicit newlines emitted by standard JavaScript
+ * console objects.
+ */
+cljs.core._STAR_print_newline_STAR_ = true;
+/**
+ * When set to logical false, strings and characters will be printed with
+ * non-alphanumeric characters converted to the appropriate escape sequences.
+ *
+ * Defaults to true
+ */
+cljs.core._STAR_print_readably_STAR_ = true;
+/**
+ * If set to logical true, when printing an object, its metadata will also
+ * be printed in a form that can be read back by the reader.
+ *
+ * Defaults to false.
+ */
+cljs.core._STAR_print_meta_STAR_ = false;
+/**
+ * When set to logical true, objects will be printed in a way that preserves
+ * their type when read in later.
+ *
+ * Defaults to false.
+ */
+cljs.core._STAR_print_dup_STAR_ = false;
+/**
+ * *print-namespace-maps* controls whether the printer will print
+ * namespace map literal syntax.
+ *
+ * Defaults to false, but the REPL binds it to true.
+ */
+cljs.core._STAR_print_namespace_maps_STAR_ = false;
+/**
+ * *print-length* controls how many items of each collection the
+ * printer will print. If it is bound to logical false, there is no
+ * limit. Otherwise, it must be bound to an integer indicating the maximum
+ * number of items of each collection to print. If a collection contains
+ * more items, the printer will print items up to the limit followed by
+ * '...' to represent the remaining items. The root binding is nil
+ * indicating no limit.
+ * @type {null|number}
+ */
+cljs.core._STAR_print_length_STAR_ = null;
+/**
+ * *print-level* controls how many levels deep the printer will
+ * print nested objects. If it is bound to logical false, there is no
+ * limit. Otherwise, it must be bound to an integer indicating the maximum
+ * level to print. Each argument to print is at level 0; if an argument is a
+ * collection, its items are at level 1; and so on. If an object is a
+ * collection and is at a level greater than or equal to the value bound to
+ * *print-level*, the printer prints '#' to represent it. The root binding
+ * is nil indicating no limit.
+ * @type {null|number}
+ */
+cljs.core._STAR_print_level_STAR_ = null;
+/**
+ * *print-fns-bodies* controls whether functions print their source or
+ * only their names.
+ */
+cljs.core._STAR_print_fn_bodies_STAR_ = false;
+if((typeof cljs !== 'undefined') && (typeof cljs.core !== 'undefined') && (typeof cljs.core._STAR_loaded_libs_STAR_ !== 'undefined')){
+} else {
+/**
+ * @type {*}
+ */
+cljs.core._STAR_loaded_libs_STAR_ = null;
+}
+cljs.core.pr_opts = (function cljs$core$pr_opts(){
+return new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"flush-on-newline","flush-on-newline",-151457939),cljs.core._STAR_flush_on_newline_STAR_,new cljs.core.Keyword(null,"readably","readably",1129599760),cljs.core._STAR_print_readably_STAR_,new cljs.core.Keyword(null,"meta","meta",1499536964),cljs.core._STAR_print_meta_STAR_,new cljs.core.Keyword(null,"dup","dup",556298533),cljs.core._STAR_print_dup_STAR_,new cljs.core.Keyword(null,"print-length","print-length",1931866356),cljs.core._STAR_print_length_STAR_], null);
+});
+/**
+ * Set *print-fn* to console.log
+ */
+cljs.core.enable_console_print_BANG_ = (function cljs$core$enable_console_print_BANG_(){
+cljs.core._STAR_print_newline_STAR_ = false;
+
+cljs.core.set_print_fn_BANG_((function (){
+var xs = arguments;
+return console.log.apply(console,goog.array.clone(xs));
+}));
+
+cljs.core.set_print_err_fn_BANG_((function (){
+var xs = arguments;
+return console.error.apply(console,goog.array.clone(xs));
+}));
+
+return null;
+});
+/**
+ * Internal - do not use!
+ */
+cljs.core.truth_ = (function cljs$core$truth_(x){
+return (x != null && x !== false);
+});
+cljs.core.not_native = null;
+
+/**
+ * Tests if 2 arguments are the same object
+ */
+cljs.core.identical_QMARK_ = (function cljs$core$identical_QMARK_(x,y){
+return (x === y);
+});
+/**
+ * Returns true if x is nil, false otherwise.
+ */
+cljs.core.nil_QMARK_ = (function cljs$core$nil_QMARK_(x){
+return (x == null);
+});
+/**
+ * Returns true if x is a JavaScript array.
+ */
+cljs.core.array_QMARK_ = (function cljs$core$array_QMARK_(x){
+if((cljs.core._STAR_target_STAR_ === "nodejs")){
+return Array.isArray(x);
+} else {
+return (x instanceof Array);
+}
+});
+/**
+ * Returns true if x is a JavaScript number.
+ */
+cljs.core.number_QMARK_ = (function cljs$core$number_QMARK_(x){
+return typeof x === 'number';
+});
+/**
+ * Returns true if x is logical false, false otherwise.
+ */
+cljs.core.not = (function cljs$core$not(x){
+if((x == null)){
+return true;
+} else {
+if(x === false){
+return true;
+} else {
+return false;
+
+}
+}
+});
+/**
+ * Returns true if x is not nil, false otherwise.
+ */
+cljs.core.some_QMARK_ = (function cljs$core$some_QMARK_(x){
+return (!((x == null)));
+});
+/**
+ * Returns true if x's constructor is Object
+ */
+cljs.core.object_QMARK_ = (function cljs$core$object_QMARK_(x){
+if((!((x == null)))){
+return (x.constructor === Object);
+} else {
+return false;
+}
+});
+/**
+ * Returns true if x is a JavaScript string.
+ */
+cljs.core.string_QMARK_ = (function cljs$core$string_QMARK_(x){
+return goog.isString(x);
+});
+/**
+ * Returns true if x is a JavaScript string of length one.
+ */
+cljs.core.char_QMARK_ = (function cljs$core$char_QMARK_(x){
+return ((typeof x === 'string') && (((1) === x.length)));
+});
+/**
+ * Returns true if given any argument.
+ */
+cljs.core.any_QMARK_ = (function cljs$core$any_QMARK_(x){
+return true;
+});
+/**
+ * Internal - do not use!
+ */
+cljs.core.native_satisfies_QMARK_ = (function cljs$core$native_satisfies_QMARK_(p,x){
+var x__$1 = (((x == null))?null:x);
+if((p[goog.typeOf(x__$1)])){
+return true;
+} else {
+if((p["_"])){
+return true;
+} else {
+return false;
+
+}
+}
+});
+cljs.core.is_proto_ = (function cljs$core$is_proto_(x){
+return (x.constructor.prototype === x);
+});
+/**
+ * When compiled for a command-line target, whatever function
+ * *main-cli-fn* is set to will be called with the command-line
+ * argv as arguments
+ */
+cljs.core._STAR_main_cli_fn_STAR_ = null;
+/**
+ * A sequence of the supplied command line arguments, or nil if
+ * none were supplied
+ */
+cljs.core._STAR_command_line_args_STAR_ = null;
+/**
+ * Return x's constructor.
+ */
+cljs.core.type = (function cljs$core$type(x){
+if((x == null)){
+return null;
+} else {
+return x.constructor;
+}
+});
+cljs.core.missing_protocol = (function cljs$core$missing_protocol(proto,obj){
+var ty = cljs.core.type(obj);
+var ty__$1 = (cljs.core.truth_((function (){var and__7791__auto__ = ty;
+if(cljs.core.truth_(and__7791__auto__)){
+return ty.cljs$lang$type;
+} else {
+return and__7791__auto__;
+}
+})())?ty.cljs$lang$ctorStr:goog.typeOf(obj));
+return (new Error(["No protocol method ",proto," defined for type ",ty__$1,": ",obj].join("")));
+});
+cljs.core.type__GT_str = (function cljs$core$type__GT_str(ty){
+var temp__4655__auto__ = ty.cljs$lang$ctorStr;
+if(cljs.core.truth_(temp__4655__auto__)){
+var s = temp__4655__auto__;
+return s;
+} else {
+return cljs.core.str.cljs$core$IFn$_invoke$arity$1(ty);
+}
+});
+cljs.core.load_file = (function cljs$core$load_file(file){
+if(cljs.core.truth_(COMPILED)){
+return null;
+} else {
+return goog.nodeGlobalRequire(file);
+}
+});
+if((((typeof Symbol !== 'undefined')) && ((goog.typeOf(Symbol) === "function")))){
+cljs.core.ITER_SYMBOL = Symbol.iterator;
+} else {
+cljs.core.ITER_SYMBOL = "@@iterator";
+}
+/**
+ * @enum {string}
+ */
+cljs.core.CHAR_MAP = ({"]": "_RBRACK_", "'": "_SINGLEQUOTE_", "=": "_EQ_", "\"": "_DOUBLEQUOTE_", "!": "_BANG_", "*": "_STAR_", "%": "_PERCENT_", "|": "_BAR_", "~": "_TILDE_", "/": "_SLASH_", "\\": "_BSLASH_", "-": "_", "?": "_QMARK_", "&": "_AMPERSAND_", ":": "_COLON_", "<": "_LT_", "{": "_LBRACE_", "}": "_RBRACE_", "[": "_LBRACK_", "#": "_SHARP_", "^": "_CARET_", "+": "_PLUS_", "@": "_CIRCA_", ">": "_GT_"});
+/**
+ * @enum {string}
+ */
+cljs.core.DEMUNGE_MAP = ({"_RBRACE_": "}", "_COLON_": ":", "_BANG_": "!", "_QMARK_": "?", "_BSLASH_": "\\\\", "_SLASH_": "/", "_PERCENT_": "%", "_PLUS_": "+", "_SHARP_": "#", "_LBRACE_": "{", "_BAR_": "|", "_LBRACK_": "[", "_EQ_": "=", "_": "-", "_TILDE_": "~", "_RBRACK_": "]", "_GT_": ">", "_SINGLEQUOTE_": "'", "_CIRCA_": "@", "_AMPERSAND_": "&", "_DOUBLEQUOTE_": "\\\"", "_CARET_": "^", "_LT_": "<", "_STAR_": "*"});
+cljs.core.DEMUNGE_PATTERN = null;
+/**
+ * Returns highest resolution time offered by host in milliseconds.
+ */
+cljs.core.system_time = (function cljs$core$system_time(){
+if((((typeof performance !== 'undefined')) && ((!((performance.now == null)))))){
+return performance.now();
+} else {
+if((((typeof process !== 'undefined')) && ((!((process.hrtime == null)))))){
+var t = process.hrtime();
+return ((((t[(0)]) * 1.0E9) + (t[(1)])) / 1000000.0);
+} else {
+return (new Date()).getTime();
+
+}
+}
+});
+/**
+ * Construct a JavaScript array of the specified dimensions. Accepts ignored
+ * type argument for compatibility with Clojure. Note that there is no efficient
+ * way to allocate multi-dimensional arrays in JavaScript; as such, this function
+ * will run in polynomial time when called with 3 or more arguments.
+ */
+cljs.core.make_array = (function cljs$core$make_array(var_args){
+var G__10030 = arguments.length;
+switch (G__10030) {
+case 1:
+return cljs.core.make_array.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.make_array.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10032 = arguments.length;
+var i__9001__auto___10033 = (0);
+while(true){
+if((i__9001__auto___10033 < len__9000__auto___10032)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10033]));
+
+var G__10034 = (i__9001__auto___10033 + (1));
+i__9001__auto___10033 = G__10034;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.make_array.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.make_array.cljs$core$IFn$_invoke$arity$1 = (function (size){
+return (new Array(size));
+});
+
+cljs.core.make_array.cljs$core$IFn$_invoke$arity$2 = (function (type,size){
+return (new Array(size));
+});
+
+cljs.core.make_array.cljs$core$IFn$_invoke$arity$variadic = (function (type,size,more_sizes){
+var dims = more_sizes;
+var dimarray = (new Array(size));
+var n__8769__auto___10035 = dimarray.length;
+var i_10036 = (0);
+while(true){
+if((i_10036 < n__8769__auto___10035)){
+(dimarray[i_10036] = cljs.core.apply.cljs$core$IFn$_invoke$arity$3(cljs.core.make_array,null,dims));
+
+var G__10037 = (i_10036 + (1));
+i_10036 = G__10037;
+continue;
+} else {
+}
+break;
+}
+
+return dimarray;
+});
+
+/** @this {Function} */
+cljs.core.make_array.cljs$lang$applyTo = (function (seq10027){
+var G__10028 = cljs.core.first(seq10027);
+var seq10027__$1 = cljs.core.next(seq10027);
+var G__10029 = cljs.core.first(seq10027__$1);
+var seq10027__$2 = cljs.core.next(seq10027__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10028,G__10029,seq10027__$2);
+});
+
+cljs.core.make_array.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns a javascript array, cloned from the passed in array
+ */
+cljs.core.aclone = (function cljs$core$aclone(arr){
+var len = arr.length;
+var new_arr = (new Array(len));
+var n__8769__auto___10038 = len;
+var i_10039 = (0);
+while(true){
+if((i_10039 < n__8769__auto___10038)){
+(new_arr[i_10039] = (arr[i_10039]));
+
+var G__10040 = (i_10039 + (1));
+i_10039 = G__10040;
+continue;
+} else {
+}
+break;
+}
+
+return new_arr;
+});
+/**
+ * Creates a new javascript array.
+ * @param {...*} var_args
+ */
+cljs.core.array = (function cljs$core$array(var_args){
+var a = (new Array(arguments.length));
+var i = (0);
+while(true){
+if((i < a.length)){
+(a[i] = (arguments[i]));
+
+var G__10041 = (i + (1));
+i = G__10041;
+continue;
+} else {
+return a;
+}
+break;
+}
+});
+cljs.core.maybe_warn = (function cljs$core$maybe_warn(e){
+if(cljs.core.truth_(cljs.core._STAR_print_err_fn_STAR_)){
+return (cljs.core._STAR_print_err_fn_STAR_.cljs$core$IFn$_invoke$arity$1 ? cljs.core._STAR_print_err_fn_STAR_.cljs$core$IFn$_invoke$arity$1(e) : cljs.core._STAR_print_err_fn_STAR_.call(null,e));
+} else {
+return null;
+}
+});
+cljs.core.checked_aget = (function cljs$core$checked_aget(var_args){
+var G__10046 = arguments.length;
+switch (G__10046) {
+case 2:
+return cljs.core.checked_aget.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10049 = arguments.length;
+var i__9001__auto___10050 = (0);
+while(true){
+if((i__9001__auto___10050 < len__9000__auto___10049)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10050]));
+
+var G__10051 = (i__9001__auto___10050 + (1));
+i__9001__auto___10050 = G__10051;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.checked_aget.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.checked_aget.cljs$core$IFn$_invoke$arity$2 = (function (array,idx){
+try{if(cljs.core.truth_((function (){var or__7806__auto__ = cljs.core.array_QMARK_(array);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return goog.isArrayLike(array);
+}
+})())){
+} else {
+throw (new Error("Assert failed: (or (array? array) (goog/isArrayLike array))"));
+}
+
+if(typeof idx === 'number'){
+} else {
+throw (new Error("Assert failed: (number? idx)"));
+}
+
+if((!((idx < (0))))){
+} else {
+throw (new Error("Assert failed: (not (neg? idx))"));
+}
+
+if((idx < array.length)){
+} else {
+throw (new Error("Assert failed: (< idx (alength array))"));
+}
+}catch (e10047){var e_10052 = e10047;
+cljs.core.maybe_warn(e_10052);
+}
+return (array[idx]);
+});
+
+cljs.core.checked_aget.cljs$core$IFn$_invoke$arity$variadic = (function (array,idx,idxs){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(cljs.core.checked_aget,cljs.core.checked_aget.cljs$core$IFn$_invoke$arity$2(array,idx),idxs);
+});
+
+/** @this {Function} */
+cljs.core.checked_aget.cljs$lang$applyTo = (function (seq10043){
+var G__10044 = cljs.core.first(seq10043);
+var seq10043__$1 = cljs.core.next(seq10043);
+var G__10045 = cljs.core.first(seq10043__$1);
+var seq10043__$2 = cljs.core.next(seq10043__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10044,G__10045,seq10043__$2);
+});
+
+cljs.core.checked_aget.cljs$lang$maxFixedArity = (2);
+
+cljs.core.checked_aset = (function cljs$core$checked_aset(var_args){
+var G__10058 = arguments.length;
+switch (G__10058) {
+case 3:
+return cljs.core.checked_aset.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10061 = arguments.length;
+var i__9001__auto___10062 = (0);
+while(true){
+if((i__9001__auto___10062 < len__9000__auto___10061)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10062]));
+
+var G__10063 = (i__9001__auto___10062 + (1));
+i__9001__auto___10062 = G__10063;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.checked_aset.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.checked_aset.cljs$core$IFn$_invoke$arity$3 = (function (array,idx,val){
+try{if(cljs.core.truth_((function (){var or__7806__auto__ = cljs.core.array_QMARK_(array);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return goog.isArrayLike(array);
+}
+})())){
+} else {
+throw (new Error("Assert failed: (or (array? array) (goog/isArrayLike array))"));
+}
+
+if(typeof idx === 'number'){
+} else {
+throw (new Error("Assert failed: (number? idx)"));
+}
+
+if((!((idx < (0))))){
+} else {
+throw (new Error("Assert failed: (not (neg? idx))"));
+}
+
+if((idx < array.length)){
+} else {
+throw (new Error("Assert failed: (< idx (alength array))"));
+}
+}catch (e10059){var e_10064 = e10059;
+cljs.core.maybe_warn(e_10064);
+}
+return (array[idx] = val);
+});
+
+cljs.core.checked_aset.cljs$core$IFn$_invoke$arity$variadic = (function (array,idx,idx2,idxv){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$4(cljs.core.checked_aset,cljs.core.checked_aget.cljs$core$IFn$_invoke$arity$2(array,idx),idx2,idxv);
+});
+
+/** @this {Function} */
+cljs.core.checked_aset.cljs$lang$applyTo = (function (seq10054){
+var G__10055 = cljs.core.first(seq10054);
+var seq10054__$1 = cljs.core.next(seq10054);
+var G__10056 = cljs.core.first(seq10054__$1);
+var seq10054__$2 = cljs.core.next(seq10054__$1);
+var G__10057 = cljs.core.first(seq10054__$2);
+var seq10054__$3 = cljs.core.next(seq10054__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10055,G__10056,G__10057,seq10054__$3);
+});
+
+cljs.core.checked_aset.cljs$lang$maxFixedArity = (3);
+
+cljs.core.checked_aget_SINGLEQUOTE_ = (function cljs$core$checked_aget_SINGLEQUOTE_(var_args){
+var G__10069 = arguments.length;
+switch (G__10069) {
+case 2:
+return cljs.core.checked_aget_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10071 = arguments.length;
+var i__9001__auto___10072 = (0);
+while(true){
+if((i__9001__auto___10072 < len__9000__auto___10071)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10072]));
+
+var G__10073 = (i__9001__auto___10072 + (1));
+i__9001__auto___10072 = G__10073;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.checked_aget_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.checked_aget_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$2 = (function (array,idx){
+if(cljs.core.truth_((function (){var or__7806__auto__ = cljs.core.array_QMARK_(array);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return goog.isArrayLike(array);
+}
+})())){
+} else {
+throw (new Error("Assert failed: (or (array? array) (goog/isArrayLike array))"));
+}
+
+if(typeof idx === 'number'){
+} else {
+throw (new Error("Assert failed: (number? idx)"));
+}
+
+if((!((idx < (0))))){
+} else {
+throw (new Error("Assert failed: (not (neg? idx))"));
+}
+
+if((idx < array.length)){
+} else {
+throw (new Error("Assert failed: (< idx (alength array))"));
+}
+
+return (array[idx]);
+});
+
+cljs.core.checked_aget_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$variadic = (function (array,idx,idxs){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(cljs.core.checked_aget_SINGLEQUOTE_,cljs.core.checked_aget_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$2(array,idx),idxs);
+});
+
+/** @this {Function} */
+cljs.core.checked_aget_SINGLEQUOTE_.cljs$lang$applyTo = (function (seq10066){
+var G__10067 = cljs.core.first(seq10066);
+var seq10066__$1 = cljs.core.next(seq10066);
+var G__10068 = cljs.core.first(seq10066__$1);
+var seq10066__$2 = cljs.core.next(seq10066__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10067,G__10068,seq10066__$2);
+});
+
+cljs.core.checked_aget_SINGLEQUOTE_.cljs$lang$maxFixedArity = (2);
+
+cljs.core.checked_aset_SINGLEQUOTE_ = (function cljs$core$checked_aset_SINGLEQUOTE_(var_args){
+var G__10079 = arguments.length;
+switch (G__10079) {
+case 3:
+return cljs.core.checked_aset_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10081 = arguments.length;
+var i__9001__auto___10082 = (0);
+while(true){
+if((i__9001__auto___10082 < len__9000__auto___10081)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10082]));
+
+var G__10083 = (i__9001__auto___10082 + (1));
+i__9001__auto___10082 = G__10083;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.checked_aset_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.checked_aset_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$3 = (function (array,idx,val){
+if(cljs.core.truth_((function (){var or__7806__auto__ = cljs.core.array_QMARK_(array);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return goog.isArrayLike(array);
+}
+})())){
+} else {
+throw (new Error("Assert failed: (or (array? array) (goog/isArrayLike array))"));
+}
+
+if(typeof idx === 'number'){
+} else {
+throw (new Error("Assert failed: (number? idx)"));
+}
+
+if((!((idx < (0))))){
+} else {
+throw (new Error("Assert failed: (not (neg? idx))"));
+}
+
+if((idx < array.length)){
+} else {
+throw (new Error("Assert failed: (< idx (alength array))"));
+}
+
+return (array[idx] = val);
+});
+
+cljs.core.checked_aset_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$variadic = (function (array,idx,idx2,idxv){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$4(cljs.core.checked_aset_SINGLEQUOTE_,cljs.core.checked_aget_SINGLEQUOTE_.cljs$core$IFn$_invoke$arity$2(array,idx),idx2,idxv);
+});
+
+/** @this {Function} */
+cljs.core.checked_aset_SINGLEQUOTE_.cljs$lang$applyTo = (function (seq10075){
+var G__10076 = cljs.core.first(seq10075);
+var seq10075__$1 = cljs.core.next(seq10075);
+var G__10077 = cljs.core.first(seq10075__$1);
+var seq10075__$2 = cljs.core.next(seq10075__$1);
+var G__10078 = cljs.core.first(seq10075__$2);
+var seq10075__$3 = cljs.core.next(seq10075__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10076,G__10077,G__10078,seq10075__$3);
+});
+
+cljs.core.checked_aset_SINGLEQUOTE_.cljs$lang$maxFixedArity = (3);
+
+/**
+ * Returns the value at the index/indices. Works on JavaScript arrays.
+ */
+cljs.core.aget = (function cljs$core$aget(var_args){
+var G__10088 = arguments.length;
+switch (G__10088) {
+case 2:
+return cljs.core.aget.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10090 = arguments.length;
+var i__9001__auto___10091 = (0);
+while(true){
+if((i__9001__auto___10091 < len__9000__auto___10090)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10091]));
+
+var G__10092 = (i__9001__auto___10091 + (1));
+i__9001__auto___10091 = G__10092;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.aget.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.aget.cljs$core$IFn$_invoke$arity$2 = (function (array,idx){
+return (array[idx]);
+});
+
+cljs.core.aget.cljs$core$IFn$_invoke$arity$variadic = (function (array,idx,idxs){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(cljs.core.aget,(array[idx]),idxs);
+});
+
+/** @this {Function} */
+cljs.core.aget.cljs$lang$applyTo = (function (seq10085){
+var G__10086 = cljs.core.first(seq10085);
+var seq10085__$1 = cljs.core.next(seq10085);
+var G__10087 = cljs.core.first(seq10085__$1);
+var seq10085__$2 = cljs.core.next(seq10085__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10086,G__10087,seq10085__$2);
+});
+
+cljs.core.aget.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Sets the value at the index/indices. Works on JavaScript arrays.
+ * Returns val.
+ */
+cljs.core.aset = (function cljs$core$aset(var_args){
+var G__10098 = arguments.length;
+switch (G__10098) {
+case 3:
+return cljs.core.aset.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10100 = arguments.length;
+var i__9001__auto___10101 = (0);
+while(true){
+if((i__9001__auto___10101 < len__9000__auto___10100)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10101]));
+
+var G__10102 = (i__9001__auto___10101 + (1));
+i__9001__auto___10101 = G__10102;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.aset.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.aset.cljs$core$IFn$_invoke$arity$3 = (function (array,idx,val){
+return (array[idx] = val);
+});
+
+cljs.core.aset.cljs$core$IFn$_invoke$arity$variadic = (function (array,idx,idx2,idxv){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$4(cljs.core.aset,(array[idx]),idx2,idxv);
+});
+
+/** @this {Function} */
+cljs.core.aset.cljs$lang$applyTo = (function (seq10094){
+var G__10095 = cljs.core.first(seq10094);
+var seq10094__$1 = cljs.core.next(seq10094);
+var G__10096 = cljs.core.first(seq10094__$1);
+var seq10094__$2 = cljs.core.next(seq10094__$1);
+var G__10097 = cljs.core.first(seq10094__$2);
+var seq10094__$3 = cljs.core.next(seq10094__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10095,G__10096,G__10097,seq10094__$3);
+});
+
+cljs.core.aset.cljs$lang$maxFixedArity = (3);
+
+/**
+ * Returns the length of the array. Works on arrays of all types.
+ */
+cljs.core.alength = (function cljs$core$alength(array){
+return array.length;
+});
+/**
+ * Returns an array with components set to the values in aseq. Optional type
+ * argument accepted for compatibility with Clojure.
+ */
+cljs.core.into_array = (function cljs$core$into_array(var_args){
+var G__10104 = arguments.length;
+switch (G__10104) {
+case 1:
+return cljs.core.into_array.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.into_array.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.into_array.cljs$core$IFn$_invoke$arity$1 = (function (aseq){
+return cljs.core.into_array.cljs$core$IFn$_invoke$arity$2(null,aseq);
+});
+
+cljs.core.into_array.cljs$core$IFn$_invoke$arity$2 = (function (type,aseq){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (a,x){
+a.push(x);
+
+return a;
+}),[],aseq);
+});
+
+cljs.core.into_array.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Invoke JavaScript object method via string. Needed when the
+ * string is not a valid unquoted property name.
+ */
+cljs.core.js_invoke = (function cljs$core$js_invoke(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___10109 = arguments.length;
+var i__9001__auto___10110 = (0);
+while(true){
+if((i__9001__auto___10110 < len__9000__auto___10109)){
+args__9010__auto__.push((arguments[i__9001__auto___10110]));
+
+var G__10111 = (i__9001__auto___10110 + (1));
+i__9001__auto___10110 = G__10111;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((2) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((2)),(0),null)):null);
+return cljs.core.js_invoke.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9011__auto__);
+});
+
+cljs.core.js_invoke.cljs$core$IFn$_invoke$arity$variadic = (function (obj,s,args){
+return (obj[s]).apply(obj,cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(args));
+});
+
+cljs.core.js_invoke.cljs$lang$maxFixedArity = (2);
+
+/** @this {Function} */
+cljs.core.js_invoke.cljs$lang$applyTo = (function (seq10106){
+var G__10107 = cljs.core.first(seq10106);
+var seq10106__$1 = cljs.core.next(seq10106);
+var G__10108 = cljs.core.first(seq10106__$1);
+var seq10106__$2 = cljs.core.next(seq10106__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10107,G__10108,seq10106__$2);
+});
+
+
+/**
+ * Marker protocol
+ * @interface
+ */
+cljs.core.Fn = function(){};
+
+
+/**
+ * Protocol for adding the ability to invoke an object as a function.
+ * For example, a vector can also be used to look up a value:
+ * ([1 2 3 4] 1) => 2
+ * @interface
+ */
+cljs.core.IFn = function(){};
+
+cljs.core._invoke = (function cljs$core$_invoke(var_args){
+var G__10113 = arguments.length;
+switch (G__10113) {
+case 1:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 5:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+case 6:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$6((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]));
+
+break;
+case 7:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$7((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]));
+
+break;
+case 8:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$8((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]));
+
+break;
+case 9:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$9((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]));
+
+break;
+case 10:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$10((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]));
+
+break;
+case 11:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$11((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]));
+
+break;
+case 12:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$12((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]));
+
+break;
+case 13:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$13((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]));
+
+break;
+case 14:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$14((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]),(arguments[(13)]));
+
+break;
+case 15:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$15((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]),(arguments[(13)]),(arguments[(14)]));
+
+break;
+case 16:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$16((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]),(arguments[(13)]),(arguments[(14)]),(arguments[(15)]));
+
+break;
+case 17:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$17((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]),(arguments[(13)]),(arguments[(14)]),(arguments[(15)]),(arguments[(16)]));
+
+break;
+case 18:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$18((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]),(arguments[(13)]),(arguments[(14)]),(arguments[(15)]),(arguments[(16)]),(arguments[(17)]));
+
+break;
+case 19:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$19((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]),(arguments[(13)]),(arguments[(14)]),(arguments[(15)]),(arguments[(16)]),(arguments[(17)]),(arguments[(18)]));
+
+break;
+case 20:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$20((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]),(arguments[(13)]),(arguments[(14)]),(arguments[(15)]),(arguments[(16)]),(arguments[(17)]),(arguments[(18)]),(arguments[(19)]));
+
+break;
+case 21:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$21((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]),(arguments[(13)]),(arguments[(14)]),(arguments[(15)]),(arguments[(16)]),(arguments[(17)]),(arguments[(18)]),(arguments[(19)]),(arguments[(20)]));
+
+break;
+case 22:
+return cljs.core._invoke.cljs$core$IFn$_invoke$arity$22((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]),(arguments[(7)]),(arguments[(8)]),(arguments[(9)]),(arguments[(10)]),(arguments[(11)]),(arguments[(12)]),(arguments[(13)]),(arguments[(14)]),(arguments[(15)]),(arguments[(16)]),(arguments[(17)]),(arguments[(18)]),(arguments[(19)]),(arguments[(20)]),(arguments[(21)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$1 = (function (this$){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$1 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$1(this$);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(this$) : m__8503__auto__.call(null,this$));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(this$) : m__8503__auto____$1.call(null,this$));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$2 = (function (this$,a){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$2 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$2(this$,a);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(this$,a) : m__8503__auto__.call(null,this$,a));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(this$,a) : m__8503__auto____$1.call(null,this$,a));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$3 = (function (this$,a,b){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$3 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$3(this$,a,b);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(this$,a,b) : m__8503__auto__.call(null,this$,a,b));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(this$,a,b) : m__8503__auto____$1.call(null,this$,a,b));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$4 = (function (this$,a,b,c){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$4 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$4(this$,a,b,c);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$4 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$4(this$,a,b,c) : m__8503__auto__.call(null,this$,a,b,c));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$4 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$4(this$,a,b,c) : m__8503__auto____$1.call(null,this$,a,b,c));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$5 = (function (this$,a,b,c,d){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$5 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$5(this$,a,b,c,d);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$5 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$5(this$,a,b,c,d) : m__8503__auto__.call(null,this$,a,b,c,d));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$5 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$5(this$,a,b,c,d) : m__8503__auto____$1.call(null,this$,a,b,c,d));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$6 = (function (this$,a,b,c,d,e){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$6 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$6(this$,a,b,c,d,e);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$6 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$6(this$,a,b,c,d,e) : m__8503__auto__.call(null,this$,a,b,c,d,e));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$6 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$6(this$,a,b,c,d,e) : m__8503__auto____$1.call(null,this$,a,b,c,d,e));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$7 = (function (this$,a,b,c,d,e,f){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$7 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$7(this$,a,b,c,d,e,f);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$7 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$7(this$,a,b,c,d,e,f) : m__8503__auto__.call(null,this$,a,b,c,d,e,f));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$7 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$7(this$,a,b,c,d,e,f) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$8 = (function (this$,a,b,c,d,e,f,g){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$8 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$8(this$,a,b,c,d,e,f,g);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$8 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$8(this$,a,b,c,d,e,f,g) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$8 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$8(this$,a,b,c,d,e,f,g) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$9 = (function (this$,a,b,c,d,e,f,g,h){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$9 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$9(this$,a,b,c,d,e,f,g,h);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$9 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$9(this$,a,b,c,d,e,f,g,h) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$9 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$9(this$,a,b,c,d,e,f,g,h) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$10 = (function (this$,a,b,c,d,e,f,g,h,i){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$10 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$10(this$,a,b,c,d,e,f,g,h,i);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$10 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$10(this$,a,b,c,d,e,f,g,h,i) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$10 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$10(this$,a,b,c,d,e,f,g,h,i) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$11 = (function (this$,a,b,c,d,e,f,g,h,i,j){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$11 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$11(this$,a,b,c,d,e,f,g,h,i,j);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$11 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$11(this$,a,b,c,d,e,f,g,h,i,j) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$11 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$11(this$,a,b,c,d,e,f,g,h,i,j) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$12 = (function (this$,a,b,c,d,e,f,g,h,i,j,k){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$12 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$12(this$,a,b,c,d,e,f,g,h,i,j,k);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$12 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$12(this$,a,b,c,d,e,f,g,h,i,j,k) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$12 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$12(this$,a,b,c,d,e,f,g,h,i,j,k) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$13 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$13 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$13(this$,a,b,c,d,e,f,g,h,i,j,k,l);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$13 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$13(this$,a,b,c,d,e,f,g,h,i,j,k,l) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$13 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$13(this$,a,b,c,d,e,f,g,h,i,j,k,l) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$14 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$14 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$14(this$,a,b,c,d,e,f,g,h,i,j,k,l,m);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$14 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$14(this$,a,b,c,d,e,f,g,h,i,j,k,l,m) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$14 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$14(this$,a,b,c,d,e,f,g,h,i,j,k,l,m) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$15 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$15 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$15(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$15 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$15(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$15 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$15(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$16 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$16 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$16(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$16 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$16(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$16 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$16(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$17 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$17 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$17(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$17 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$17(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$17 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$17(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$18 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$18 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$18(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$18 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$18(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$18 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$18(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$19 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$19 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$19(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$19 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$19(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$19 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$19(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$20 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$20 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$20(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$20 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$20(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$20 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$20(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$21 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$21 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$21(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$21 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$21(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$21 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$21(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$core$IFn$_invoke$arity$22 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IFn$_invoke$arity$22 == null)))))){
+return this$.cljs$core$IFn$_invoke$arity$22(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._invoke[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$22 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$22(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest) : m__8503__auto__.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest));
+} else {
+var m__8503__auto____$1 = (cljs.core._invoke["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$22 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$22(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest) : m__8503__auto____$1.call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest));
+} else {
+throw cljs.core.missing_protocol("IFn.-invoke",this$);
+}
+}
+}
+});
+
+cljs.core._invoke.cljs$lang$maxFixedArity = 22;
+
+
+
+/**
+ * Protocol for cloning a value.
+ * @interface
+ */
+cljs.core.ICloneable = function(){};
+
+/**
+ * Creates a clone of value.
+ */
+cljs.core._clone = (function cljs$core$_clone(value){
+if((((!((value == null)))) && ((!((value.cljs$core$ICloneable$_clone$arity$1 == null)))))){
+return value.cljs$core$ICloneable$_clone$arity$1(value);
+} else {
+var x__8502__auto__ = (((value == null))?null:value);
+var m__8503__auto__ = (cljs.core._clone[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(value) : m__8503__auto__.call(null,value));
+} else {
+var m__8503__auto____$1 = (cljs.core._clone["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(value) : m__8503__auto____$1.call(null,value));
+} else {
+throw cljs.core.missing_protocol("ICloneable.-clone",value);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding the ability to count a collection in constant time.
+ * @interface
+ */
+cljs.core.ICounted = function(){};
+
+/**
+ * Calculates the count of coll in constant time. Used by cljs.core/count.
+ */
+cljs.core._count = (function cljs$core$_count(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$ICounted$_count$arity$1 == null)))))){
+return coll.cljs$core$ICounted$_count$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._count[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._count["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("ICounted.-count",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for creating an empty collection.
+ * @interface
+ */
+cljs.core.IEmptyableCollection = function(){};
+
+/**
+ * Returns an empty collection of the same category as coll. Used
+ * by cljs.core/empty.
+ */
+cljs.core._empty = (function cljs$core$_empty(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IEmptyableCollection$_empty$arity$1 == null)))))){
+return coll.cljs$core$IEmptyableCollection$_empty$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._empty[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._empty["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IEmptyableCollection.-empty",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding to a collection.
+ * @interface
+ */
+cljs.core.ICollection = function(){};
+
+/**
+ * Returns a new collection of coll with o added to it. The new item
+ * should be added to the most efficient place, e.g.
+ * (conj [1 2 3 4] 5) => [1 2 3 4 5]
+ * (conj '(2 3 4 5) 1) => '(1 2 3 4 5)
+ */
+cljs.core._conj = (function cljs$core$_conj(coll,o){
+if((((!((coll == null)))) && ((!((coll.cljs$core$ICollection$_conj$arity$2 == null)))))){
+return coll.cljs$core$ICollection$_conj$arity$2(coll,o);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._conj[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(coll,o) : m__8503__auto__.call(null,coll,o));
+} else {
+var m__8503__auto____$1 = (cljs.core._conj["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(coll,o) : m__8503__auto____$1.call(null,coll,o));
+} else {
+throw cljs.core.missing_protocol("ICollection.-conj",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for collections to provide indexed-based access to their items.
+ * @interface
+ */
+cljs.core.IIndexed = function(){};
+
+/**
+ * Returns the value at the index n in the collection coll.
+ * Returns not-found if index n is out of bounds and not-found is supplied.
+ */
+cljs.core._nth = (function cljs$core$_nth(var_args){
+var G__10116 = arguments.length;
+switch (G__10116) {
+case 2:
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core._nth.cljs$core$IFn$_invoke$arity$2 = (function (coll,n){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IIndexed$_nth$arity$2 == null)))))){
+return coll.cljs$core$IIndexed$_nth$arity$2(coll,n);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._nth[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(coll,n) : m__8503__auto__.call(null,coll,n));
+} else {
+var m__8503__auto____$1 = (cljs.core._nth["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(coll,n) : m__8503__auto____$1.call(null,coll,n));
+} else {
+throw cljs.core.missing_protocol("IIndexed.-nth",coll);
+}
+}
+}
+});
+
+cljs.core._nth.cljs$core$IFn$_invoke$arity$3 = (function (coll,n,not_found){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IIndexed$_nth$arity$3 == null)))))){
+return coll.cljs$core$IIndexed$_nth$arity$3(coll,n,not_found);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._nth[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(coll,n,not_found) : m__8503__auto__.call(null,coll,n,not_found));
+} else {
+var m__8503__auto____$1 = (cljs.core._nth["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(coll,n,not_found) : m__8503__auto____$1.call(null,coll,n,not_found));
+} else {
+throw cljs.core.missing_protocol("IIndexed.-nth",coll);
+}
+}
+}
+});
+
+cljs.core._nth.cljs$lang$maxFixedArity = 3;
+
+
+
+/**
+ * Marker protocol indicating an array sequence.
+ * @interface
+ */
+cljs.core.ASeq = function(){};
+
+
+/**
+ * Protocol for collections to provide access to their items as sequences.
+ * @interface
+ */
+cljs.core.ISeq = function(){};
+
+/**
+ * Returns the first item in the collection coll. Used by cljs.core/first.
+ */
+cljs.core._first = (function cljs$core$_first(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$ISeq$_first$arity$1 == null)))))){
+return coll.cljs$core$ISeq$_first$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._first[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._first["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("ISeq.-first",coll);
+}
+}
+}
+});
+
+/**
+ * Returns a new collection of coll without the first item. It should
+ * always return a seq, e.g.
+ * (rest []) => ()
+ * (rest nil) => ()
+ */
+cljs.core._rest = (function cljs$core$_rest(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$ISeq$_rest$arity$1 == null)))))){
+return coll.cljs$core$ISeq$_rest$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._rest[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._rest["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("ISeq.-rest",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for accessing the next items of a collection.
+ * @interface
+ */
+cljs.core.INext = function(){};
+
+/**
+ * Returns a new collection of coll without the first item. In contrast to
+ * rest, it should return nil if there are no more items, e.g.
+ * (next []) => nil
+ * (next nil) => nil
+ */
+cljs.core._next = (function cljs$core$_next(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$INext$_next$arity$1 == null)))))){
+return coll.cljs$core$INext$_next$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._next[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._next["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("INext.-next",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for looking up a value in a data structure.
+ * @interface
+ */
+cljs.core.ILookup = function(){};
+
+/**
+ * Use k to look up a value in o. If not-found is supplied and k is not
+ * a valid value that can be used for look up, not-found is returned.
+ */
+cljs.core._lookup = (function cljs$core$_lookup(var_args){
+var G__10119 = arguments.length;
+switch (G__10119) {
+case 2:
+return cljs.core._lookup.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core._lookup.cljs$core$IFn$_invoke$arity$2 = (function (o,k){
+if((((!((o == null)))) && ((!((o.cljs$core$ILookup$_lookup$arity$2 == null)))))){
+return o.cljs$core$ILookup$_lookup$arity$2(o,k);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._lookup[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(o,k) : m__8503__auto__.call(null,o,k));
+} else {
+var m__8503__auto____$1 = (cljs.core._lookup["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(o,k) : m__8503__auto____$1.call(null,o,k));
+} else {
+throw cljs.core.missing_protocol("ILookup.-lookup",o);
+}
+}
+}
+});
+
+cljs.core._lookup.cljs$core$IFn$_invoke$arity$3 = (function (o,k,not_found){
+if((((!((o == null)))) && ((!((o.cljs$core$ILookup$_lookup$arity$3 == null)))))){
+return o.cljs$core$ILookup$_lookup$arity$3(o,k,not_found);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._lookup[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(o,k,not_found) : m__8503__auto__.call(null,o,k,not_found));
+} else {
+var m__8503__auto____$1 = (cljs.core._lookup["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(o,k,not_found) : m__8503__auto____$1.call(null,o,k,not_found));
+} else {
+throw cljs.core.missing_protocol("ILookup.-lookup",o);
+}
+}
+}
+});
+
+cljs.core._lookup.cljs$lang$maxFixedArity = 3;
+
+
+
+/**
+ * Protocol for adding associativity to collections.
+ * @interface
+ */
+cljs.core.IAssociative = function(){};
+
+/**
+ * Returns true if k is a key in coll.
+ */
+cljs.core._contains_key_QMARK_ = (function cljs$core$_contains_key_QMARK_(coll,k){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 == null)))))){
+return coll.cljs$core$IAssociative$_contains_key_QMARK_$arity$2(coll,k);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._contains_key_QMARK_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(coll,k) : m__8503__auto__.call(null,coll,k));
+} else {
+var m__8503__auto____$1 = (cljs.core._contains_key_QMARK_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(coll,k) : m__8503__auto____$1.call(null,coll,k));
+} else {
+throw cljs.core.missing_protocol("IAssociative.-contains-key?",coll);
+}
+}
+}
+});
+
+/**
+ * Returns a new collection of coll with a mapping from key k to
+ * value v added to it.
+ */
+cljs.core._assoc = (function cljs$core$_assoc(coll,k,v){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IAssociative$_assoc$arity$3 == null)))))){
+return coll.cljs$core$IAssociative$_assoc$arity$3(coll,k,v);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._assoc[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(coll,k,v) : m__8503__auto__.call(null,coll,k,v));
+} else {
+var m__8503__auto____$1 = (cljs.core._assoc["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(coll,k,v) : m__8503__auto____$1.call(null,coll,k,v));
+} else {
+throw cljs.core.missing_protocol("IAssociative.-assoc",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for implementing entry finding in collections.
+ * @interface
+ */
+cljs.core.IFind = function(){};
+
+/**
+ * Returns the map entry for key, or nil if key not present.
+ */
+cljs.core._find = (function cljs$core$_find(coll,k){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IFind$_find$arity$2 == null)))))){
+return coll.cljs$core$IFind$_find$arity$2(coll,k);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._find[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(coll,k) : m__8503__auto__.call(null,coll,k));
+} else {
+var m__8503__auto____$1 = (cljs.core._find["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(coll,k) : m__8503__auto____$1.call(null,coll,k));
+} else {
+throw cljs.core.missing_protocol("IFind.-find",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding mapping functionality to collections.
+ * @interface
+ */
+cljs.core.IMap = function(){};
+
+/**
+ * Returns a new collection of coll without the mapping for key k.
+ */
+cljs.core._dissoc = (function cljs$core$_dissoc(coll,k){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IMap$_dissoc$arity$2 == null)))))){
+return coll.cljs$core$IMap$_dissoc$arity$2(coll,k);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._dissoc[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(coll,k) : m__8503__auto__.call(null,coll,k));
+} else {
+var m__8503__auto____$1 = (cljs.core._dissoc["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(coll,k) : m__8503__auto____$1.call(null,coll,k));
+} else {
+throw cljs.core.missing_protocol("IMap.-dissoc",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for examining a map entry.
+ * @interface
+ */
+cljs.core.IMapEntry = function(){};
+
+/**
+ * Returns the key of the map entry.
+ */
+cljs.core._key = (function cljs$core$_key(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IMapEntry$_key$arity$1 == null)))))){
+return coll.cljs$core$IMapEntry$_key$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._key[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._key["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IMapEntry.-key",coll);
+}
+}
+}
+});
+
+/**
+ * Returns the value of the map entry.
+ */
+cljs.core._val = (function cljs$core$_val(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IMapEntry$_val$arity$1 == null)))))){
+return coll.cljs$core$IMapEntry$_val$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._val[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._val["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IMapEntry.-val",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding set functionality to a collection.
+ * @interface
+ */
+cljs.core.ISet = function(){};
+
+/**
+ * Returns a new collection of coll that does not contain v.
+ */
+cljs.core._disjoin = (function cljs$core$_disjoin(coll,v){
+if((((!((coll == null)))) && ((!((coll.cljs$core$ISet$_disjoin$arity$2 == null)))))){
+return coll.cljs$core$ISet$_disjoin$arity$2(coll,v);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._disjoin[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(coll,v) : m__8503__auto__.call(null,coll,v));
+} else {
+var m__8503__auto____$1 = (cljs.core._disjoin["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(coll,v) : m__8503__auto____$1.call(null,coll,v));
+} else {
+throw cljs.core.missing_protocol("ISet.-disjoin",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for collections to provide access to their items as stacks. The top
+ * of the stack should be accessed in the most efficient way for the different
+ * data structures.
+ * @interface
+ */
+cljs.core.IStack = function(){};
+
+/**
+ * Returns the item from the top of the stack. Is used by cljs.core/peek.
+ */
+cljs.core._peek = (function cljs$core$_peek(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IStack$_peek$arity$1 == null)))))){
+return coll.cljs$core$IStack$_peek$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._peek[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._peek["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IStack.-peek",coll);
+}
+}
+}
+});
+
+/**
+ * Returns a new stack without the item on top of the stack. Is used
+ * by cljs.core/pop.
+ */
+cljs.core._pop = (function cljs$core$_pop(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IStack$_pop$arity$1 == null)))))){
+return coll.cljs$core$IStack$_pop$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._pop[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._pop["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IStack.-pop",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding vector functionality to collections.
+ * @interface
+ */
+cljs.core.IVector = function(){};
+
+/**
+ * Returns a new vector with value val added at position n.
+ */
+cljs.core._assoc_n = (function cljs$core$_assoc_n(coll,n,val){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IVector$_assoc_n$arity$3 == null)))))){
+return coll.cljs$core$IVector$_assoc_n$arity$3(coll,n,val);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._assoc_n[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(coll,n,val) : m__8503__auto__.call(null,coll,n,val));
+} else {
+var m__8503__auto____$1 = (cljs.core._assoc_n["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(coll,n,val) : m__8503__auto____$1.call(null,coll,n,val));
+} else {
+throw cljs.core.missing_protocol("IVector.-assoc-n",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding dereference functionality to a reference.
+ * @interface
+ */
+cljs.core.IDeref = function(){};
+
+/**
+ * Returns the value of the reference o.
+ */
+cljs.core._deref = (function cljs$core$_deref(o){
+if((((!((o == null)))) && ((!((o.cljs$core$IDeref$_deref$arity$1 == null)))))){
+return o.cljs$core$IDeref$_deref$arity$1(o);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._deref[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(o) : m__8503__auto__.call(null,o));
+} else {
+var m__8503__auto____$1 = (cljs.core._deref["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(o) : m__8503__auto____$1.call(null,o));
+} else {
+throw cljs.core.missing_protocol("IDeref.-deref",o);
+}
+}
+}
+});
+
+
+/**
+ * @interface
+ */
+cljs.core.IDerefWithTimeout = function(){};
+
+cljs.core._deref_with_timeout = (function cljs$core$_deref_with_timeout(o,msec,timeout_val){
+if((((!((o == null)))) && ((!((o.cljs$core$IDerefWithTimeout$_deref_with_timeout$arity$3 == null)))))){
+return o.cljs$core$IDerefWithTimeout$_deref_with_timeout$arity$3(o,msec,timeout_val);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._deref_with_timeout[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(o,msec,timeout_val) : m__8503__auto__.call(null,o,msec,timeout_val));
+} else {
+var m__8503__auto____$1 = (cljs.core._deref_with_timeout["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(o,msec,timeout_val) : m__8503__auto____$1.call(null,o,msec,timeout_val));
+} else {
+throw cljs.core.missing_protocol("IDerefWithTimeout.-deref-with-timeout",o);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for accessing the metadata of an object.
+ * @interface
+ */
+cljs.core.IMeta = function(){};
+
+/**
+ * Returns the metadata of object o.
+ */
+cljs.core._meta = (function cljs$core$_meta(o){
+if((((!((o == null)))) && ((!((o.cljs$core$IMeta$_meta$arity$1 == null)))))){
+return o.cljs$core$IMeta$_meta$arity$1(o);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._meta[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(o) : m__8503__auto__.call(null,o));
+} else {
+var m__8503__auto____$1 = (cljs.core._meta["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(o) : m__8503__auto____$1.call(null,o));
+} else {
+throw cljs.core.missing_protocol("IMeta.-meta",o);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding metadata to an object.
+ * @interface
+ */
+cljs.core.IWithMeta = function(){};
+
+/**
+ * Returns a new object with value of o and metadata meta added to it.
+ */
+cljs.core._with_meta = (function cljs$core$_with_meta(o,meta){
+if((((!((o == null)))) && ((!((o.cljs$core$IWithMeta$_with_meta$arity$2 == null)))))){
+return o.cljs$core$IWithMeta$_with_meta$arity$2(o,meta);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._with_meta[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(o,meta) : m__8503__auto__.call(null,o,meta));
+} else {
+var m__8503__auto____$1 = (cljs.core._with_meta["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(o,meta) : m__8503__auto____$1.call(null,o,meta));
+} else {
+throw cljs.core.missing_protocol("IWithMeta.-with-meta",o);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for seq types that can reduce themselves.
+ * Called by cljs.core/reduce.
+ * @interface
+ */
+cljs.core.IReduce = function(){};
+
+/**
+ * f should be a function of 2 arguments. If start is not supplied,
+ * returns the result of applying f to the first 2 items in coll, then
+ * applying f to that result and the 3rd item, etc.
+ */
+cljs.core._reduce = (function cljs$core$_reduce(var_args){
+var G__10122 = arguments.length;
+switch (G__10122) {
+case 2:
+return cljs.core._reduce.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core._reduce.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core._reduce.cljs$core$IFn$_invoke$arity$2 = (function (coll,f){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IReduce$_reduce$arity$2 == null)))))){
+return coll.cljs$core$IReduce$_reduce$arity$2(coll,f);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._reduce[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(coll,f) : m__8503__auto__.call(null,coll,f));
+} else {
+var m__8503__auto____$1 = (cljs.core._reduce["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(coll,f) : m__8503__auto____$1.call(null,coll,f));
+} else {
+throw cljs.core.missing_protocol("IReduce.-reduce",coll);
+}
+}
+}
+});
+
+cljs.core._reduce.cljs$core$IFn$_invoke$arity$3 = (function (coll,f,start){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IReduce$_reduce$arity$3 == null)))))){
+return coll.cljs$core$IReduce$_reduce$arity$3(coll,f,start);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._reduce[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(coll,f,start) : m__8503__auto__.call(null,coll,f,start));
+} else {
+var m__8503__auto____$1 = (cljs.core._reduce["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(coll,f,start) : m__8503__auto____$1.call(null,coll,f,start));
+} else {
+throw cljs.core.missing_protocol("IReduce.-reduce",coll);
+}
+}
+}
+});
+
+cljs.core._reduce.cljs$lang$maxFixedArity = 3;
+
+
+
+/**
+ * Protocol for associative types that can reduce themselves
+ * via a function of key and val. Called by cljs.core/reduce-kv.
+ * @interface
+ */
+cljs.core.IKVReduce = function(){};
+
+/**
+ * Reduces an associative collection and returns the result. f should be
+ * a function that takes three arguments.
+ */
+cljs.core._kv_reduce = (function cljs$core$_kv_reduce(coll,f,init){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IKVReduce$_kv_reduce$arity$3 == null)))))){
+return coll.cljs$core$IKVReduce$_kv_reduce$arity$3(coll,f,init);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._kv_reduce[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(coll,f,init) : m__8503__auto__.call(null,coll,f,init));
+} else {
+var m__8503__auto____$1 = (cljs.core._kv_reduce["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(coll,f,init) : m__8503__auto____$1.call(null,coll,f,init));
+} else {
+throw cljs.core.missing_protocol("IKVReduce.-kv-reduce",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding value comparison functionality to a type.
+ * @interface
+ */
+cljs.core.IEquiv = function(){};
+
+/**
+ * Returns true if o and other are equal, false otherwise.
+ */
+cljs.core._equiv = (function cljs$core$_equiv(o,other){
+if((((!((o == null)))) && ((!((o.cljs$core$IEquiv$_equiv$arity$2 == null)))))){
+return o.cljs$core$IEquiv$_equiv$arity$2(o,other);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._equiv[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(o,other) : m__8503__auto__.call(null,o,other));
+} else {
+var m__8503__auto____$1 = (cljs.core._equiv["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(o,other) : m__8503__auto____$1.call(null,o,other));
+} else {
+throw cljs.core.missing_protocol("IEquiv.-equiv",o);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding hashing functionality to a type.
+ * @interface
+ */
+cljs.core.IHash = function(){};
+
+/**
+ * Returns the hash code of o.
+ */
+cljs.core._hash = (function cljs$core$_hash(o){
+if((((!((o == null)))) && ((!((o.cljs$core$IHash$_hash$arity$1 == null)))))){
+return o.cljs$core$IHash$_hash$arity$1(o);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._hash[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(o) : m__8503__auto__.call(null,o));
+} else {
+var m__8503__auto____$1 = (cljs.core._hash["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(o) : m__8503__auto____$1.call(null,o));
+} else {
+throw cljs.core.missing_protocol("IHash.-hash",o);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding the ability to a type to be transformed into a sequence.
+ * @interface
+ */
+cljs.core.ISeqable = function(){};
+
+/**
+ * Returns a seq of o, or nil if o is empty.
+ */
+cljs.core._seq = (function cljs$core$_seq(o){
+if((((!((o == null)))) && ((!((o.cljs$core$ISeqable$_seq$arity$1 == null)))))){
+return o.cljs$core$ISeqable$_seq$arity$1(o);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._seq[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(o) : m__8503__auto__.call(null,o));
+} else {
+var m__8503__auto____$1 = (cljs.core._seq["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(o) : m__8503__auto____$1.call(null,o));
+} else {
+throw cljs.core.missing_protocol("ISeqable.-seq",o);
+}
+}
+}
+});
+
+
+/**
+ * Marker interface indicating a persistent collection of sequential items
+ * @interface
+ */
+cljs.core.ISequential = function(){};
+
+
+/**
+ * Marker interface indicating a persistent list
+ * @interface
+ */
+cljs.core.IList = function(){};
+
+
+/**
+ * Marker interface indicating a record object
+ * @interface
+ */
+cljs.core.IRecord = function(){};
+
+
+/**
+ * Protocol for reversing a seq.
+ * @interface
+ */
+cljs.core.IReversible = function(){};
+
+/**
+ * Returns a seq of the items in coll in reversed order.
+ */
+cljs.core._rseq = (function cljs$core$_rseq(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IReversible$_rseq$arity$1 == null)))))){
+return coll.cljs$core$IReversible$_rseq$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._rseq[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._rseq["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IReversible.-rseq",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for a collection which can represent their items
+ * in a sorted manner.
+ * @interface
+ */
+cljs.core.ISorted = function(){};
+
+/**
+ * Returns a sorted seq from coll in either ascending or descending order.
+ */
+cljs.core._sorted_seq = (function cljs$core$_sorted_seq(coll,ascending_QMARK_){
+if((((!((coll == null)))) && ((!((coll.cljs$core$ISorted$_sorted_seq$arity$2 == null)))))){
+return coll.cljs$core$ISorted$_sorted_seq$arity$2(coll,ascending_QMARK_);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._sorted_seq[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(coll,ascending_QMARK_) : m__8503__auto__.call(null,coll,ascending_QMARK_));
+} else {
+var m__8503__auto____$1 = (cljs.core._sorted_seq["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(coll,ascending_QMARK_) : m__8503__auto____$1.call(null,coll,ascending_QMARK_));
+} else {
+throw cljs.core.missing_protocol("ISorted.-sorted-seq",coll);
+}
+}
+}
+});
+
+/**
+ * Returns a sorted seq from coll in either ascending or descending order.
+ * If ascending is true, the result should contain all items which are > or >=
+ * than k. If ascending is false, the result should contain all items which
+ * are < or <= than k, e.g.
+ * (-sorted-seq-from (sorted-set 1 2 3 4 5) 3 true) => (3 4 5)
+ * (-sorted-seq-from (sorted-set 1 2 3 4 5) 3 false) => (3 2 1)
+ */
+cljs.core._sorted_seq_from = (function cljs$core$_sorted_seq_from(coll,k,ascending_QMARK_){
+if((((!((coll == null)))) && ((!((coll.cljs$core$ISorted$_sorted_seq_from$arity$3 == null)))))){
+return coll.cljs$core$ISorted$_sorted_seq_from$arity$3(coll,k,ascending_QMARK_);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._sorted_seq_from[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(coll,k,ascending_QMARK_) : m__8503__auto__.call(null,coll,k,ascending_QMARK_));
+} else {
+var m__8503__auto____$1 = (cljs.core._sorted_seq_from["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(coll,k,ascending_QMARK_) : m__8503__auto____$1.call(null,coll,k,ascending_QMARK_));
+} else {
+throw cljs.core.missing_protocol("ISorted.-sorted-seq-from",coll);
+}
+}
+}
+});
+
+/**
+ * Returns the key for entry.
+ */
+cljs.core._entry_key = (function cljs$core$_entry_key(coll,entry){
+if((((!((coll == null)))) && ((!((coll.cljs$core$ISorted$_entry_key$arity$2 == null)))))){
+return coll.cljs$core$ISorted$_entry_key$arity$2(coll,entry);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._entry_key[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(coll,entry) : m__8503__auto__.call(null,coll,entry));
+} else {
+var m__8503__auto____$1 = (cljs.core._entry_key["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(coll,entry) : m__8503__auto____$1.call(null,coll,entry));
+} else {
+throw cljs.core.missing_protocol("ISorted.-entry-key",coll);
+}
+}
+}
+});
+
+/**
+ * Returns the comparator for coll.
+ */
+cljs.core._comparator = (function cljs$core$_comparator(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$ISorted$_comparator$arity$1 == null)))))){
+return coll.cljs$core$ISorted$_comparator$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._comparator[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._comparator["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("ISorted.-comparator",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for writing. Currently only implemented by StringBufferWriter.
+ * @interface
+ */
+cljs.core.IWriter = function(){};
+
+/**
+ * Writes s with writer and returns the result.
+ */
+cljs.core._write = (function cljs$core$_write(writer,s){
+if((((!((writer == null)))) && ((!((writer.cljs$core$IWriter$_write$arity$2 == null)))))){
+return writer.cljs$core$IWriter$_write$arity$2(writer,s);
+} else {
+var x__8502__auto__ = (((writer == null))?null:writer);
+var m__8503__auto__ = (cljs.core._write[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(writer,s) : m__8503__auto__.call(null,writer,s));
+} else {
+var m__8503__auto____$1 = (cljs.core._write["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(writer,s) : m__8503__auto____$1.call(null,writer,s));
+} else {
+throw cljs.core.missing_protocol("IWriter.-write",writer);
+}
+}
+}
+});
+
+/**
+ * Flush writer.
+ */
+cljs.core._flush = (function cljs$core$_flush(writer){
+if((((!((writer == null)))) && ((!((writer.cljs$core$IWriter$_flush$arity$1 == null)))))){
+return writer.cljs$core$IWriter$_flush$arity$1(writer);
+} else {
+var x__8502__auto__ = (((writer == null))?null:writer);
+var m__8503__auto__ = (cljs.core._flush[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(writer) : m__8503__auto__.call(null,writer));
+} else {
+var m__8503__auto____$1 = (cljs.core._flush["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(writer) : m__8503__auto____$1.call(null,writer));
+} else {
+throw cljs.core.missing_protocol("IWriter.-flush",writer);
+}
+}
+}
+});
+
+
+/**
+ * The old IPrintable protocol's implementation consisted of building a giant
+ * list of strings to concatenate. This involved lots of concat calls,
+ * intermediate vectors, and lazy-seqs, and was very slow in some older JS
+ * engines. IPrintWithWriter implements printing via the IWriter protocol, so it
+ * be implemented efficiently in terms of e.g. a StringBuffer append.
+ * @interface
+ */
+cljs.core.IPrintWithWriter = function(){};
+
+cljs.core._pr_writer = (function cljs$core$_pr_writer(o,writer,opts){
+if((((!((o == null)))) && ((!((o.cljs$core$IPrintWithWriter$_pr_writer$arity$3 == null)))))){
+return o.cljs$core$IPrintWithWriter$_pr_writer$arity$3(o,writer,opts);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._pr_writer[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(o,writer,opts) : m__8503__auto__.call(null,o,writer,opts));
+} else {
+var m__8503__auto____$1 = (cljs.core._pr_writer["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(o,writer,opts) : m__8503__auto____$1.call(null,o,writer,opts));
+} else {
+throw cljs.core.missing_protocol("IPrintWithWriter.-pr-writer",o);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for types which can have a deferred realization. Currently only
+ * implemented by Delay and LazySeq.
+ * @interface
+ */
+cljs.core.IPending = function(){};
+
+/**
+ * Returns true if a value for x has been produced, false otherwise.
+ */
+cljs.core._realized_QMARK_ = (function cljs$core$_realized_QMARK_(x){
+if((((!((x == null)))) && ((!((x.cljs$core$IPending$_realized_QMARK_$arity$1 == null)))))){
+return x.cljs$core$IPending$_realized_QMARK_$arity$1(x);
+} else {
+var x__8502__auto__ = (((x == null))?null:x);
+var m__8503__auto__ = (cljs.core._realized_QMARK_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto__.call(null,x));
+} else {
+var m__8503__auto____$1 = (cljs.core._realized_QMARK_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto____$1.call(null,x));
+} else {
+throw cljs.core.missing_protocol("IPending.-realized?",x);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for types that can be watched. Currently only implemented by Atom.
+ * @interface
+ */
+cljs.core.IWatchable = function(){};
+
+/**
+ * Calls all watchers with this, oldval and newval.
+ */
+cljs.core._notify_watches = (function cljs$core$_notify_watches(this$,oldval,newval){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IWatchable$_notify_watches$arity$3 == null)))))){
+return this$.cljs$core$IWatchable$_notify_watches$arity$3(this$,oldval,newval);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._notify_watches[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(this$,oldval,newval) : m__8503__auto__.call(null,this$,oldval,newval));
+} else {
+var m__8503__auto____$1 = (cljs.core._notify_watches["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(this$,oldval,newval) : m__8503__auto____$1.call(null,this$,oldval,newval));
+} else {
+throw cljs.core.missing_protocol("IWatchable.-notify-watches",this$);
+}
+}
+}
+});
+
+/**
+ * Adds a watcher function f to this. Keys must be unique per reference,
+ * and can be used to remove the watch with -remove-watch.
+ */
+cljs.core._add_watch = (function cljs$core$_add_watch(this$,key,f){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IWatchable$_add_watch$arity$3 == null)))))){
+return this$.cljs$core$IWatchable$_add_watch$arity$3(this$,key,f);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._add_watch[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(this$,key,f) : m__8503__auto__.call(null,this$,key,f));
+} else {
+var m__8503__auto____$1 = (cljs.core._add_watch["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(this$,key,f) : m__8503__auto____$1.call(null,this$,key,f));
+} else {
+throw cljs.core.missing_protocol("IWatchable.-add-watch",this$);
+}
+}
+}
+});
+
+/**
+ * Removes watcher that corresponds to key from this.
+ */
+cljs.core._remove_watch = (function cljs$core$_remove_watch(this$,key){
+if((((!((this$ == null)))) && ((!((this$.cljs$core$IWatchable$_remove_watch$arity$2 == null)))))){
+return this$.cljs$core$IWatchable$_remove_watch$arity$2(this$,key);
+} else {
+var x__8502__auto__ = (((this$ == null))?null:this$);
+var m__8503__auto__ = (cljs.core._remove_watch[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(this$,key) : m__8503__auto__.call(null,this$,key));
+} else {
+var m__8503__auto____$1 = (cljs.core._remove_watch["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(this$,key) : m__8503__auto____$1.call(null,this$,key));
+} else {
+throw cljs.core.missing_protocol("IWatchable.-remove-watch",this$);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for collections which can transformed to transients.
+ * @interface
+ */
+cljs.core.IEditableCollection = function(){};
+
+/**
+ * Returns a new, transient version of the collection, in constant time.
+ */
+cljs.core._as_transient = (function cljs$core$_as_transient(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IEditableCollection$_as_transient$arity$1 == null)))))){
+return coll.cljs$core$IEditableCollection$_as_transient$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._as_transient[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._as_transient["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IEditableCollection.-as-transient",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding basic functionality to transient collections.
+ * @interface
+ */
+cljs.core.ITransientCollection = function(){};
+
+/**
+ * Adds value val to tcoll and returns tcoll.
+ */
+cljs.core._conj_BANG_ = (function cljs$core$_conj_BANG_(tcoll,val){
+if((((!((tcoll == null)))) && ((!((tcoll.cljs$core$ITransientCollection$_conj_BANG_$arity$2 == null)))))){
+return tcoll.cljs$core$ITransientCollection$_conj_BANG_$arity$2(tcoll,val);
+} else {
+var x__8502__auto__ = (((tcoll == null))?null:tcoll);
+var m__8503__auto__ = (cljs.core._conj_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(tcoll,val) : m__8503__auto__.call(null,tcoll,val));
+} else {
+var m__8503__auto____$1 = (cljs.core._conj_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(tcoll,val) : m__8503__auto____$1.call(null,tcoll,val));
+} else {
+throw cljs.core.missing_protocol("ITransientCollection.-conj!",tcoll);
+}
+}
+}
+});
+
+/**
+ * Creates a persistent data structure from tcoll and returns it.
+ */
+cljs.core._persistent_BANG_ = (function cljs$core$_persistent_BANG_(tcoll){
+if((((!((tcoll == null)))) && ((!((tcoll.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 == null)))))){
+return tcoll.cljs$core$ITransientCollection$_persistent_BANG_$arity$1(tcoll);
+} else {
+var x__8502__auto__ = (((tcoll == null))?null:tcoll);
+var m__8503__auto__ = (cljs.core._persistent_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(tcoll) : m__8503__auto__.call(null,tcoll));
+} else {
+var m__8503__auto____$1 = (cljs.core._persistent_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(tcoll) : m__8503__auto____$1.call(null,tcoll));
+} else {
+throw cljs.core.missing_protocol("ITransientCollection.-persistent!",tcoll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding associativity to transient collections.
+ * @interface
+ */
+cljs.core.ITransientAssociative = function(){};
+
+/**
+ * Returns a new transient collection of tcoll with a mapping from key to
+ * val added to it.
+ */
+cljs.core._assoc_BANG_ = (function cljs$core$_assoc_BANG_(tcoll,key,val){
+if((((!((tcoll == null)))) && ((!((tcoll.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 == null)))))){
+return tcoll.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(tcoll,key,val);
+} else {
+var x__8502__auto__ = (((tcoll == null))?null:tcoll);
+var m__8503__auto__ = (cljs.core._assoc_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(tcoll,key,val) : m__8503__auto__.call(null,tcoll,key,val));
+} else {
+var m__8503__auto____$1 = (cljs.core._assoc_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(tcoll,key,val) : m__8503__auto____$1.call(null,tcoll,key,val));
+} else {
+throw cljs.core.missing_protocol("ITransientAssociative.-assoc!",tcoll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding mapping functionality to transient collections.
+ * @interface
+ */
+cljs.core.ITransientMap = function(){};
+
+/**
+ * Returns a new transient collection of tcoll without the mapping for key.
+ */
+cljs.core._dissoc_BANG_ = (function cljs$core$_dissoc_BANG_(tcoll,key){
+if((((!((tcoll == null)))) && ((!((tcoll.cljs$core$ITransientMap$_dissoc_BANG_$arity$2 == null)))))){
+return tcoll.cljs$core$ITransientMap$_dissoc_BANG_$arity$2(tcoll,key);
+} else {
+var x__8502__auto__ = (((tcoll == null))?null:tcoll);
+var m__8503__auto__ = (cljs.core._dissoc_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(tcoll,key) : m__8503__auto__.call(null,tcoll,key));
+} else {
+var m__8503__auto____$1 = (cljs.core._dissoc_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(tcoll,key) : m__8503__auto____$1.call(null,tcoll,key));
+} else {
+throw cljs.core.missing_protocol("ITransientMap.-dissoc!",tcoll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding vector functionality to transient collections.
+ * @interface
+ */
+cljs.core.ITransientVector = function(){};
+
+/**
+ * Returns tcoll with value val added at position n.
+ */
+cljs.core._assoc_n_BANG_ = (function cljs$core$_assoc_n_BANG_(tcoll,n,val){
+if((((!((tcoll == null)))) && ((!((tcoll.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3 == null)))))){
+return tcoll.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3(tcoll,n,val);
+} else {
+var x__8502__auto__ = (((tcoll == null))?null:tcoll);
+var m__8503__auto__ = (cljs.core._assoc_n_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(tcoll,n,val) : m__8503__auto__.call(null,tcoll,n,val));
+} else {
+var m__8503__auto____$1 = (cljs.core._assoc_n_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(tcoll,n,val) : m__8503__auto____$1.call(null,tcoll,n,val));
+} else {
+throw cljs.core.missing_protocol("ITransientVector.-assoc-n!",tcoll);
+}
+}
+}
+});
+
+/**
+ * Returns tcoll with the last item removed from it.
+ */
+cljs.core._pop_BANG_ = (function cljs$core$_pop_BANG_(tcoll){
+if((((!((tcoll == null)))) && ((!((tcoll.cljs$core$ITransientVector$_pop_BANG_$arity$1 == null)))))){
+return tcoll.cljs$core$ITransientVector$_pop_BANG_$arity$1(tcoll);
+} else {
+var x__8502__auto__ = (((tcoll == null))?null:tcoll);
+var m__8503__auto__ = (cljs.core._pop_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(tcoll) : m__8503__auto__.call(null,tcoll));
+} else {
+var m__8503__auto____$1 = (cljs.core._pop_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(tcoll) : m__8503__auto____$1.call(null,tcoll));
+} else {
+throw cljs.core.missing_protocol("ITransientVector.-pop!",tcoll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding set functionality to a transient collection.
+ * @interface
+ */
+cljs.core.ITransientSet = function(){};
+
+/**
+ * Returns tcoll without v.
+ */
+cljs.core._disjoin_BANG_ = (function cljs$core$_disjoin_BANG_(tcoll,v){
+if((((!((tcoll == null)))) && ((!((tcoll.cljs$core$ITransientSet$_disjoin_BANG_$arity$2 == null)))))){
+return tcoll.cljs$core$ITransientSet$_disjoin_BANG_$arity$2(tcoll,v);
+} else {
+var x__8502__auto__ = (((tcoll == null))?null:tcoll);
+var m__8503__auto__ = (cljs.core._disjoin_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(tcoll,v) : m__8503__auto__.call(null,tcoll,v));
+} else {
+var m__8503__auto____$1 = (cljs.core._disjoin_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(tcoll,v) : m__8503__auto____$1.call(null,tcoll,v));
+} else {
+throw cljs.core.missing_protocol("ITransientSet.-disjoin!",tcoll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for values that can be compared.
+ * @interface
+ */
+cljs.core.IComparable = function(){};
+
+/**
+ * Returns a negative number, zero, or a positive number when x is logically
+ * 'less than', 'equal to', or 'greater than' y.
+ */
+cljs.core._compare = (function cljs$core$_compare(x,y){
+if((((!((x == null)))) && ((!((x.cljs$core$IComparable$_compare$arity$2 == null)))))){
+return x.cljs$core$IComparable$_compare$arity$2(x,y);
+} else {
+var x__8502__auto__ = (((x == null))?null:x);
+var m__8503__auto__ = (cljs.core._compare[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(x,y) : m__8503__auto__.call(null,x,y));
+} else {
+var m__8503__auto____$1 = (cljs.core._compare["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(x,y) : m__8503__auto____$1.call(null,x,y));
+} else {
+throw cljs.core.missing_protocol("IComparable.-compare",x);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for accessing the items of a chunk.
+ * @interface
+ */
+cljs.core.IChunk = function(){};
+
+/**
+ * Return a new chunk of coll with the first item removed.
+ */
+cljs.core._drop_first = (function cljs$core$_drop_first(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IChunk$_drop_first$arity$1 == null)))))){
+return coll.cljs$core$IChunk$_drop_first$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._drop_first[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._drop_first["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IChunk.-drop-first",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for accessing a collection as sequential chunks.
+ * @interface
+ */
+cljs.core.IChunkedSeq = function(){};
+
+/**
+ * Returns the first chunk in coll.
+ */
+cljs.core._chunked_first = (function cljs$core$_chunked_first(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IChunkedSeq$_chunked_first$arity$1 == null)))))){
+return coll.cljs$core$IChunkedSeq$_chunked_first$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._chunked_first[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._chunked_first["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IChunkedSeq.-chunked-first",coll);
+}
+}
+}
+});
+
+/**
+ * Return a new collection of coll with the first chunk removed.
+ */
+cljs.core._chunked_rest = (function cljs$core$_chunked_rest(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IChunkedSeq$_chunked_rest$arity$1 == null)))))){
+return coll.cljs$core$IChunkedSeq$_chunked_rest$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._chunked_rest[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._chunked_rest["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IChunkedSeq.-chunked-rest",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for accessing the chunks of a collection.
+ * @interface
+ */
+cljs.core.IChunkedNext = function(){};
+
+/**
+ * Returns a new collection of coll without the first chunk.
+ */
+cljs.core._chunked_next = (function cljs$core$_chunked_next(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IChunkedNext$_chunked_next$arity$1 == null)))))){
+return coll.cljs$core$IChunkedNext$_chunked_next$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._chunked_next[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._chunked_next["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IChunkedNext.-chunked-next",coll);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding a name.
+ * @interface
+ */
+cljs.core.INamed = function(){};
+
+/**
+ * Returns the name String of x.
+ */
+cljs.core._name = (function cljs$core$_name(x){
+if((((!((x == null)))) && ((!((x.cljs$core$INamed$_name$arity$1 == null)))))){
+return x.cljs$core$INamed$_name$arity$1(x);
+} else {
+var x__8502__auto__ = (((x == null))?null:x);
+var m__8503__auto__ = (cljs.core._name[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto__.call(null,x));
+} else {
+var m__8503__auto____$1 = (cljs.core._name["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto____$1.call(null,x));
+} else {
+throw cljs.core.missing_protocol("INamed.-name",x);
+}
+}
+}
+});
+
+/**
+ * Returns the namespace String of x.
+ */
+cljs.core._namespace = (function cljs$core$_namespace(x){
+if((((!((x == null)))) && ((!((x.cljs$core$INamed$_namespace$arity$1 == null)))))){
+return x.cljs$core$INamed$_namespace$arity$1(x);
+} else {
+var x__8502__auto__ = (((x == null))?null:x);
+var m__8503__auto__ = (cljs.core._namespace[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto__.call(null,x));
+} else {
+var m__8503__auto____$1 = (cljs.core._namespace["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto____$1.call(null,x));
+} else {
+throw cljs.core.missing_protocol("INamed.-namespace",x);
+}
+}
+}
+});
+
+
+/**
+ * Marker protocol indicating an atom.
+ * @interface
+ */
+cljs.core.IAtom = function(){};
+
+
+/**
+ * Protocol for adding resetting functionality.
+ * @interface
+ */
+cljs.core.IReset = function(){};
+
+/**
+ * Sets the value of o to new-value.
+ */
+cljs.core._reset_BANG_ = (function cljs$core$_reset_BANG_(o,new_value){
+if((((!((o == null)))) && ((!((o.cljs$core$IReset$_reset_BANG_$arity$2 == null)))))){
+return o.cljs$core$IReset$_reset_BANG_$arity$2(o,new_value);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._reset_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(o,new_value) : m__8503__auto__.call(null,o,new_value));
+} else {
+var m__8503__auto____$1 = (cljs.core._reset_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(o,new_value) : m__8503__auto____$1.call(null,o,new_value));
+} else {
+throw cljs.core.missing_protocol("IReset.-reset!",o);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for adding swapping functionality.
+ * @interface
+ */
+cljs.core.ISwap = function(){};
+
+/**
+ * Swaps the value of o to be (apply f current-value-of-atom args).
+ */
+cljs.core._swap_BANG_ = (function cljs$core$_swap_BANG_(var_args){
+var G__10125 = arguments.length;
+switch (G__10125) {
+case 2:
+return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 5:
+return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$2 = (function (o,f){
+if((((!((o == null)))) && ((!((o.cljs$core$ISwap$_swap_BANG_$arity$2 == null)))))){
+return o.cljs$core$ISwap$_swap_BANG_$arity$2(o,f);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._swap_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(o,f) : m__8503__auto__.call(null,o,f));
+} else {
+var m__8503__auto____$1 = (cljs.core._swap_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(o,f) : m__8503__auto____$1.call(null,o,f));
+} else {
+throw cljs.core.missing_protocol("ISwap.-swap!",o);
+}
+}
+}
+});
+
+cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$3 = (function (o,f,a){
+if((((!((o == null)))) && ((!((o.cljs$core$ISwap$_swap_BANG_$arity$3 == null)))))){
+return o.cljs$core$ISwap$_swap_BANG_$arity$3(o,f,a);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._swap_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(o,f,a) : m__8503__auto__.call(null,o,f,a));
+} else {
+var m__8503__auto____$1 = (cljs.core._swap_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(o,f,a) : m__8503__auto____$1.call(null,o,f,a));
+} else {
+throw cljs.core.missing_protocol("ISwap.-swap!",o);
+}
+}
+}
+});
+
+cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$4 = (function (o,f,a,b){
+if((((!((o == null)))) && ((!((o.cljs$core$ISwap$_swap_BANG_$arity$4 == null)))))){
+return o.cljs$core$ISwap$_swap_BANG_$arity$4(o,f,a,b);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._swap_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$4 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$4(o,f,a,b) : m__8503__auto__.call(null,o,f,a,b));
+} else {
+var m__8503__auto____$1 = (cljs.core._swap_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$4 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$4(o,f,a,b) : m__8503__auto____$1.call(null,o,f,a,b));
+} else {
+throw cljs.core.missing_protocol("ISwap.-swap!",o);
+}
+}
+}
+});
+
+cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$5 = (function (o,f,a,b,xs){
+if((((!((o == null)))) && ((!((o.cljs$core$ISwap$_swap_BANG_$arity$5 == null)))))){
+return o.cljs$core$ISwap$_swap_BANG_$arity$5(o,f,a,b,xs);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._swap_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$5 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$5(o,f,a,b,xs) : m__8503__auto__.call(null,o,f,a,b,xs));
+} else {
+var m__8503__auto____$1 = (cljs.core._swap_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$5 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$5(o,f,a,b,xs) : m__8503__auto____$1.call(null,o,f,a,b,xs));
+} else {
+throw cljs.core.missing_protocol("ISwap.-swap!",o);
+}
+}
+}
+});
+
+cljs.core._swap_BANG_.cljs$lang$maxFixedArity = 5;
+
+
+
+/**
+ * Protocol for adding volatile functionality.
+ * @interface
+ */
+cljs.core.IVolatile = function(){};
+
+/**
+ * Sets the value of volatile o to new-value without regard for the
+ * current value. Returns new-value.
+ */
+cljs.core._vreset_BANG_ = (function cljs$core$_vreset_BANG_(o,new_value){
+if((((!((o == null)))) && ((!((o.cljs$core$IVolatile$_vreset_BANG_$arity$2 == null)))))){
+return o.cljs$core$IVolatile$_vreset_BANG_$arity$2(o,new_value);
+} else {
+var x__8502__auto__ = (((o == null))?null:o);
+var m__8503__auto__ = (cljs.core._vreset_BANG_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(o,new_value) : m__8503__auto__.call(null,o,new_value));
+} else {
+var m__8503__auto____$1 = (cljs.core._vreset_BANG_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(o,new_value) : m__8503__auto____$1.call(null,o,new_value));
+} else {
+throw cljs.core.missing_protocol("IVolatile.-vreset!",o);
+}
+}
+}
+});
+
+
+/**
+ * Protocol for iterating over a collection.
+ * @interface
+ */
+cljs.core.IIterable = function(){};
+
+/**
+ * Returns an iterator for coll.
+ */
+cljs.core._iterator = (function cljs$core$_iterator(coll){
+if((((!((coll == null)))) && ((!((coll.cljs$core$IIterable$_iterator$arity$1 == null)))))){
+return coll.cljs$core$IIterable$_iterator$arity$1(coll);
+} else {
+var x__8502__auto__ = (((coll == null))?null:coll);
+var m__8503__auto__ = (cljs.core._iterator[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto__.call(null,coll));
+} else {
+var m__8503__auto____$1 = (cljs.core._iterator["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(coll) : m__8503__auto____$1.call(null,coll));
+} else {
+throw cljs.core.missing_protocol("IIterable.-iterator",coll);
+}
+}
+}
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IWriter}
+*/
+cljs.core.StringBufferWriter = (function (sb){
+this.sb = sb;
+this.cljs$lang$protocol_mask$partition0$ = 1073741824;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.StringBufferWriter.prototype.cljs$core$IWriter$_write$arity$2 = (function (_,s){
+var self__ = this;
+var ___$1 = this;
+return self__.sb.append(s);
+});
+
+cljs.core.StringBufferWriter.prototype.cljs$core$IWriter$_flush$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return null;
+});
+
+cljs.core.StringBufferWriter.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"sb","sb",-1249746442,null)], null);
+});
+
+cljs.core.StringBufferWriter.cljs$lang$type = true;
+
+cljs.core.StringBufferWriter.cljs$lang$ctorStr = "cljs.core/StringBufferWriter";
+
+cljs.core.StringBufferWriter.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/StringBufferWriter");
+});
+
+/**
+ * Positional factory function for cljs.core/StringBufferWriter.
+ */
+cljs.core.__GT_StringBufferWriter = (function cljs$core$__GT_StringBufferWriter(sb){
+return (new cljs.core.StringBufferWriter(sb));
+});
+
+/**
+ * Support so that collections can implement toString without
+ * loading all the printing machinery.
+ */
+cljs.core.pr_str_STAR_ = (function cljs$core$pr_str_STAR_(obj){
+var sb = (new goog.string.StringBuffer());
+var writer = (new cljs.core.StringBufferWriter(sb));
+obj.cljs$core$IPrintWithWriter$_pr_writer$arity$3(null,writer,cljs.core.pr_opts());
+
+writer.cljs$core$IWriter$_flush$arity$1(null);
+
+return cljs.core.str.cljs$core$IFn$_invoke$arity$1(sb);
+});
+cljs.core.int_rotate_left = (function cljs$core$int_rotate_left(x,n){
+return ((x << n) | (x >>> (- n)));
+});
+if((((typeof Math !== 'undefined') && (typeof Math.imul !== 'undefined')) && ((!((Math.imul((4294967295),(5)) === (0))))))){
+cljs.core.imul = (function cljs$core$imul(a,b){
+return Math.imul(a,b);
+});
+} else {
+cljs.core.imul = (function cljs$core$imul(a,b){
+var ah = ((a >>> (16)) & (65535));
+var al = (a & (65535));
+var bh = ((b >>> (16)) & (65535));
+var bl = (b & (65535));
+return (((al * bl) + ((((ah * bl) + (al * bh)) << (16)) >>> (0))) | (0));
+});
+}
+cljs.core.m3_seed = (0);
+cljs.core.m3_C1 = ((3432918353) | (0));
+cljs.core.m3_C2 = ((461845907) | (0));
+cljs.core.m3_mix_K1 = (function cljs$core$m3_mix_K1(k1){
+return cljs.core.imul(cljs.core.int_rotate_left(cljs.core.imul((k1 | (0)),cljs.core.m3_C1),(15)),cljs.core.m3_C2);
+});
+cljs.core.m3_mix_H1 = (function cljs$core$m3_mix_H1(h1,k1){
+return ((cljs.core.imul(cljs.core.int_rotate_left(((h1 | (0)) ^ (k1 | (0))),(13)),(5)) + ((3864292196) | (0))) | (0));
+});
+cljs.core.m3_fmix = (function cljs$core$m3_fmix(h1,len){
+var h1__$1 = (h1 | (0));
+var h1__$2 = (h1__$1 ^ len);
+var h1__$3 = (h1__$2 ^ (h1__$2 >>> (16)));
+var h1__$4 = cljs.core.imul(h1__$3,((2246822507) | (0)));
+var h1__$5 = (h1__$4 ^ (h1__$4 >>> (13)));
+var h1__$6 = cljs.core.imul(h1__$5,((3266489909) | (0)));
+return (h1__$6 ^ (h1__$6 >>> (16)));
+});
+cljs.core.m3_hash_int = (function cljs$core$m3_hash_int(in$){
+if((in$ === (0))){
+return in$;
+} else {
+var k1 = cljs.core.m3_mix_K1(in$);
+var h1 = cljs.core.m3_mix_H1(cljs.core.m3_seed,k1);
+return cljs.core.m3_fmix(h1,(4));
+}
+});
+cljs.core.m3_hash_unencoded_chars = (function cljs$core$m3_hash_unencoded_chars(in$){
+var h1 = (function (){var i = (1);
+var h1 = cljs.core.m3_seed;
+while(true){
+if((i < in$.length)){
+var G__10127 = (i + (2));
+var G__10128 = cljs.core.m3_mix_H1(h1,cljs.core.m3_mix_K1((in$.charCodeAt((i - (1))) | (in$.charCodeAt(i) << (16)))));
+i = G__10127;
+h1 = G__10128;
+continue;
+} else {
+return h1;
+}
+break;
+}
+})();
+var h1__$1 = ((((in$.length & (1)) === (1)))?(h1 ^ cljs.core.m3_mix_K1(in$.charCodeAt((in$.length - (1))))):h1);
+return cljs.core.m3_fmix(h1__$1,cljs.core.imul((2),in$.length));
+});
+
+
+
+cljs.core.string_hash_cache = {};
+cljs.core.string_hash_cache_count = (0);
+cljs.core.hash_string_STAR_ = (function cljs$core$hash_string_STAR_(s){
+if((!((s == null)))){
+var len = s.length;
+if((len > (0))){
+var i = (0);
+var hash = (0);
+while(true){
+if((i < len)){
+var G__10131 = (i + (1));
+var G__10132 = (cljs.core.imul((31),hash) + s.charCodeAt(i));
+i = G__10131;
+hash = G__10132;
+continue;
+} else {
+return hash;
+}
+break;
+}
+} else {
+return (0);
+}
+} else {
+return (0);
+}
+});
+cljs.core.add_to_string_hash_cache = (function cljs$core$add_to_string_hash_cache(k){
+var h = cljs.core.hash_string_STAR_(k);
+goog.object.set(cljs.core.string_hash_cache,k,h);
+
+cljs.core.string_hash_cache_count = (cljs.core.string_hash_cache_count + (1));
+
+return h;
+});
+cljs.core.hash_string = (function cljs$core$hash_string(k){
+if((cljs.core.string_hash_cache_count > (255))){
+cljs.core.string_hash_cache = {};
+
+cljs.core.string_hash_cache_count = (0);
+} else {
+}
+
+if((k == null)){
+return (0);
+} else {
+var h = (cljs.core.string_hash_cache[k]);
+if(typeof h === 'number'){
+return h;
+} else {
+return cljs.core.add_to_string_hash_cache(k);
+}
+}
+});
+/**
+ * Returns the hash code of its argument. Note this is the hash code
+ * consistent with =.
+ */
+cljs.core.hash = (function cljs$core$hash(o){
+if((((!((o == null))))?(((((o.cljs$lang$protocol_mask$partition0$ & (4194304))) || ((cljs.core.PROTOCOL_SENTINEL === o.cljs$core$IHash$))))?true:false):false)){
+return (o.cljs$core$IHash$_hash$arity$1(null) ^ (0));
+} else {
+if(typeof o === 'number'){
+if(cljs.core.truth_(isFinite(o))){
+return (Math.floor(o) % (2147483647));
+} else {
+var G__10136 = o;
+switch (G__10136) {
+case Infinity:
+return (2146435072);
+
+break;
+case -Infinity:
+return (-1048576);
+
+break;
+default:
+return (2146959360);
+
+}
+}
+} else {
+if(o === true){
+return (1231);
+} else {
+if(o === false){
+return (1237);
+} else {
+if(typeof o === 'string'){
+return cljs.core.m3_hash_int(cljs.core.hash_string(o));
+} else {
+if((o instanceof Date)){
+return (o.valueOf() ^ (0));
+} else {
+if((o == null)){
+return (0);
+} else {
+return (cljs.core._hash(o) ^ (0));
+
+}
+}
+}
+}
+}
+}
+}
+});
+cljs.core.hash_combine = (function cljs$core$hash_combine(seed,hash){
+return (seed ^ (((hash + (2654435769)) + (seed << (6))) + (seed >> (2))));
+});
+/**
+ * Evaluates x and tests if it is an instance of the type
+ * c. Returns true or false
+ */
+cljs.core.instance_QMARK_ = (function cljs$core$instance_QMARK_(c,x){
+return (x instanceof c);
+});
+/**
+ * Return true if x is a Symbol
+ */
+cljs.core.symbol_QMARK_ = (function cljs$core$symbol_QMARK_(x){
+return (x instanceof cljs.core.Symbol);
+});
+cljs.core.hash_symbol = (function cljs$core$hash_symbol(sym){
+return cljs.core.hash_combine(cljs.core.m3_hash_unencoded_chars(sym.name),cljs.core.hash_string(sym.ns));
+});
+cljs.core.compare_symbols = (function cljs$core$compare_symbols(a,b){
+if((a.str === b.str)){
+return (0);
+} else {
+if(cljs.core.truth_((function (){var and__7791__auto__ = cljs.core.not(a.ns);
+if(and__7791__auto__){
+return b.ns;
+} else {
+return and__7791__auto__;
+}
+})())){
+return (-1);
+} else {
+if(cljs.core.truth_(a.ns)){
+if(cljs.core.not(b.ns)){
+return (1);
+} else {
+var nsc = (function (){var G__10138 = a.ns;
+var G__10139 = b.ns;
+return goog.array.defaultCompare(G__10138,G__10139);
+})();
+if(((0) === nsc)){
+var G__10140 = a.name;
+var G__10141 = b.name;
+return goog.array.defaultCompare(G__10140,G__10141);
+} else {
+return nsc;
+}
+}
+} else {
+var G__10142 = a.name;
+var G__10143 = b.name;
+return goog.array.defaultCompare(G__10142,G__10143);
+
+}
+}
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.INamed}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.IPrintWithWriter}
+ * @implements {cljs.core.IWithMeta}
+*/
+cljs.core.Symbol = (function (ns,name,str,_hash,_meta){
+this.ns = ns;
+this.name = name;
+this.str = str;
+this._hash = _hash;
+this._meta = _meta;
+this.cljs$lang$protocol_mask$partition0$ = 2154168321;
+this.cljs$lang$protocol_mask$partition1$ = 4096;
+});
+cljs.core.Symbol.prototype.toString = (function (){
+var self__ = this;
+var _ = this;
+return self__.str;
+});
+
+cljs.core.Symbol.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.Symbol.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (_,other){
+var self__ = this;
+var ___$1 = this;
+if((other instanceof cljs.core.Symbol)){
+return (self__.str === other.str);
+} else {
+return false;
+}
+});
+
+cljs.core.Symbol.prototype.call = (function() {
+var G__10145 = null;
+var G__10145__2 = (function (self__,coll){
+var self__ = this;
+var self____$1 = this;
+var sym = self____$1;
+return cljs.core.get.cljs$core$IFn$_invoke$arity$2(coll,sym);
+});
+var G__10145__3 = (function (self__,coll,not_found){
+var self__ = this;
+var self____$1 = this;
+var sym = self____$1;
+return cljs.core.get.cljs$core$IFn$_invoke$arity$3(coll,sym,not_found);
+});
+G__10145 = function(self__,coll,not_found){
+switch(arguments.length){
+case 2:
+return G__10145__2.call(this,self__,coll);
+case 3:
+return G__10145__3.call(this,self__,coll,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__10145.cljs$core$IFn$_invoke$arity$2 = G__10145__2;
+G__10145.cljs$core$IFn$_invoke$arity$3 = G__10145__3;
+return G__10145;
+})()
+;
+
+cljs.core.Symbol.prototype.apply = (function (self__,args10144){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args10144)));
+});
+
+cljs.core.Symbol.prototype.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+var self__ = this;
+var sym = this;
+return cljs.core.get.cljs$core$IFn$_invoke$arity$2(coll,sym);
+});
+
+cljs.core.Symbol.prototype.cljs$core$IFn$_invoke$arity$2 = (function (coll,not_found){
+var self__ = this;
+var sym = this;
+return cljs.core.get.cljs$core$IFn$_invoke$arity$3(coll,sym,not_found);
+});
+
+cljs.core.Symbol.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__._meta;
+});
+
+cljs.core.Symbol.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_,new_meta){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.Symbol(self__.ns,self__.name,self__.str,self__._hash,new_meta));
+});
+
+cljs.core.Symbol.prototype.cljs$core$IHash$_hash$arity$1 = (function (sym){
+var self__ = this;
+var sym__$1 = this;
+var h__8266__auto__ = self__._hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_symbol(sym__$1);
+self__._hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.Symbol.prototype.cljs$core$INamed$_name$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.name;
+});
+
+cljs.core.Symbol.prototype.cljs$core$INamed$_namespace$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.ns;
+});
+
+cljs.core.Symbol.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (o,writer,_){
+var self__ = this;
+var o__$1 = this;
+return cljs.core._write(writer,self__.str);
+});
+
+cljs.core.Symbol.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"ns","ns",2082130287,null),new cljs.core.Symbol(null,"name","name",-810760592,null),new cljs.core.Symbol(null,"str","str",-1564826950,null),cljs.core.with_meta(new cljs.core.Symbol(null,"_hash","_hash",-2130838312,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"_meta","_meta",-1716892533,null)], null);
+});
+
+cljs.core.Symbol.cljs$lang$type = true;
+
+cljs.core.Symbol.cljs$lang$ctorStr = "cljs.core/Symbol";
+
+cljs.core.Symbol.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Symbol");
+});
+
+/**
+ * Positional factory function for cljs.core/Symbol.
+ */
+cljs.core.__GT_Symbol = (function cljs$core$__GT_Symbol(ns,name,str,_hash,_meta){
+return (new cljs.core.Symbol(ns,name,str,_hash,_meta));
+});
+
+/**
+ * Returns a Symbol with the given namespace and name.
+ */
+cljs.core.symbol = (function cljs$core$symbol(var_args){
+var G__10147 = arguments.length;
+switch (G__10147) {
+case 1:
+return cljs.core.symbol.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.symbol.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.symbol.cljs$core$IFn$_invoke$arity$1 = (function (name){
+if((name instanceof cljs.core.Symbol)){
+return name;
+} else {
+var idx = name.indexOf("/");
+if((idx < (1))){
+return cljs.core.symbol.cljs$core$IFn$_invoke$arity$2(null,name);
+} else {
+return cljs.core.symbol.cljs$core$IFn$_invoke$arity$2(name.substring((0),idx),name.substring((idx + (1)),name.length));
+}
+}
+});
+
+cljs.core.symbol.cljs$core$IFn$_invoke$arity$2 = (function (ns,name){
+var sym_str = (((!((ns == null))))?[cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns),"/",cljs.core.str.cljs$core$IFn$_invoke$arity$1(name)].join(''):name);
+return (new cljs.core.Symbol(ns,name,sym_str,null,null));
+});
+
+cljs.core.symbol.cljs$lang$maxFixedArity = 2;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.Fn}
+ * @implements {cljs.core.IDeref}
+ * @implements {cljs.core.IWithMeta}
+*/
+cljs.core.Var = (function (val,sym,_meta){
+this.val = val;
+this.sym = sym;
+this._meta = _meta;
+this.cljs$lang$protocol_mask$partition0$ = 6717441;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.Var.prototype.isMacro = (function (){
+var self__ = this;
+var _ = this;
+return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null)).cljs$lang$macro;
+});
+
+cljs.core.Var.prototype.toString = (function (){
+var self__ = this;
+var _ = this;
+return ["#'",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.sym)].join('');
+});
+
+cljs.core.Var.prototype.cljs$core$IDeref$_deref$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+});
+
+cljs.core.Var.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__._meta;
+});
+
+cljs.core.Var.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_,new_meta){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.Var(self__.val,self__.sym,new_meta));
+});
+
+cljs.core.Var.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this$,other){
+var self__ = this;
+var this$__$1 = this;
+if((other instanceof cljs.core.Var)){
+return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this$__$1.sym,other.sym);
+} else {
+return false;
+}
+});
+
+cljs.core.Var.prototype.cljs$core$IHash$_hash$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return cljs.core.hash_symbol(self__.sym);
+});
+
+cljs.core.Var.prototype.cljs$core$Fn$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Var.prototype.call = (function() {
+var G__10192 = null;
+var G__10192__1 = (function (self__){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10150 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10150.cljs$core$IFn$_invoke$arity$0 ? fexpr__10150.cljs$core$IFn$_invoke$arity$0() : fexpr__10150.call(null));
+});
+var G__10192__2 = (function (self__,a){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10151 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10151.cljs$core$IFn$_invoke$arity$1 ? fexpr__10151.cljs$core$IFn$_invoke$arity$1(a) : fexpr__10151.call(null,a));
+});
+var G__10192__3 = (function (self__,a,b){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10152 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10152.cljs$core$IFn$_invoke$arity$2 ? fexpr__10152.cljs$core$IFn$_invoke$arity$2(a,b) : fexpr__10152.call(null,a,b));
+});
+var G__10192__4 = (function (self__,a,b,c){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10153 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10153.cljs$core$IFn$_invoke$arity$3 ? fexpr__10153.cljs$core$IFn$_invoke$arity$3(a,b,c) : fexpr__10153.call(null,a,b,c));
+});
+var G__10192__5 = (function (self__,a,b,c,d){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10154 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10154.cljs$core$IFn$_invoke$arity$4 ? fexpr__10154.cljs$core$IFn$_invoke$arity$4(a,b,c,d) : fexpr__10154.call(null,a,b,c,d));
+});
+var G__10192__6 = (function (self__,a,b,c,d,e){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10155 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10155.cljs$core$IFn$_invoke$arity$5 ? fexpr__10155.cljs$core$IFn$_invoke$arity$5(a,b,c,d,e) : fexpr__10155.call(null,a,b,c,d,e));
+});
+var G__10192__7 = (function (self__,a,b,c,d,e,f){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10156 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10156.cljs$core$IFn$_invoke$arity$6 ? fexpr__10156.cljs$core$IFn$_invoke$arity$6(a,b,c,d,e,f) : fexpr__10156.call(null,a,b,c,d,e,f));
+});
+var G__10192__8 = (function (self__,a,b,c,d,e,f,g){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10157 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10157.cljs$core$IFn$_invoke$arity$7 ? fexpr__10157.cljs$core$IFn$_invoke$arity$7(a,b,c,d,e,f,g) : fexpr__10157.call(null,a,b,c,d,e,f,g));
+});
+var G__10192__9 = (function (self__,a,b,c,d,e,f,g,h){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10158 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10158.cljs$core$IFn$_invoke$arity$8 ? fexpr__10158.cljs$core$IFn$_invoke$arity$8(a,b,c,d,e,f,g,h) : fexpr__10158.call(null,a,b,c,d,e,f,g,h));
+});
+var G__10192__10 = (function (self__,a,b,c,d,e,f,g,h,i){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10159 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10159.cljs$core$IFn$_invoke$arity$9 ? fexpr__10159.cljs$core$IFn$_invoke$arity$9(a,b,c,d,e,f,g,h,i) : fexpr__10159.call(null,a,b,c,d,e,f,g,h,i));
+});
+var G__10192__11 = (function (self__,a,b,c,d,e,f,g,h,i,j){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10160 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10160.cljs$core$IFn$_invoke$arity$10 ? fexpr__10160.cljs$core$IFn$_invoke$arity$10(a,b,c,d,e,f,g,h,i,j) : fexpr__10160.call(null,a,b,c,d,e,f,g,h,i,j));
+});
+var G__10192__12 = (function (self__,a,b,c,d,e,f,g,h,i,j,k){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10161 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10161.cljs$core$IFn$_invoke$arity$11 ? fexpr__10161.cljs$core$IFn$_invoke$arity$11(a,b,c,d,e,f,g,h,i,j,k) : fexpr__10161.call(null,a,b,c,d,e,f,g,h,i,j,k));
+});
+var G__10192__13 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10162 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10162.cljs$core$IFn$_invoke$arity$12 ? fexpr__10162.cljs$core$IFn$_invoke$arity$12(a,b,c,d,e,f,g,h,i,j,k,l) : fexpr__10162.call(null,a,b,c,d,e,f,g,h,i,j,k,l));
+});
+var G__10192__14 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10163 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10163.cljs$core$IFn$_invoke$arity$13 ? fexpr__10163.cljs$core$IFn$_invoke$arity$13(a,b,c,d,e,f,g,h,i,j,k,l,m) : fexpr__10163.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m));
+});
+var G__10192__15 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10164 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10164.cljs$core$IFn$_invoke$arity$14 ? fexpr__10164.cljs$core$IFn$_invoke$arity$14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) : fexpr__10164.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+});
+var G__10192__16 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10165 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10165.cljs$core$IFn$_invoke$arity$15 ? fexpr__10165.cljs$core$IFn$_invoke$arity$15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : fexpr__10165.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+});
+var G__10192__17 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10166 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10166.cljs$core$IFn$_invoke$arity$16 ? fexpr__10166.cljs$core$IFn$_invoke$arity$16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : fexpr__10166.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+});
+var G__10192__18 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10167 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10167.cljs$core$IFn$_invoke$arity$17 ? fexpr__10167.cljs$core$IFn$_invoke$arity$17(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : fexpr__10167.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+});
+var G__10192__19 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10168 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10168.cljs$core$IFn$_invoke$arity$18 ? fexpr__10168.cljs$core$IFn$_invoke$arity$18(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : fexpr__10168.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+});
+var G__10192__20 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10169 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10169.cljs$core$IFn$_invoke$arity$19 ? fexpr__10169.cljs$core$IFn$_invoke$arity$19(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : fexpr__10169.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+});
+var G__10192__21 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+var fexpr__10170 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10170.cljs$core$IFn$_invoke$arity$20 ? fexpr__10170.cljs$core$IFn$_invoke$arity$20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : fexpr__10170.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+});
+var G__10192__22 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic((self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null)),a,b,c,d,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
+});
+G__10192 = function(self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+switch(arguments.length){
+case 1:
+return G__10192__1.call(this,self__);
+case 2:
+return G__10192__2.call(this,self__,a);
+case 3:
+return G__10192__3.call(this,self__,a,b);
+case 4:
+return G__10192__4.call(this,self__,a,b,c);
+case 5:
+return G__10192__5.call(this,self__,a,b,c,d);
+case 6:
+return G__10192__6.call(this,self__,a,b,c,d,e);
+case 7:
+return G__10192__7.call(this,self__,a,b,c,d,e,f);
+case 8:
+return G__10192__8.call(this,self__,a,b,c,d,e,f,g);
+case 9:
+return G__10192__9.call(this,self__,a,b,c,d,e,f,g,h);
+case 10:
+return G__10192__10.call(this,self__,a,b,c,d,e,f,g,h,i);
+case 11:
+return G__10192__11.call(this,self__,a,b,c,d,e,f,g,h,i,j);
+case 12:
+return G__10192__12.call(this,self__,a,b,c,d,e,f,g,h,i,j,k);
+case 13:
+return G__10192__13.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l);
+case 14:
+return G__10192__14.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m);
+case 15:
+return G__10192__15.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
+case 16:
+return G__10192__16.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
+case 17:
+return G__10192__17.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
+case 18:
+return G__10192__18.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
+case 19:
+return G__10192__19.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
+case 20:
+return G__10192__20.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
+case 21:
+return G__10192__21.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
+case 22:
+return G__10192__22.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__10192.cljs$core$IFn$_invoke$arity$1 = G__10192__1;
+G__10192.cljs$core$IFn$_invoke$arity$2 = G__10192__2;
+G__10192.cljs$core$IFn$_invoke$arity$3 = G__10192__3;
+G__10192.cljs$core$IFn$_invoke$arity$4 = G__10192__4;
+G__10192.cljs$core$IFn$_invoke$arity$5 = G__10192__5;
+G__10192.cljs$core$IFn$_invoke$arity$6 = G__10192__6;
+G__10192.cljs$core$IFn$_invoke$arity$7 = G__10192__7;
+G__10192.cljs$core$IFn$_invoke$arity$8 = G__10192__8;
+G__10192.cljs$core$IFn$_invoke$arity$9 = G__10192__9;
+G__10192.cljs$core$IFn$_invoke$arity$10 = G__10192__10;
+G__10192.cljs$core$IFn$_invoke$arity$11 = G__10192__11;
+G__10192.cljs$core$IFn$_invoke$arity$12 = G__10192__12;
+G__10192.cljs$core$IFn$_invoke$arity$13 = G__10192__13;
+G__10192.cljs$core$IFn$_invoke$arity$14 = G__10192__14;
+G__10192.cljs$core$IFn$_invoke$arity$15 = G__10192__15;
+G__10192.cljs$core$IFn$_invoke$arity$16 = G__10192__16;
+G__10192.cljs$core$IFn$_invoke$arity$17 = G__10192__17;
+G__10192.cljs$core$IFn$_invoke$arity$18 = G__10192__18;
+G__10192.cljs$core$IFn$_invoke$arity$19 = G__10192__19;
+G__10192.cljs$core$IFn$_invoke$arity$20 = G__10192__20;
+G__10192.cljs$core$IFn$_invoke$arity$21 = G__10192__21;
+G__10192.cljs$core$IFn$_invoke$arity$22 = G__10192__22;
+return G__10192;
+})()
+;
+
+cljs.core.Var.prototype.apply = (function (self__,args10149){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args10149)));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$0 = (function (){
+var self__ = this;
+var _ = this;
+var fexpr__10171 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10171.cljs$core$IFn$_invoke$arity$0 ? fexpr__10171.cljs$core$IFn$_invoke$arity$0() : fexpr__10171.call(null));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$1 = (function (a){
+var self__ = this;
+var _ = this;
+var fexpr__10172 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10172.cljs$core$IFn$_invoke$arity$1 ? fexpr__10172.cljs$core$IFn$_invoke$arity$1(a) : fexpr__10172.call(null,a));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$2 = (function (a,b){
+var self__ = this;
+var _ = this;
+var fexpr__10173 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10173.cljs$core$IFn$_invoke$arity$2 ? fexpr__10173.cljs$core$IFn$_invoke$arity$2(a,b) : fexpr__10173.call(null,a,b));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$3 = (function (a,b,c){
+var self__ = this;
+var _ = this;
+var fexpr__10174 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10174.cljs$core$IFn$_invoke$arity$3 ? fexpr__10174.cljs$core$IFn$_invoke$arity$3(a,b,c) : fexpr__10174.call(null,a,b,c));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$4 = (function (a,b,c,d){
+var self__ = this;
+var _ = this;
+var fexpr__10175 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10175.cljs$core$IFn$_invoke$arity$4 ? fexpr__10175.cljs$core$IFn$_invoke$arity$4(a,b,c,d) : fexpr__10175.call(null,a,b,c,d));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$5 = (function (a,b,c,d,e){
+var self__ = this;
+var _ = this;
+var fexpr__10176 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10176.cljs$core$IFn$_invoke$arity$5 ? fexpr__10176.cljs$core$IFn$_invoke$arity$5(a,b,c,d,e) : fexpr__10176.call(null,a,b,c,d,e));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$6 = (function (a,b,c,d,e,f){
+var self__ = this;
+var _ = this;
+var fexpr__10177 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10177.cljs$core$IFn$_invoke$arity$6 ? fexpr__10177.cljs$core$IFn$_invoke$arity$6(a,b,c,d,e,f) : fexpr__10177.call(null,a,b,c,d,e,f));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$7 = (function (a,b,c,d,e,f,g){
+var self__ = this;
+var _ = this;
+var fexpr__10178 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10178.cljs$core$IFn$_invoke$arity$7 ? fexpr__10178.cljs$core$IFn$_invoke$arity$7(a,b,c,d,e,f,g) : fexpr__10178.call(null,a,b,c,d,e,f,g));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$8 = (function (a,b,c,d,e,f,g,h){
+var self__ = this;
+var _ = this;
+var fexpr__10179 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10179.cljs$core$IFn$_invoke$arity$8 ? fexpr__10179.cljs$core$IFn$_invoke$arity$8(a,b,c,d,e,f,g,h) : fexpr__10179.call(null,a,b,c,d,e,f,g,h));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$9 = (function (a,b,c,d,e,f,g,h,i){
+var self__ = this;
+var _ = this;
+var fexpr__10180 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10180.cljs$core$IFn$_invoke$arity$9 ? fexpr__10180.cljs$core$IFn$_invoke$arity$9(a,b,c,d,e,f,g,h,i) : fexpr__10180.call(null,a,b,c,d,e,f,g,h,i));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$10 = (function (a,b,c,d,e,f,g,h,i,j){
+var self__ = this;
+var _ = this;
+var fexpr__10181 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10181.cljs$core$IFn$_invoke$arity$10 ? fexpr__10181.cljs$core$IFn$_invoke$arity$10(a,b,c,d,e,f,g,h,i,j) : fexpr__10181.call(null,a,b,c,d,e,f,g,h,i,j));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$11 = (function (a,b,c,d,e,f,g,h,i,j,k){
+var self__ = this;
+var _ = this;
+var fexpr__10182 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10182.cljs$core$IFn$_invoke$arity$11 ? fexpr__10182.cljs$core$IFn$_invoke$arity$11(a,b,c,d,e,f,g,h,i,j,k) : fexpr__10182.call(null,a,b,c,d,e,f,g,h,i,j,k));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$12 = (function (a,b,c,d,e,f,g,h,i,j,k,l){
+var self__ = this;
+var _ = this;
+var fexpr__10183 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10183.cljs$core$IFn$_invoke$arity$12 ? fexpr__10183.cljs$core$IFn$_invoke$arity$12(a,b,c,d,e,f,g,h,i,j,k,l) : fexpr__10183.call(null,a,b,c,d,e,f,g,h,i,j,k,l));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$13 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m){
+var self__ = this;
+var _ = this;
+var fexpr__10184 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10184.cljs$core$IFn$_invoke$arity$13 ? fexpr__10184.cljs$core$IFn$_invoke$arity$13(a,b,c,d,e,f,g,h,i,j,k,l,m) : fexpr__10184.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$14 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n){
+var self__ = this;
+var _ = this;
+var fexpr__10185 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10185.cljs$core$IFn$_invoke$arity$14 ? fexpr__10185.cljs$core$IFn$_invoke$arity$14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) : fexpr__10185.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$15 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
+var self__ = this;
+var _ = this;
+var fexpr__10186 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10186.cljs$core$IFn$_invoke$arity$15 ? fexpr__10186.cljs$core$IFn$_invoke$arity$15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : fexpr__10186.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$16 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
+var self__ = this;
+var _ = this;
+var fexpr__10187 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10187.cljs$core$IFn$_invoke$arity$16 ? fexpr__10187.cljs$core$IFn$_invoke$arity$16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : fexpr__10187.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$17 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
+var self__ = this;
+var _ = this;
+var fexpr__10188 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10188.cljs$core$IFn$_invoke$arity$17 ? fexpr__10188.cljs$core$IFn$_invoke$arity$17(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : fexpr__10188.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$18 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
+var self__ = this;
+var _ = this;
+var fexpr__10189 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10189.cljs$core$IFn$_invoke$arity$18 ? fexpr__10189.cljs$core$IFn$_invoke$arity$18(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : fexpr__10189.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$19 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
+var self__ = this;
+var _ = this;
+var fexpr__10190 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10190.cljs$core$IFn$_invoke$arity$19 ? fexpr__10190.cljs$core$IFn$_invoke$arity$19(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : fexpr__10190.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$20 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
+var self__ = this;
+var _ = this;
+var fexpr__10191 = (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
+return (fexpr__10191.cljs$core$IFn$_invoke$arity$20 ? fexpr__10191.cljs$core$IFn$_invoke$arity$20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : fexpr__10191.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+});
+
+cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$21 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+var self__ = this;
+var _ = this;
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic((self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null)),a,b,c,d,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
+});
+
+cljs.core.Var.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"val","val",1769233139,null),new cljs.core.Symbol(null,"sym","sym",195671222,null),new cljs.core.Symbol(null,"_meta","_meta",-1716892533,null)], null);
+});
+
+cljs.core.Var.cljs$lang$type = true;
+
+cljs.core.Var.cljs$lang$ctorStr = "cljs.core/Var";
+
+cljs.core.Var.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Var");
+});
+
+/**
+ * Positional factory function for cljs.core/Var.
+ */
+cljs.core.__GT_Var = (function cljs$core$__GT_Var(val,sym,_meta){
+return (new cljs.core.Var(val,sym,_meta));
+});
+
+/**
+ * Returns true if v is of type cljs.core.Var
+ */
+cljs.core.var_QMARK_ = (function cljs$core$var_QMARK_(v){
+return (v instanceof cljs.core.Var);
+});
+
+
+/**
+ * Return true if x implements IIterable protocol.
+ */
+cljs.core.iterable_QMARK_ = (function cljs$core$iterable_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition1$ & (131072))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IIterable$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition1$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IIterable,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IIterable,x);
+}
+});
+/**
+ * Clone the supplied value which must implement ICloneable.
+ */
+cljs.core.clone = (function cljs$core$clone(value){
+return cljs.core._clone(value);
+});
+/**
+ * Return true if x implements ICloneable protocol.
+ */
+cljs.core.cloneable_QMARK_ = (function cljs$core$cloneable_QMARK_(value){
+if((!((value == null)))){
+if((((value.cljs$lang$protocol_mask$partition1$ & (8192))) || ((cljs.core.PROTOCOL_SENTINEL === value.cljs$core$ICloneable$)))){
+return true;
+} else {
+if((!value.cljs$lang$protocol_mask$partition1$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.ICloneable,value);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.ICloneable,value);
+}
+});
+/**
+ * Returns a seq on the collection. If the collection is
+ * empty, returns nil. (seq nil) returns nil. seq also works on
+ * Strings.
+ */
+cljs.core.seq = (function cljs$core$seq(coll){
+if((coll == null)){
+return null;
+} else {
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (8388608))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ISeqable$))))?true:false):false)){
+return coll.cljs$core$ISeqable$_seq$arity$1(null);
+} else {
+if(cljs.core.array_QMARK_(coll)){
+if((coll.length === (0))){
+return null;
+} else {
+return (new cljs.core.IndexedSeq(coll,(0),null));
+}
+} else {
+if(typeof coll === 'string'){
+if((coll.length === (0))){
+return null;
+} else {
+return (new cljs.core.IndexedSeq(coll,(0),null));
+}
+} else {
+if(cljs.core.native_satisfies_QMARK_(cljs.core.ISeqable,coll)){
+return cljs.core._seq(coll);
+} else {
+throw (new Error([cljs.core.str.cljs$core$IFn$_invoke$arity$1(coll)," is not ISeqable"].join('')));
+
+}
+}
+}
+}
+}
+});
+/**
+ * Returns the first item in the collection. Calls seq on its
+ * argument. If coll is nil, returns nil.
+ */
+cljs.core.first = (function cljs$core$first(coll){
+if((coll == null)){
+return null;
+} else {
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ISeq$))))?true:false):false)){
+return coll.cljs$core$ISeq$_first$arity$1(null);
+} else {
+var s = cljs.core.seq(coll);
+if((s == null)){
+return null;
+} else {
+return cljs.core._first(s);
+}
+}
+}
+});
+/**
+ * Returns a possibly empty seq of the items after the first. Calls seq on its
+ * argument.
+ */
+cljs.core.rest = (function cljs$core$rest(coll){
+if((!((coll == null)))){
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ISeq$))))?true:false):false)){
+return coll.cljs$core$ISeq$_rest$arity$1(null);
+} else {
+var s = cljs.core.seq(coll);
+if(s){
+return s.cljs$core$ISeq$_rest$arity$1(null);
+} else {
+return cljs.core.List.EMPTY;
+}
+}
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+/**
+ * Returns a seq of the items after the first. Calls seq on its
+ * argument. If there are no more items, returns nil
+ */
+cljs.core.next = (function cljs$core$next(coll){
+if((coll == null)){
+return null;
+} else {
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (128))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$INext$))))?true:false):false)){
+return coll.cljs$core$INext$_next$arity$1(null);
+} else {
+return cljs.core.seq(cljs.core.rest(coll));
+}
+}
+});
+/**
+ * Equality. Returns true if x equals y, false if not. Compares
+ * numbers and collections in a type-independent manner. Clojure's immutable data
+ * structures define -equiv (and thus =) as a value, not an identity,
+ * comparison.
+ */
+cljs.core._EQ_ = (function cljs$core$_EQ_(var_args){
+var G__10203 = arguments.length;
+switch (G__10203) {
+case 1:
+return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10205 = arguments.length;
+var i__9001__auto___10206 = (0);
+while(true){
+if((i__9001__auto___10206 < len__9000__auto___10205)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10206]));
+
+var G__10207 = (i__9001__auto___10206 + (1));
+i__9001__auto___10206 = G__10207;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._EQ_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return true;
+});
+
+cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+if((x == null)){
+return (y == null);
+} else {
+return (((x === y)) || (cljs.core._equiv(x,y)));
+}
+});
+
+cljs.core._EQ_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+while(true){
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y)){
+if(cljs.core.next(more)){
+var G__10208 = y;
+var G__10209 = cljs.core.first(more);
+var G__10210 = cljs.core.next(more);
+x = G__10208;
+y = G__10209;
+more = G__10210;
+continue;
+} else {
+return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(y,cljs.core.first(more));
+}
+} else {
+return false;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core._EQ_.cljs$lang$applyTo = (function (seq10200){
+var G__10201 = cljs.core.first(seq10200);
+var seq10200__$1 = cljs.core.next(seq10200);
+var G__10202 = cljs.core.first(seq10200__$1);
+var seq10200__$2 = cljs.core.next(seq10200__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10201,G__10202,seq10200__$2);
+});
+
+cljs.core._EQ_.cljs$lang$maxFixedArity = (2);
+
+
+/**
+* @constructor
+*/
+cljs.core.ES6Iterator = (function (s){
+this.s = s;
+});
+cljs.core.ES6Iterator.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+if((!((self__.s == null)))){
+var x = cljs.core.first(self__.s);
+self__.s = cljs.core.next(self__.s);
+
+return ({"value": x, "done": false});
+} else {
+return ({"value": null, "done": true});
+}
+});
+
+cljs.core.ES6Iterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"s","s",-948495851,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ES6Iterator.cljs$lang$type = true;
+
+cljs.core.ES6Iterator.cljs$lang$ctorStr = "cljs.core/ES6Iterator";
+
+cljs.core.ES6Iterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ES6Iterator");
+});
+
+/**
+ * Positional factory function for cljs.core/ES6Iterator.
+ */
+cljs.core.__GT_ES6Iterator = (function cljs$core$__GT_ES6Iterator(s){
+return (new cljs.core.ES6Iterator(s));
+});
+
+/**
+ * EXPERIMENTAL: Return a ES2015 compatible iterator for coll.
+ */
+cljs.core.es6_iterator = (function cljs$core$es6_iterator(coll){
+return (new cljs.core.ES6Iterator(cljs.core.seq(coll)));
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.ISeqable}
+*/
+cljs.core.ES6IteratorSeq = (function (value,iter,_rest){
+this.value = value;
+this.iter = iter;
+this._rest = _rest;
+this.cljs$lang$protocol_mask$partition0$ = 8388672;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.ES6IteratorSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return this$__$1;
+});
+
+cljs.core.ES6IteratorSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.value;
+});
+
+cljs.core.ES6IteratorSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+if((self__._rest == null)){
+self__._rest = cljs.core.es6_iterator_seq(self__.iter);
+} else {
+}
+
+return self__._rest;
+});
+
+cljs.core.ES6IteratorSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"value","value",1946509744,null),new cljs.core.Symbol(null,"iter","iter",-1346195486,null),cljs.core.with_meta(new cljs.core.Symbol(null,"_rest","_rest",-2100466189,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ES6IteratorSeq.cljs$lang$type = true;
+
+cljs.core.ES6IteratorSeq.cljs$lang$ctorStr = "cljs.core/ES6IteratorSeq";
+
+cljs.core.ES6IteratorSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ES6IteratorSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/ES6IteratorSeq.
+ */
+cljs.core.__GT_ES6IteratorSeq = (function cljs$core$__GT_ES6IteratorSeq(value,iter,_rest){
+return (new cljs.core.ES6IteratorSeq(value,iter,_rest));
+});
+
+/**
+ * EXPERIMENTAL: Given an ES2015 compatible iterator return a seq.
+ */
+cljs.core.es6_iterator_seq = (function cljs$core$es6_iterator_seq(iter){
+var v = iter.next();
+if(cljs.core.truth_(v.done)){
+return cljs.core.List.EMPTY;
+} else {
+return (new cljs.core.ES6IteratorSeq(v.value,iter,null));
+}
+});
+/**
+ * Mix final collection hash for ordered or unordered collections.
+ * hash-basis is the combined collection hash, count is the number
+ * of elements included in the basis. Note this is the hash code
+ * consistent with =, different from .hashCode.
+ * See http://clojure.org/data_structures#hash for full algorithms.
+ */
+cljs.core.mix_collection_hash = (function cljs$core$mix_collection_hash(hash_basis,count){
+var h1 = cljs.core.m3_seed;
+var k1 = cljs.core.m3_mix_K1(hash_basis);
+var h1__$1 = cljs.core.m3_mix_H1(h1,k1);
+return cljs.core.m3_fmix(h1__$1,count);
+});
+/**
+ * Returns the hash code, consistent with =, for an external ordered
+ * collection implementing Iterable.
+ * See http://clojure.org/data_structures#hash for full algorithms.
+ */
+cljs.core.hash_ordered_coll = (function cljs$core$hash_ordered_coll(coll){
+var n = (0);
+var hash_code = (1);
+var coll__$1 = cljs.core.seq(coll);
+while(true){
+if((!((coll__$1 == null)))){
+var G__10211 = (n + (1));
+var G__10212 = ((cljs.core.imul((31),hash_code) + cljs.core.hash(cljs.core.first(coll__$1))) | (0));
+var G__10213 = cljs.core.next(coll__$1);
+n = G__10211;
+hash_code = G__10212;
+coll__$1 = G__10213;
+continue;
+} else {
+return cljs.core.mix_collection_hash(hash_code,n);
+}
+break;
+}
+});
+cljs.core.empty_ordered_hash = cljs.core.mix_collection_hash((1),(0));
+/**
+ * Returns the hash code, consistent with =, for an external unordered
+ * collection implementing Iterable. For maps, the iterator should
+ * return map entries whose hash is computed as
+ * (hash-ordered-coll [k v]).
+ * See http://clojure.org/data_structures#hash for full algorithms.
+ */
+cljs.core.hash_unordered_coll = (function cljs$core$hash_unordered_coll(coll){
+var n = (0);
+var hash_code = (0);
+var coll__$1 = cljs.core.seq(coll);
+while(true){
+if((!((coll__$1 == null)))){
+var G__10214 = (n + (1));
+var G__10215 = ((hash_code + cljs.core.hash(cljs.core.first(coll__$1))) | (0));
+var G__10216 = cljs.core.next(coll__$1);
+n = G__10214;
+hash_code = G__10215;
+coll__$1 = G__10216;
+continue;
+} else {
+return cljs.core.mix_collection_hash(hash_code,n);
+}
+break;
+}
+});
+cljs.core.empty_unordered_hash = cljs.core.mix_collection_hash((0),(0));
+
+
+goog.object.set(cljs.core.ICounted,"null",true);
+
+var G__10217_10220 = cljs.core._count;
+var G__10218_10221 = "null";
+var G__10219_10222 = ((function (G__10217_10220,G__10218_10221){
+return (function (_){
+return (0);
+});})(G__10217_10220,G__10218_10221))
+;
+goog.object.set(G__10217_10220,G__10218_10221,G__10219_10222);
+Date.prototype.cljs$core$IEquiv$ = cljs.core.PROTOCOL_SENTINEL;
+
+Date.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (o,other){
+var o__$1 = this;
+return (((other instanceof Date)) && ((o__$1.valueOf() === other.valueOf())));
+});
+
+Date.prototype.cljs$core$IComparable$ = cljs.core.PROTOCOL_SENTINEL;
+
+Date.prototype.cljs$core$IComparable$_compare$arity$2 = (function (this$,other){
+var this$__$1 = this;
+if((other instanceof Date)){
+var G__10223 = this$__$1.valueOf();
+var G__10224 = other.valueOf();
+return goog.array.defaultCompare(G__10223,G__10224);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(this$__$1)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(other)].join('')));
+}
+});
+
+/**
+ * @interface
+ */
+cljs.core.Inst = function(){};
+
+cljs.core.inst_ms_STAR_ = (function cljs$core$inst_ms_STAR_(inst){
+if((((!((inst == null)))) && ((!((inst.cljs$core$Inst$inst_ms_STAR_$arity$1 == null)))))){
+return inst.cljs$core$Inst$inst_ms_STAR_$arity$1(inst);
+} else {
+var x__8502__auto__ = (((inst == null))?null:inst);
+var m__8503__auto__ = (cljs.core.inst_ms_STAR_[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(inst) : m__8503__auto__.call(null,inst));
+} else {
+var m__8503__auto____$1 = (cljs.core.inst_ms_STAR_["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(inst) : m__8503__auto____$1.call(null,inst));
+} else {
+throw cljs.core.missing_protocol("Inst.inst-ms*",inst);
+}
+}
+}
+});
+
+Date.prototype.cljs$core$Inst$ = cljs.core.PROTOCOL_SENTINEL;
+
+Date.prototype.cljs$core$Inst$inst_ms_STAR_$arity$1 = (function (inst){
+var inst__$1 = this;
+return inst__$1.getTime();
+});
+/**
+ * Return the number of milliseconds since January 1, 1970, 00:00:00 GMT
+ */
+cljs.core.inst_ms = (function cljs$core$inst_ms(inst){
+return cljs.core.inst_ms_STAR_(inst);
+});
+/**
+ * Return true if x satisfies Inst
+ */
+cljs.core.inst_QMARK_ = (function cljs$core$inst_QMARK_(x){
+if((!((x == null)))){
+if(((false) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$Inst$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.Inst,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.Inst,x);
+}
+});
+goog.object.set(cljs.core.IEquiv,"number",true);
+
+var G__10226_10229 = cljs.core._equiv;
+var G__10227_10230 = "number";
+var G__10228_10231 = ((function (G__10226_10229,G__10227_10230){
+return (function (x,o){
+return (x === o);
+});})(G__10226_10229,G__10227_10230))
+;
+goog.object.set(G__10226_10229,G__10227_10230,G__10228_10231);
+goog.object.set(cljs.core.Fn,"function",true);
+
+goog.object.set(cljs.core.IMeta,"function",true);
+
+var G__10232_10235 = cljs.core._meta;
+var G__10233_10236 = "function";
+var G__10234_10237 = ((function (G__10232_10235,G__10233_10236){
+return (function (_){
+return null;
+});})(G__10232_10235,G__10233_10236))
+;
+goog.object.set(G__10232_10235,G__10233_10236,G__10234_10237);
+goog.object.set(cljs.core.IHash,"_",true);
+
+var G__10238_10241 = cljs.core._hash;
+var G__10239_10242 = "_";
+var G__10240_10243 = ((function (G__10238_10241,G__10239_10242){
+return (function (o){
+return goog.getUid(o);
+});})(G__10238_10241,G__10239_10242))
+;
+goog.object.set(G__10238_10241,G__10239_10242,G__10240_10243);
+/**
+ * Returns a number one greater than num.
+ */
+cljs.core.inc = (function cljs$core$inc(x){
+return (x + (1));
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IDeref}
+*/
+cljs.core.Reduced = (function (val){
+this.val = val;
+this.cljs$lang$protocol_mask$partition0$ = 32768;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.Reduced.prototype.cljs$core$IDeref$_deref$arity$1 = (function (o){
+var self__ = this;
+var o__$1 = this;
+return self__.val;
+});
+
+cljs.core.Reduced.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"val","val",1769233139,null)], null);
+});
+
+cljs.core.Reduced.cljs$lang$type = true;
+
+cljs.core.Reduced.cljs$lang$ctorStr = "cljs.core/Reduced";
+
+cljs.core.Reduced.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Reduced");
+});
+
+/**
+ * Positional factory function for cljs.core/Reduced.
+ */
+cljs.core.__GT_Reduced = (function cljs$core$__GT_Reduced(val){
+return (new cljs.core.Reduced(val));
+});
+
+/**
+ * Wraps x in a way such that a reduce will terminate with the value x
+ */
+cljs.core.reduced = (function cljs$core$reduced(x){
+return (new cljs.core.Reduced(x));
+});
+/**
+ * Returns true if x is the result of a call to reduced
+ */
+cljs.core.reduced_QMARK_ = (function cljs$core$reduced_QMARK_(r){
+return (r instanceof cljs.core.Reduced);
+});
+/**
+ * If x is already reduced?, returns it, else returns (reduced x)
+ */
+cljs.core.ensure_reduced = (function cljs$core$ensure_reduced(x){
+if(cljs.core.reduced_QMARK_(x)){
+return x;
+} else {
+return cljs.core.reduced(x);
+}
+});
+/**
+ * If x is reduced?, returns (deref x), else returns x
+ */
+cljs.core.unreduced = (function cljs$core$unreduced(x){
+if(cljs.core.reduced_QMARK_(x)){
+return cljs.core.deref(x);
+} else {
+return x;
+}
+});
+/**
+ * Also reader macro: @var/@atom/@delay. Returns the
+ * most-recently-committed value of ref. When applied to a var
+ * or atom, returns its current state. When applied to a delay, forces
+ * it if not already forced. See also - realized?.
+ */
+cljs.core.deref = (function cljs$core$deref(o){
+return cljs.core._deref(o);
+});
+/**
+ * Accepts any collection which satisfies the ICount and IIndexed protocols and
+ * reduces them without incurring seq initialization
+ */
+cljs.core.ci_reduce = (function cljs$core$ci_reduce(var_args){
+var G__10245 = arguments.length;
+switch (G__10245) {
+case 2:
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2 = (function (cicoll,f){
+var cnt = cljs.core._count(cicoll);
+if((cnt === (0))){
+return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
+} else {
+var val = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(cicoll,(0));
+var n = (1);
+while(true){
+if((n < cnt)){
+var nval = (function (){var G__10246 = val;
+var G__10247 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(cicoll,n);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10246,G__10247) : f.call(null,G__10246,G__10247));
+})();
+if(cljs.core.reduced_QMARK_(nval)){
+return cljs.core.deref(nval);
+} else {
+var G__10253 = nval;
+var G__10254 = (n + (1));
+val = G__10253;
+n = G__10254;
+continue;
+}
+} else {
+return val;
+}
+break;
+}
+}
+});
+
+cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3 = (function (cicoll,f,val){
+var cnt = cljs.core._count(cicoll);
+var val__$1 = val;
+var n = (0);
+while(true){
+if((n < cnt)){
+var nval = (function (){var G__10248 = val__$1;
+var G__10249 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(cicoll,n);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10248,G__10249) : f.call(null,G__10248,G__10249));
+})();
+if(cljs.core.reduced_QMARK_(nval)){
+return cljs.core.deref(nval);
+} else {
+var G__10255 = nval;
+var G__10256 = (n + (1));
+val__$1 = G__10255;
+n = G__10256;
+continue;
+}
+} else {
+return val__$1;
+}
+break;
+}
+});
+
+cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$4 = (function (cicoll,f,val,idx){
+var cnt = cljs.core._count(cicoll);
+var val__$1 = val;
+var n = idx;
+while(true){
+if((n < cnt)){
+var nval = (function (){var G__10250 = val__$1;
+var G__10251 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(cicoll,n);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10250,G__10251) : f.call(null,G__10250,G__10251));
+})();
+if(cljs.core.reduced_QMARK_(nval)){
+return cljs.core.deref(nval);
+} else {
+var G__10257 = nval;
+var G__10258 = (n + (1));
+val__$1 = G__10257;
+n = G__10258;
+continue;
+}
+} else {
+return val__$1;
+}
+break;
+}
+});
+
+cljs.core.ci_reduce.cljs$lang$maxFixedArity = 4;
+
+cljs.core.array_reduce = (function cljs$core$array_reduce(var_args){
+var G__10260 = arguments.length;
+switch (G__10260) {
+case 2:
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$2 = (function (arr,f){
+var cnt = arr.length;
+if((arr.length === (0))){
+return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
+} else {
+var val = (arr[(0)]);
+var n = (1);
+while(true){
+if((n < cnt)){
+var nval = (function (){var G__10261 = val;
+var G__10262 = (arr[n]);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10261,G__10262) : f.call(null,G__10261,G__10262));
+})();
+if(cljs.core.reduced_QMARK_(nval)){
+return cljs.core.deref(nval);
+} else {
+var G__10268 = nval;
+var G__10269 = (n + (1));
+val = G__10268;
+n = G__10269;
+continue;
+}
+} else {
+return val;
+}
+break;
+}
+}
+});
+
+cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$3 = (function (arr,f,val){
+var cnt = arr.length;
+var val__$1 = val;
+var n = (0);
+while(true){
+if((n < cnt)){
+var nval = (function (){var G__10263 = val__$1;
+var G__10264 = (arr[n]);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10263,G__10264) : f.call(null,G__10263,G__10264));
+})();
+if(cljs.core.reduced_QMARK_(nval)){
+return cljs.core.deref(nval);
+} else {
+var G__10270 = nval;
+var G__10271 = (n + (1));
+val__$1 = G__10270;
+n = G__10271;
+continue;
+}
+} else {
+return val__$1;
+}
+break;
+}
+});
+
+cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4 = (function (arr,f,val,idx){
+var cnt = arr.length;
+var val__$1 = val;
+var n = idx;
+while(true){
+if((n < cnt)){
+var nval = (function (){var G__10265 = val__$1;
+var G__10266 = (arr[n]);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10265,G__10266) : f.call(null,G__10265,G__10266));
+})();
+if(cljs.core.reduced_QMARK_(nval)){
+return cljs.core.deref(nval);
+} else {
+var G__10272 = nval;
+var G__10273 = (n + (1));
+val__$1 = G__10272;
+n = G__10273;
+continue;
+}
+} else {
+return val__$1;
+}
+break;
+}
+});
+
+cljs.core.array_reduce.cljs$lang$maxFixedArity = 4;
+
+
+
+
+
+
+
+/**
+ * Returns true if coll implements count in constant time
+ */
+cljs.core.counted_QMARK_ = (function cljs$core$counted_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (2))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$ICounted$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.ICounted,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.ICounted,x);
+}
+});
+/**
+ * Returns true if coll implements nth in constant time
+ */
+cljs.core.indexed_QMARK_ = (function cljs$core$indexed_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (16))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IIndexed$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IIndexed,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IIndexed,x);
+}
+});
+cljs.core._indexOf = (function cljs$core$_indexOf(var_args){
+var G__10277 = arguments.length;
+switch (G__10277) {
+case 2:
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core._indexOf.cljs$core$IFn$_invoke$arity$2 = (function (coll,x){
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+
+cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3 = (function (coll,x,start){
+var len = cljs.core.count(coll);
+if((start >= len)){
+return (-1);
+} else {
+var idx = (((start > (0)))?start:(((start < (0)))?(function (){var x__8162__auto__ = (0);
+var y__8163__auto__ = (start + len);
+return ((x__8162__auto__ > y__8163__auto__) ? x__8162__auto__ : y__8163__auto__);
+})():start
+));
+while(true){
+if((idx < len)){
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.nth.cljs$core$IFn$_invoke$arity$2(coll,idx),x)){
+return idx;
+} else {
+var G__10279 = (idx + (1));
+idx = G__10279;
+continue;
+}
+} else {
+return (-1);
+}
+break;
+}
+}
+});
+
+cljs.core._indexOf.cljs$lang$maxFixedArity = 3;
+
+cljs.core._lastIndexOf = (function cljs$core$_lastIndexOf(var_args){
+var G__10281 = arguments.length;
+switch (G__10281) {
+case 2:
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$2 = (function (coll,x){
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+
+cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3 = (function (coll,x,start){
+var len = cljs.core.count(coll);
+if((len === (0))){
+return (-1);
+} else {
+var idx = (((start > (0)))?(function (){var x__8169__auto__ = (len - (1));
+var y__8170__auto__ = start;
+return ((x__8169__auto__ < y__8170__auto__) ? x__8169__auto__ : y__8170__auto__);
+})():(((start < (0)))?(len + start):start
+));
+while(true){
+if((idx >= (0))){
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.nth.cljs$core$IFn$_invoke$arity$2(coll,idx),x)){
+return idx;
+} else {
+var G__10283 = (idx - (1));
+idx = G__10283;
+continue;
+}
+} else {
+return (-1);
+}
+break;
+}
+}
+});
+
+cljs.core._lastIndexOf.cljs$lang$maxFixedArity = 3;
+
+
+/**
+* @constructor
+*/
+cljs.core.IndexedSeqIterator = (function (arr,i){
+this.arr = arr;
+this.i = i;
+});
+cljs.core.IndexedSeqIterator.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+return (self__.i < self__.arr.length);
+});
+
+cljs.core.IndexedSeqIterator.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+var ret = (self__.arr[self__.i]);
+self__.i = (self__.i + (1));
+
+return ret;
+});
+
+cljs.core.IndexedSeqIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"arr","arr",2115492975,null),cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.IndexedSeqIterator.cljs$lang$type = true;
+
+cljs.core.IndexedSeqIterator.cljs$lang$ctorStr = "cljs.core/IndexedSeqIterator";
+
+cljs.core.IndexedSeqIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/IndexedSeqIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/IndexedSeqIterator.
+ */
+cljs.core.__GT_IndexedSeqIterator = (function cljs$core$__GT_IndexedSeqIterator(arr,i){
+return (new cljs.core.IndexedSeqIterator(arr,i));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IIndexed}
+ * @implements {cljs.core.IReversible}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ASeq}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IIterable}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.IndexedSeq = (function (arr,i,meta){
+this.arr = arr;
+this.i = i;
+this.meta = meta;
+this.cljs$lang$protocol_mask$partition0$ = 166592766;
+this.cljs$lang$protocol_mask$partition1$ = 139264;
+});
+cljs.core.IndexedSeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.IndexedSeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.IndexedSeq.prototype.indexOf = (function() {
+var G__10284 = null;
+var G__10284__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__10284__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10284 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10284__1.call(this,x);
+case 2:
+return G__10284__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10284.cljs$core$IFn$_invoke$arity$1 = G__10284__1;
+G__10284.cljs$core$IFn$_invoke$arity$2 = G__10284__2;
+return G__10284;
+})()
+;
+
+cljs.core.IndexedSeq.prototype.lastIndexOf = (function() {
+var G__10285 = null;
+var G__10285__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__10285__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10285 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10285__1.call(this,x);
+case 2:
+return G__10285__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10285.cljs$core$IFn$_invoke$arity$1 = G__10285__1;
+G__10285.cljs$core$IFn$_invoke$arity$2 = G__10285__2;
+return G__10285;
+})()
+;
+
+cljs.core.IndexedSeq.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,n){
+var self__ = this;
+var coll__$1 = this;
+var i__$1 = (n + self__.i);
+if(((((0) <= i__$1)) && ((i__$1 < self__.arr.length)))){
+return (self__.arr[i__$1]);
+} else {
+throw (new Error("Index out of bounds"));
+}
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,n,not_found){
+var self__ = this;
+var coll__$1 = this;
+var i__$1 = (n + self__.i);
+if(((((0) <= i__$1)) && ((i__$1 < self__.arr.length)))){
+return (self__.arr[i__$1]);
+} else {
+return not_found;
+}
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.IndexedSeqIterator(self__.arr,self__.i));
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.IndexedSeq(self__.arr,self__.i,self__.meta));
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$INext$_next$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+if(((self__.i + (1)) < self__.arr.length)){
+return (new cljs.core.IndexedSeq(self__.arr,(self__.i + (1)),null));
+} else {
+return null;
+}
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$ICounted$_count$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+var x__8162__auto__ = (0);
+var y__8163__auto__ = (self__.arr.length - self__.i);
+return ((x__8162__auto__ > y__8163__auto__) ? x__8162__auto__ : y__8163__auto__);
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var c = coll__$1.cljs$core$ICounted$_count$arity$1(null);
+if((c > (0))){
+return (new cljs.core.RSeq(coll__$1,(c - (1)),null));
+} else {
+return null;
+}
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.hash_ordered_coll(coll__$1);
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.List.EMPTY;
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4(self__.arr,f,(self__.arr[self__.i]),(self__.i + (1)));
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4(self__.arr,f,start,self__.i);
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (self__.arr[self__.i]);
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+if(((self__.i + (1)) < self__.arr.length)){
+return (new cljs.core.IndexedSeq(self__.arr,(self__.i + (1)),null));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+if((self__.i < self__.arr.length)){
+return this$__$1;
+} else {
+return null;
+}
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,new_meta){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.IndexedSeq(self__.arr,self__.i,new_meta));
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.IndexedSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"arr","arr",2115492975,null),new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.Symbol(null,"meta","meta",-1154898805,null)], null);
+});
+
+cljs.core.IndexedSeq.cljs$lang$type = true;
+
+cljs.core.IndexedSeq.cljs$lang$ctorStr = "cljs.core/IndexedSeq";
+
+cljs.core.IndexedSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/IndexedSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/IndexedSeq.
+ */
+cljs.core.__GT_IndexedSeq = (function cljs$core$__GT_IndexedSeq(arr,i,meta){
+return (new cljs.core.IndexedSeq(arr,i,meta));
+});
+
+var G__10286_10289 = cljs.core.IndexedSeq.prototype;
+var G__10287_10290 = cljs.core.ITER_SYMBOL;
+var G__10288_10291 = ((function (G__10286_10289,G__10287_10290){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__10286_10289,G__10287_10290))
+;
+goog.object.set(G__10286_10289,G__10287_10290,G__10288_10291);
+/**
+ * Create seq from a primitive JavaScript Array-like.
+ */
+cljs.core.prim_seq = (function cljs$core$prim_seq(var_args){
+var G__10293 = arguments.length;
+switch (G__10293) {
+case 1:
+return cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$1 = (function (prim){
+return cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(prim,(0));
+});
+
+cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2 = (function (prim,i){
+if((i < prim.length)){
+return (new cljs.core.IndexedSeq(prim,i,null));
+} else {
+return null;
+}
+});
+
+cljs.core.prim_seq.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Create a seq from a JavaScript array.
+ */
+cljs.core.array_seq = (function cljs$core$array_seq(var_args){
+var G__10296 = arguments.length;
+switch (G__10296) {
+case 1:
+return cljs.core.array_seq.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.array_seq.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.array_seq.cljs$core$IFn$_invoke$arity$1 = (function (array){
+return cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(array,(0));
+});
+
+cljs.core.array_seq.cljs$core$IFn$_invoke$arity$2 = (function (array,i){
+return cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(array,i);
+});
+
+cljs.core.array_seq.cljs$lang$maxFixedArity = 2;
+
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.RSeq = (function (ci,i,meta){
+this.ci = ci;
+this.i = i;
+this.meta = meta;
+this.cljs$lang$protocol_mask$partition0$ = 32374990;
+this.cljs$lang$protocol_mask$partition1$ = 8192;
+});
+cljs.core.RSeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.RSeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.RSeq.prototype.indexOf = (function() {
+var G__10298 = null;
+var G__10298__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__10298__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10298 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10298__1.call(this,x);
+case 2:
+return G__10298__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10298.cljs$core$IFn$_invoke$arity$1 = G__10298__1;
+G__10298.cljs$core$IFn$_invoke$arity$2 = G__10298__2;
+return G__10298;
+})()
+;
+
+cljs.core.RSeq.prototype.lastIndexOf = (function() {
+var G__10299 = null;
+var G__10299__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__10299__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10299 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10299__1.call(this,x);
+case 2:
+return G__10299__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10299.cljs$core$IFn$_invoke$arity$1 = G__10299__1;
+G__10299.cljs$core$IFn$_invoke$arity$2 = G__10299__2;
+return G__10299;
+})()
+;
+
+cljs.core.RSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.RSeq.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.RSeq(self__.ci,self__.i,self__.meta));
+});
+
+cljs.core.RSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.i > (0))){
+return (new cljs.core.RSeq(self__.ci,(self__.i - (1)),null));
+} else {
+return null;
+}
+});
+
+cljs.core.RSeq.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (self__.i + (1));
+});
+
+cljs.core.RSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.hash_ordered_coll(coll__$1);
+});
+
+cljs.core.RSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.RSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.RSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (col,f){
+var self__ = this;
+var col__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,col__$1);
+});
+
+cljs.core.RSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (col,f,start){
+var self__ = this;
+var col__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,col__$1);
+});
+
+cljs.core.RSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.ci,self__.i);
+});
+
+cljs.core.RSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.i > (0))){
+return (new cljs.core.RSeq(self__.ci,(self__.i - (1)),null));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.RSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.RSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,new_meta){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.RSeq(self__.ci,self__.i,new_meta));
+});
+
+cljs.core.RSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.RSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"ci","ci",2049808339,null),new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.Symbol(null,"meta","meta",-1154898805,null)], null);
+});
+
+cljs.core.RSeq.cljs$lang$type = true;
+
+cljs.core.RSeq.cljs$lang$ctorStr = "cljs.core/RSeq";
+
+cljs.core.RSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/RSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/RSeq.
+ */
+cljs.core.__GT_RSeq = (function cljs$core$__GT_RSeq(ci,i,meta){
+return (new cljs.core.RSeq(ci,i,meta));
+});
+
+var G__10300_10303 = cljs.core.RSeq.prototype;
+var G__10301_10304 = cljs.core.ITER_SYMBOL;
+var G__10302_10305 = ((function (G__10300_10303,G__10301_10304){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__10300_10303,G__10301_10304))
+;
+goog.object.set(G__10300_10303,G__10301_10304,G__10302_10305);
+/**
+ * Same as (first (next x))
+ */
+cljs.core.second = (function cljs$core$second(coll){
+return cljs.core.first(cljs.core.next(coll));
+});
+/**
+ * Same as (first (first x))
+ */
+cljs.core.ffirst = (function cljs$core$ffirst(coll){
+return cljs.core.first(cljs.core.first(coll));
+});
+/**
+ * Same as (next (first x))
+ */
+cljs.core.nfirst = (function cljs$core$nfirst(coll){
+return cljs.core.next(cljs.core.first(coll));
+});
+/**
+ * Same as (first (next x))
+ */
+cljs.core.fnext = (function cljs$core$fnext(coll){
+return cljs.core.first(cljs.core.next(coll));
+});
+/**
+ * Same as (next (next x))
+ */
+cljs.core.nnext = (function cljs$core$nnext(coll){
+return cljs.core.next(cljs.core.next(coll));
+});
+/**
+ * Return the last item in coll, in linear time
+ */
+cljs.core.last = (function cljs$core$last(s){
+while(true){
+var sn = cljs.core.next(s);
+if((!((sn == null)))){
+var G__10306 = sn;
+s = G__10306;
+continue;
+} else {
+return cljs.core.first(s);
+}
+break;
+}
+});
+goog.object.set(cljs.core.IEquiv,"_",true);
+
+var G__10307_10310 = cljs.core._equiv;
+var G__10308_10311 = "_";
+var G__10309_10312 = ((function (G__10307_10310,G__10308_10311){
+return (function (x,o){
+return (x === o);
+});})(G__10307_10310,G__10308_10311))
+;
+goog.object.set(G__10307_10310,G__10308_10311,G__10309_10312);
+/**
+ * conj[oin]. Returns a new collection with the xs
+ * 'added'. (conj nil item) returns (item). The 'addition' may
+ * happen at different 'places' depending on the concrete type.
+ */
+cljs.core.conj = (function cljs$core$conj(var_args){
+var G__10317 = arguments.length;
+switch (G__10317) {
+case 0:
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10319 = arguments.length;
+var i__9001__auto___10320 = (0);
+while(true){
+if((i__9001__auto___10320 < len__9000__auto___10319)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10320]));
+
+var G__10321 = (i__9001__auto___10320 + (1));
+i__9001__auto___10320 = G__10321;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.conj.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.PersistentVector.EMPTY;
+});
+
+cljs.core.conj.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+return coll;
+});
+
+cljs.core.conj.cljs$core$IFn$_invoke$arity$2 = (function (coll,x){
+if((!((coll == null)))){
+return cljs.core._conj(coll,x);
+} else {
+return (new cljs.core.List(null,x,null,(1),null));
+}
+});
+
+cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic = (function (coll,x,xs){
+while(true){
+if(cljs.core.truth_(xs)){
+var G__10322 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(coll,x);
+var G__10323 = cljs.core.first(xs);
+var G__10324 = cljs.core.next(xs);
+coll = G__10322;
+x = G__10323;
+xs = G__10324;
+continue;
+} else {
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(coll,x);
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core.conj.cljs$lang$applyTo = (function (seq10314){
+var G__10315 = cljs.core.first(seq10314);
+var seq10314__$1 = cljs.core.next(seq10314);
+var G__10316 = cljs.core.first(seq10314__$1);
+var seq10314__$2 = cljs.core.next(seq10314__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10315,G__10316,seq10314__$2);
+});
+
+cljs.core.conj.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns an empty collection of the same category as coll, or nil
+ */
+cljs.core.empty = (function cljs$core$empty(coll){
+if((coll == null)){
+return null;
+} else {
+return cljs.core._empty(coll);
+}
+});
+cljs.core.accumulating_seq_count = (function cljs$core$accumulating_seq_count(coll){
+var s = cljs.core.seq(coll);
+var acc = (0);
+while(true){
+if(cljs.core.counted_QMARK_(s)){
+return (acc + cljs.core._count(s));
+} else {
+var G__10325 = cljs.core.next(s);
+var G__10326 = (acc + (1));
+s = G__10325;
+acc = G__10326;
+continue;
+}
+break;
+}
+});
+/**
+ * Returns the number of items in the collection. (count nil) returns
+ * 0. Also works on strings, arrays, and Maps
+ */
+cljs.core.count = (function cljs$core$count(coll){
+if((!((coll == null)))){
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (2))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ICounted$))))?true:false):false)){
+return coll.cljs$core$ICounted$_count$arity$1(null);
+} else {
+if(cljs.core.array_QMARK_(coll)){
+return coll.length;
+} else {
+if(typeof coll === 'string'){
+return coll.length;
+} else {
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (8388608))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ISeqable$))))?true:false):false)){
+return cljs.core.accumulating_seq_count(coll);
+} else {
+return cljs.core._count(coll);
+
+}
+}
+}
+}
+} else {
+return (0);
+}
+});
+cljs.core.linear_traversal_nth = (function cljs$core$linear_traversal_nth(var_args){
+var G__10330 = arguments.length;
+switch (G__10330) {
+case 2:
+return cljs.core.linear_traversal_nth.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.linear_traversal_nth.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.linear_traversal_nth.cljs$core$IFn$_invoke$arity$2 = (function (coll,n){
+while(true){
+if((coll == null)){
+throw (new Error("Index out of bounds"));
+} else {
+if((n === (0))){
+if(cljs.core.seq(coll)){
+return cljs.core.first(coll);
+} else {
+throw (new Error("Index out of bounds"));
+}
+} else {
+if(cljs.core.indexed_QMARK_(coll)){
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(coll,n);
+} else {
+if(cljs.core.seq(coll)){
+var G__10332 = cljs.core.next(coll);
+var G__10333 = (n - (1));
+coll = G__10332;
+n = G__10333;
+continue;
+} else {
+throw (new Error("Index out of bounds"));
+
+}
+}
+}
+}
+break;
+}
+});
+
+cljs.core.linear_traversal_nth.cljs$core$IFn$_invoke$arity$3 = (function (coll,n,not_found){
+while(true){
+if((coll == null)){
+return not_found;
+} else {
+if((n === (0))){
+if(cljs.core.seq(coll)){
+return cljs.core.first(coll);
+} else {
+return not_found;
+}
+} else {
+if(cljs.core.indexed_QMARK_(coll)){
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(coll,n,not_found);
+} else {
+if(cljs.core.seq(coll)){
+var G__10334 = cljs.core.next(coll);
+var G__10335 = (n - (1));
+var G__10336 = not_found;
+coll = G__10334;
+n = G__10335;
+not_found = G__10336;
+continue;
+} else {
+return not_found;
+
+}
+}
+}
+}
+break;
+}
+});
+
+cljs.core.linear_traversal_nth.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Returns the value at the index. get returns nil if index out of
+ * bounds, nth throws an exception unless not-found is supplied. nth
+ * also works for strings, arrays, regex Matchers and Lists, and,
+ * in O(n) time, for sequences.
+ */
+cljs.core.nth = (function cljs$core$nth(var_args){
+var G__10338 = arguments.length;
+switch (G__10338) {
+case 2:
+return cljs.core.nth.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.nth.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.nth.cljs$core$IFn$_invoke$arity$2 = (function (coll,n){
+if((!(typeof n === 'number'))){
+throw (new Error("Index argument to nth must be a number"));
+} else {
+if((coll == null)){
+return coll;
+} else {
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (16))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$IIndexed$))))?true:false):false)){
+return coll.cljs$core$IIndexed$_nth$arity$2(null,n);
+} else {
+if(cljs.core.array_QMARK_(coll)){
+if((((n >= (0))) && ((n < coll.length)))){
+return (coll[n]);
+} else {
+throw (new Error("Index out of bounds"));
+}
+} else {
+if(typeof coll === 'string'){
+if((((n >= (0))) && ((n < coll.length)))){
+return coll.charAt(n);
+} else {
+throw (new Error("Index out of bounds"));
+}
+} else {
+if((function (){var or__7806__auto__ = (((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ISeq$))))?true:false):false);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+if((!((coll == null)))){
+if((((coll.cljs$lang$protocol_mask$partition0$ & (16777216))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ISequential$)))){
+return true;
+} else {
+return false;
+}
+} else {
+return false;
+}
+}
+})()){
+if((n < (0))){
+throw (new Error("Index out of bounds"));
+} else {
+return cljs.core.linear_traversal_nth.cljs$core$IFn$_invoke$arity$2(coll,n);
+}
+} else {
+if(cljs.core.native_satisfies_QMARK_(cljs.core.IIndexed,coll)){
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(coll,n);
+} else {
+throw (new Error(["nth not supported on this type ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.type__GT_str(cljs.core.type(coll)))].join('')));
+
+}
+}
+}
+}
+}
+}
+}
+});
+
+cljs.core.nth.cljs$core$IFn$_invoke$arity$3 = (function (coll,n,not_found){
+if((!(typeof n === 'number'))){
+throw (new Error("Index argument to nth must be a number."));
+} else {
+if((coll == null)){
+return not_found;
+} else {
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (16))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$IIndexed$))))?true:false):false)){
+return coll.cljs$core$IIndexed$_nth$arity$3(null,n,not_found);
+} else {
+if(cljs.core.array_QMARK_(coll)){
+if((((n >= (0))) && ((n < coll.length)))){
+return (coll[n]);
+} else {
+return not_found;
+}
+} else {
+if(typeof coll === 'string'){
+if((((n >= (0))) && ((n < coll.length)))){
+return coll.charAt(n);
+} else {
+return not_found;
+}
+} else {
+if((function (){var or__7806__auto__ = (((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ISeq$))))?true:false):false);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+if((!((coll == null)))){
+if((((coll.cljs$lang$protocol_mask$partition0$ & (16777216))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ISequential$)))){
+return true;
+} else {
+return false;
+}
+} else {
+return false;
+}
+}
+})()){
+if((n < (0))){
+return not_found;
+} else {
+return cljs.core.linear_traversal_nth.cljs$core$IFn$_invoke$arity$3(coll,n,not_found);
+}
+} else {
+if(cljs.core.native_satisfies_QMARK_(cljs.core.IIndexed,coll)){
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(coll,n,not_found);
+} else {
+throw (new Error(["nth not supported on this type ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.type__GT_str(cljs.core.type(coll)))].join('')));
+
+}
+}
+}
+}
+}
+}
+}
+});
+
+cljs.core.nth.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Returns the nth rest of coll, coll when n is 0.
+ */
+cljs.core.nthrest = (function cljs$core$nthrest(coll,n){
+var n__$1 = n;
+var xs = coll;
+while(true){
+var temp__4655__auto__ = (((n__$1 > (0))) && (cljs.core.seq(xs)));
+if(temp__4655__auto__){
+var xs__$1 = temp__4655__auto__;
+var G__10348 = (n__$1 - (1));
+var G__10349 = cljs.core.rest(xs__$1);
+n__$1 = G__10348;
+xs = G__10349;
+continue;
+} else {
+return xs;
+}
+break;
+}
+});
+/**
+ * Returns the value mapped to key, not-found or nil if key not present.
+ */
+cljs.core.get = (function cljs$core$get(var_args){
+var G__10351 = arguments.length;
+switch (G__10351) {
+case 2:
+return cljs.core.get.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.get.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.get.cljs$core$IFn$_invoke$arity$2 = (function (o,k){
+if((o == null)){
+return null;
+} else {
+if((((!((o == null))))?(((((o.cljs$lang$protocol_mask$partition0$ & (256))) || ((cljs.core.PROTOCOL_SENTINEL === o.cljs$core$ILookup$))))?true:false):false)){
+return o.cljs$core$ILookup$_lookup$arity$2(null,k);
+} else {
+if(cljs.core.array_QMARK_(o)){
+if((((!((k == null)))) && ((k < o.length)))){
+return (o[(k | (0))]);
+} else {
+return null;
+}
+} else {
+if(typeof o === 'string'){
+if((((!((k == null)))) && ((k < o.length)))){
+return o.charAt((k | (0)));
+} else {
+return null;
+}
+} else {
+if(cljs.core.native_satisfies_QMARK_(cljs.core.ILookup,o)){
+return cljs.core._lookup.cljs$core$IFn$_invoke$arity$2(o,k);
+} else {
+return null;
+
+}
+}
+}
+}
+}
+});
+
+cljs.core.get.cljs$core$IFn$_invoke$arity$3 = (function (o,k,not_found){
+if((!((o == null)))){
+if((((!((o == null))))?(((((o.cljs$lang$protocol_mask$partition0$ & (256))) || ((cljs.core.PROTOCOL_SENTINEL === o.cljs$core$ILookup$))))?true:false):false)){
+return o.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+} else {
+if(cljs.core.array_QMARK_(o)){
+if((((!((k == null)))) && ((k >= (0))) && ((k < o.length)))){
+return (o[(k | (0))]);
+} else {
+return not_found;
+}
+} else {
+if(typeof o === 'string'){
+if((((!((k == null)))) && ((k >= (0))) && ((k < o.length)))){
+return o.charAt((k | (0)));
+} else {
+return not_found;
+}
+} else {
+if(cljs.core.native_satisfies_QMARK_(cljs.core.ILookup,o)){
+return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(o,k,not_found);
+} else {
+return not_found;
+
+}
+}
+}
+}
+} else {
+return not_found;
+}
+});
+
+cljs.core.get.cljs$lang$maxFixedArity = 3;
+
+
+
+/**
+ * assoc[iate]. When applied to a map, returns a new map of the
+ * same (hashed/sorted) type, that contains the mapping of key(s) to
+ * val(s). When applied to a vector, returns a new vector that
+ * contains val at index.
+ */
+cljs.core.assoc = (function cljs$core$assoc(var_args){
+var G__10360 = arguments.length;
+switch (G__10360) {
+case 3:
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10362 = arguments.length;
+var i__9001__auto___10363 = (0);
+while(true){
+if((i__9001__auto___10363 < len__9000__auto___10362)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10363]));
+
+var G__10364 = (i__9001__auto___10363 + (1));
+i__9001__auto___10363 = G__10364;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.assoc.cljs$core$IFn$_invoke$arity$3 = (function (coll,k,v){
+if((!((coll == null)))){
+return cljs.core._assoc(coll,k,v);
+} else {
+return cljs.core.PersistentArrayMap.createAsIfByAssoc([k,v]);
+}
+});
+
+cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic = (function (coll,k,v,kvs){
+while(true){
+var ret = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(coll,k,v);
+if(cljs.core.truth_(kvs)){
+var G__10365 = ret;
+var G__10366 = cljs.core.first(kvs);
+var G__10367 = cljs.core.second(kvs);
+var G__10368 = cljs.core.nnext(kvs);
+coll = G__10365;
+k = G__10366;
+v = G__10367;
+kvs = G__10368;
+continue;
+} else {
+return ret;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core.assoc.cljs$lang$applyTo = (function (seq10356){
+var G__10357 = cljs.core.first(seq10356);
+var seq10356__$1 = cljs.core.next(seq10356);
+var G__10358 = cljs.core.first(seq10356__$1);
+var seq10356__$2 = cljs.core.next(seq10356__$1);
+var G__10359 = cljs.core.first(seq10356__$2);
+var seq10356__$3 = cljs.core.next(seq10356__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10357,G__10358,G__10359,seq10356__$3);
+});
+
+cljs.core.assoc.cljs$lang$maxFixedArity = (3);
+
+/**
+ * dissoc[iate]. Returns a new map of the same (hashed/sorted) type,
+ * that does not contain a mapping for key(s).
+ */
+cljs.core.dissoc = (function cljs$core$dissoc(var_args){
+var G__10373 = arguments.length;
+switch (G__10373) {
+case 1:
+return cljs.core.dissoc.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10375 = arguments.length;
+var i__9001__auto___10376 = (0);
+while(true){
+if((i__9001__auto___10376 < len__9000__auto___10375)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10376]));
+
+var G__10377 = (i__9001__auto___10376 + (1));
+i__9001__auto___10376 = G__10377;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.dissoc.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+return coll;
+});
+
+cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2 = (function (coll,k){
+if((coll == null)){
+return null;
+} else {
+return cljs.core._dissoc(coll,k);
+}
+});
+
+cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic = (function (coll,k,ks){
+while(true){
+if((coll == null)){
+return null;
+} else {
+var ret = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(coll,k);
+if(cljs.core.truth_(ks)){
+var G__10378 = ret;
+var G__10379 = cljs.core.first(ks);
+var G__10380 = cljs.core.next(ks);
+coll = G__10378;
+k = G__10379;
+ks = G__10380;
+continue;
+} else {
+return ret;
+}
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core.dissoc.cljs$lang$applyTo = (function (seq10370){
+var G__10371 = cljs.core.first(seq10370);
+var seq10370__$1 = cljs.core.next(seq10370);
+var G__10372 = cljs.core.first(seq10370__$1);
+var seq10370__$2 = cljs.core.next(seq10370__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10371,G__10372,seq10370__$2);
+});
+
+cljs.core.dissoc.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Return true if f is a JavaScript function or satisfies the Fn protocol.
+ */
+cljs.core.fn_QMARK_ = (function cljs$core$fn_QMARK_(f){
+var or__7806__auto__ = goog.isFunction(f);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+if((!((f == null)))){
+if(((false) || ((cljs.core.PROTOCOL_SENTINEL === f.cljs$core$Fn$)))){
+return true;
+} else {
+if((!f.cljs$lang$protocol_mask$partition$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.Fn,f);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.Fn,f);
+}
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.Fn}
+ * @implements {cljs.core.IWithMeta}
+*/
+cljs.core.MetaFn = (function (afn,meta){
+this.afn = afn;
+this.meta = meta;
+this.cljs$lang$protocol_mask$partition0$ = 393217;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.MetaFn.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.meta;
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_,new_meta){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.MetaFn(self__.afn,new_meta));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$Fn$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.MetaFn.prototype.call = (function() {
+var G__10384 = null;
+var G__10384__1 = (function (self__){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$0 ? self__.afn.cljs$core$IFn$_invoke$arity$0() : self__.afn.call(null));
+});
+var G__10384__2 = (function (self__,a){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$1 ? self__.afn.cljs$core$IFn$_invoke$arity$1(a) : self__.afn.call(null,a));
+});
+var G__10384__3 = (function (self__,a,b){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$2 ? self__.afn.cljs$core$IFn$_invoke$arity$2(a,b) : self__.afn.call(null,a,b));
+});
+var G__10384__4 = (function (self__,a,b,c){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$3 ? self__.afn.cljs$core$IFn$_invoke$arity$3(a,b,c) : self__.afn.call(null,a,b,c));
+});
+var G__10384__5 = (function (self__,a,b,c,d){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$4 ? self__.afn.cljs$core$IFn$_invoke$arity$4(a,b,c,d) : self__.afn.call(null,a,b,c,d));
+});
+var G__10384__6 = (function (self__,a,b,c,d,e){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$5 ? self__.afn.cljs$core$IFn$_invoke$arity$5(a,b,c,d,e) : self__.afn.call(null,a,b,c,d,e));
+});
+var G__10384__7 = (function (self__,a,b,c,d,e,f){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$6 ? self__.afn.cljs$core$IFn$_invoke$arity$6(a,b,c,d,e,f) : self__.afn.call(null,a,b,c,d,e,f));
+});
+var G__10384__8 = (function (self__,a,b,c,d,e,f,g){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$7 ? self__.afn.cljs$core$IFn$_invoke$arity$7(a,b,c,d,e,f,g) : self__.afn.call(null,a,b,c,d,e,f,g));
+});
+var G__10384__9 = (function (self__,a,b,c,d,e,f,g,h){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$8 ? self__.afn.cljs$core$IFn$_invoke$arity$8(a,b,c,d,e,f,g,h) : self__.afn.call(null,a,b,c,d,e,f,g,h));
+});
+var G__10384__10 = (function (self__,a,b,c,d,e,f,g,h,i){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$9 ? self__.afn.cljs$core$IFn$_invoke$arity$9(a,b,c,d,e,f,g,h,i) : self__.afn.call(null,a,b,c,d,e,f,g,h,i));
+});
+var G__10384__11 = (function (self__,a,b,c,d,e,f,g,h,i,j){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$10 ? self__.afn.cljs$core$IFn$_invoke$arity$10(a,b,c,d,e,f,g,h,i,j) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j));
+});
+var G__10384__12 = (function (self__,a,b,c,d,e,f,g,h,i,j,k){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$11 ? self__.afn.cljs$core$IFn$_invoke$arity$11(a,b,c,d,e,f,g,h,i,j,k) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k));
+});
+var G__10384__13 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$12 ? self__.afn.cljs$core$IFn$_invoke$arity$12(a,b,c,d,e,f,g,h,i,j,k,l) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l));
+});
+var G__10384__14 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$13 ? self__.afn.cljs$core$IFn$_invoke$arity$13(a,b,c,d,e,f,g,h,i,j,k,l,m) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m));
+});
+var G__10384__15 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$14 ? self__.afn.cljs$core$IFn$_invoke$arity$14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+});
+var G__10384__16 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$15 ? self__.afn.cljs$core$IFn$_invoke$arity$15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+});
+var G__10384__17 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$16 ? self__.afn.cljs$core$IFn$_invoke$arity$16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+});
+var G__10384__18 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$17 ? self__.afn.cljs$core$IFn$_invoke$arity$17(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+});
+var G__10384__19 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$18 ? self__.afn.cljs$core$IFn$_invoke$arity$18(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+});
+var G__10384__20 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$19 ? self__.afn.cljs$core$IFn$_invoke$arity$19(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+});
+var G__10384__21 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return (self__.afn.cljs$core$IFn$_invoke$arity$20 ? self__.afn.cljs$core$IFn$_invoke$arity$20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+});
+var G__10384__22 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+var self__ = this;
+var self____$1 = this;
+var _ = self____$1;
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(self__.afn,a,b,c,d,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
+});
+G__10384 = function(self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+switch(arguments.length){
+case 1:
+return G__10384__1.call(this,self__);
+case 2:
+return G__10384__2.call(this,self__,a);
+case 3:
+return G__10384__3.call(this,self__,a,b);
+case 4:
+return G__10384__4.call(this,self__,a,b,c);
+case 5:
+return G__10384__5.call(this,self__,a,b,c,d);
+case 6:
+return G__10384__6.call(this,self__,a,b,c,d,e);
+case 7:
+return G__10384__7.call(this,self__,a,b,c,d,e,f);
+case 8:
+return G__10384__8.call(this,self__,a,b,c,d,e,f,g);
+case 9:
+return G__10384__9.call(this,self__,a,b,c,d,e,f,g,h);
+case 10:
+return G__10384__10.call(this,self__,a,b,c,d,e,f,g,h,i);
+case 11:
+return G__10384__11.call(this,self__,a,b,c,d,e,f,g,h,i,j);
+case 12:
+return G__10384__12.call(this,self__,a,b,c,d,e,f,g,h,i,j,k);
+case 13:
+return G__10384__13.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l);
+case 14:
+return G__10384__14.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m);
+case 15:
+return G__10384__15.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
+case 16:
+return G__10384__16.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
+case 17:
+return G__10384__17.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
+case 18:
+return G__10384__18.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
+case 19:
+return G__10384__19.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
+case 20:
+return G__10384__20.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
+case 21:
+return G__10384__21.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
+case 22:
+return G__10384__22.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__10384.cljs$core$IFn$_invoke$arity$1 = G__10384__1;
+G__10384.cljs$core$IFn$_invoke$arity$2 = G__10384__2;
+G__10384.cljs$core$IFn$_invoke$arity$3 = G__10384__3;
+G__10384.cljs$core$IFn$_invoke$arity$4 = G__10384__4;
+G__10384.cljs$core$IFn$_invoke$arity$5 = G__10384__5;
+G__10384.cljs$core$IFn$_invoke$arity$6 = G__10384__6;
+G__10384.cljs$core$IFn$_invoke$arity$7 = G__10384__7;
+G__10384.cljs$core$IFn$_invoke$arity$8 = G__10384__8;
+G__10384.cljs$core$IFn$_invoke$arity$9 = G__10384__9;
+G__10384.cljs$core$IFn$_invoke$arity$10 = G__10384__10;
+G__10384.cljs$core$IFn$_invoke$arity$11 = G__10384__11;
+G__10384.cljs$core$IFn$_invoke$arity$12 = G__10384__12;
+G__10384.cljs$core$IFn$_invoke$arity$13 = G__10384__13;
+G__10384.cljs$core$IFn$_invoke$arity$14 = G__10384__14;
+G__10384.cljs$core$IFn$_invoke$arity$15 = G__10384__15;
+G__10384.cljs$core$IFn$_invoke$arity$16 = G__10384__16;
+G__10384.cljs$core$IFn$_invoke$arity$17 = G__10384__17;
+G__10384.cljs$core$IFn$_invoke$arity$18 = G__10384__18;
+G__10384.cljs$core$IFn$_invoke$arity$19 = G__10384__19;
+G__10384.cljs$core$IFn$_invoke$arity$20 = G__10384__20;
+G__10384.cljs$core$IFn$_invoke$arity$21 = G__10384__21;
+G__10384.cljs$core$IFn$_invoke$arity$22 = G__10384__22;
+return G__10384;
+})()
+;
+
+cljs.core.MetaFn.prototype.apply = (function (self__,args10383){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args10383)));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$0 = (function (){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$0 ? self__.afn.cljs$core$IFn$_invoke$arity$0() : self__.afn.call(null));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$1 = (function (a){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$1 ? self__.afn.cljs$core$IFn$_invoke$arity$1(a) : self__.afn.call(null,a));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$2 = (function (a,b){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$2 ? self__.afn.cljs$core$IFn$_invoke$arity$2(a,b) : self__.afn.call(null,a,b));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$3 = (function (a,b,c){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$3 ? self__.afn.cljs$core$IFn$_invoke$arity$3(a,b,c) : self__.afn.call(null,a,b,c));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$4 = (function (a,b,c,d){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$4 ? self__.afn.cljs$core$IFn$_invoke$arity$4(a,b,c,d) : self__.afn.call(null,a,b,c,d));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$5 = (function (a,b,c,d,e){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$5 ? self__.afn.cljs$core$IFn$_invoke$arity$5(a,b,c,d,e) : self__.afn.call(null,a,b,c,d,e));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$6 = (function (a,b,c,d,e,f){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$6 ? self__.afn.cljs$core$IFn$_invoke$arity$6(a,b,c,d,e,f) : self__.afn.call(null,a,b,c,d,e,f));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$7 = (function (a,b,c,d,e,f,g){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$7 ? self__.afn.cljs$core$IFn$_invoke$arity$7(a,b,c,d,e,f,g) : self__.afn.call(null,a,b,c,d,e,f,g));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$8 = (function (a,b,c,d,e,f,g,h){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$8 ? self__.afn.cljs$core$IFn$_invoke$arity$8(a,b,c,d,e,f,g,h) : self__.afn.call(null,a,b,c,d,e,f,g,h));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$9 = (function (a,b,c,d,e,f,g,h,i){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$9 ? self__.afn.cljs$core$IFn$_invoke$arity$9(a,b,c,d,e,f,g,h,i) : self__.afn.call(null,a,b,c,d,e,f,g,h,i));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$10 = (function (a,b,c,d,e,f,g,h,i,j){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$10 ? self__.afn.cljs$core$IFn$_invoke$arity$10(a,b,c,d,e,f,g,h,i,j) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$11 = (function (a,b,c,d,e,f,g,h,i,j,k){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$11 ? self__.afn.cljs$core$IFn$_invoke$arity$11(a,b,c,d,e,f,g,h,i,j,k) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$12 = (function (a,b,c,d,e,f,g,h,i,j,k,l){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$12 ? self__.afn.cljs$core$IFn$_invoke$arity$12(a,b,c,d,e,f,g,h,i,j,k,l) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$13 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$13 ? self__.afn.cljs$core$IFn$_invoke$arity$13(a,b,c,d,e,f,g,h,i,j,k,l,m) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$14 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$14 ? self__.afn.cljs$core$IFn$_invoke$arity$14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$15 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$15 ? self__.afn.cljs$core$IFn$_invoke$arity$15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$16 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$16 ? self__.afn.cljs$core$IFn$_invoke$arity$16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$17 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$17 ? self__.afn.cljs$core$IFn$_invoke$arity$17(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$18 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$18 ? self__.afn.cljs$core$IFn$_invoke$arity$18(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$19 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$19 ? self__.afn.cljs$core$IFn$_invoke$arity$19(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$20 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
+var self__ = this;
+var _ = this;
+return (self__.afn.cljs$core$IFn$_invoke$arity$20 ? self__.afn.cljs$core$IFn$_invoke$arity$20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : self__.afn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+});
+
+cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$21 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+var self__ = this;
+var _ = this;
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(self__.afn,a,b,c,d,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
+});
+
+cljs.core.MetaFn.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"afn","afn",216963467,null),new cljs.core.Symbol(null,"meta","meta",-1154898805,null)], null);
+});
+
+cljs.core.MetaFn.cljs$lang$type = true;
+
+cljs.core.MetaFn.cljs$lang$ctorStr = "cljs.core/MetaFn";
+
+cljs.core.MetaFn.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/MetaFn");
+});
+
+/**
+ * Positional factory function for cljs.core/MetaFn.
+ */
+cljs.core.__GT_MetaFn = (function cljs$core$__GT_MetaFn(afn,meta){
+return (new cljs.core.MetaFn(afn,meta));
+});
+
+/**
+ * Returns an object of the same type and value as obj, with
+ * map m as its metadata.
+ */
+cljs.core.with_meta = (function cljs$core$with_meta(o,meta){
+if(goog.isFunction(o)){
+return (new cljs.core.MetaFn(o,meta));
+} else {
+if((o == null)){
+return null;
+} else {
+return cljs.core._with_meta(o,meta);
+}
+}
+});
+/**
+ * Returns the metadata of obj, returns nil if there is no metadata.
+ */
+cljs.core.meta = (function cljs$core$meta(o){
+if((function (){var and__7791__auto__ = (!((o == null)));
+if(and__7791__auto__){
+if((!((o == null)))){
+if((((o.cljs$lang$protocol_mask$partition0$ & (131072))) || ((cljs.core.PROTOCOL_SENTINEL === o.cljs$core$IMeta$)))){
+return true;
+} else {
+if((!o.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IMeta,o);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IMeta,o);
+}
+} else {
+return and__7791__auto__;
+}
+})()){
+return cljs.core._meta(o);
+} else {
+return null;
+}
+});
+/**
+ * For a list or queue, same as first, for a vector, same as, but much
+ * more efficient than, last. If the collection is empty, returns nil.
+ */
+cljs.core.peek = (function cljs$core$peek(coll){
+if((coll == null)){
+return null;
+} else {
+return cljs.core._peek(coll);
+}
+});
+/**
+ * For a list or queue, returns a new list/queue without the first
+ * item, for a vector, returns a new vector without the last item.
+ * Note - not the same as next/butlast.
+ */
+cljs.core.pop = (function cljs$core$pop(coll){
+if((coll == null)){
+return null;
+} else {
+return cljs.core._pop(coll);
+}
+});
+/**
+ * disj[oin]. Returns a new set of the same (hashed/sorted) type, that
+ * does not contain key(s).
+ */
+cljs.core.disj = (function cljs$core$disj(var_args){
+var G__10391 = arguments.length;
+switch (G__10391) {
+case 1:
+return cljs.core.disj.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.disj.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10393 = arguments.length;
+var i__9001__auto___10394 = (0);
+while(true){
+if((i__9001__auto___10394 < len__9000__auto___10393)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10394]));
+
+var G__10395 = (i__9001__auto___10394 + (1));
+i__9001__auto___10394 = G__10395;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.disj.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.disj.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+return coll;
+});
+
+cljs.core.disj.cljs$core$IFn$_invoke$arity$2 = (function (coll,k){
+if((coll == null)){
+return null;
+} else {
+return cljs.core._disjoin(coll,k);
+}
+});
+
+cljs.core.disj.cljs$core$IFn$_invoke$arity$variadic = (function (coll,k,ks){
+while(true){
+if((coll == null)){
+return null;
+} else {
+var ret = cljs.core.disj.cljs$core$IFn$_invoke$arity$2(coll,k);
+if(cljs.core.truth_(ks)){
+var G__10396 = ret;
+var G__10397 = cljs.core.first(ks);
+var G__10398 = cljs.core.next(ks);
+coll = G__10396;
+k = G__10397;
+ks = G__10398;
+continue;
+} else {
+return ret;
+}
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core.disj.cljs$lang$applyTo = (function (seq10388){
+var G__10389 = cljs.core.first(seq10388);
+var seq10388__$1 = cljs.core.next(seq10388);
+var G__10390 = cljs.core.first(seq10388__$1);
+var seq10388__$2 = cljs.core.next(seq10388__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10389,G__10390,seq10388__$2);
+});
+
+cljs.core.disj.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns true if coll has no items - same as (not (seq coll)).
+ * Please use the idiom (seq x) rather than (not (empty? x))
+ */
+cljs.core.empty_QMARK_ = (function cljs$core$empty_QMARK_(coll){
+return (((coll == null)) || (cljs.core.not(cljs.core.seq(coll))));
+});
+/**
+ * Returns true if x satisfies ICollection
+ */
+cljs.core.coll_QMARK_ = (function cljs$core$coll_QMARK_(x){
+if((x == null)){
+return false;
+} else {
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (8))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$ICollection$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.ICollection,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.ICollection,x);
+}
+}
+});
+/**
+ * Returns true if x satisfies ISet
+ */
+cljs.core.set_QMARK_ = (function cljs$core$set_QMARK_(x){
+if((x == null)){
+return false;
+} else {
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (4096))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$ISet$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.ISet,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.ISet,x);
+}
+}
+});
+/**
+ * Returns true if coll implements IAssociative
+ */
+cljs.core.associative_QMARK_ = (function cljs$core$associative_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (512))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IAssociative$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IAssociative,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IAssociative,x);
+}
+});
+/**
+ * Returns true if coll implements IFind
+ */
+cljs.core.ifind_QMARK_ = (function cljs$core$ifind_QMARK_(x){
+if((!((x == null)))){
+if(((false) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IFind$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IFind,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IFind,x);
+}
+});
+/**
+ * Returns true if coll satisfies ISequential
+ */
+cljs.core.sequential_QMARK_ = (function cljs$core$sequential_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (16777216))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$ISequential$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.ISequential,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.ISequential,x);
+}
+});
+/**
+ * Returns true if coll satisfies ISorted
+ */
+cljs.core.sorted_QMARK_ = (function cljs$core$sorted_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (268435456))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$ISorted$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.ISorted,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.ISorted,x);
+}
+});
+/**
+ * Returns true if coll satisfies IReduce
+ */
+cljs.core.reduceable_QMARK_ = (function cljs$core$reduceable_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (524288))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IReduce$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IReduce,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IReduce,x);
+}
+});
+/**
+ * Return true if x satisfies IMap
+ */
+cljs.core.map_QMARK_ = (function cljs$core$map_QMARK_(x){
+if((x == null)){
+return false;
+} else {
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (1024))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IMap$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IMap,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IMap,x);
+}
+}
+});
+/**
+ * Return true if x satisfies IRecord
+ */
+cljs.core.record_QMARK_ = (function cljs$core$record_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (67108864))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IRecord$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IRecord,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IRecord,x);
+}
+});
+/**
+ * Return true if x satisfies IVector
+ */
+cljs.core.vector_QMARK_ = (function cljs$core$vector_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (16384))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IVector$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IVector,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IVector,x);
+}
+});
+
+/**
+ * Return true if x is satisfies IChunkedSeq.
+ */
+cljs.core.chunked_seq_QMARK_ = (function cljs$core$chunked_seq_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition1$ & (512))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IChunkedSeq$)))){
+return true;
+} else {
+return false;
+}
+} else {
+return false;
+}
+});
+/**
+ * Create JavaSript object from an even number arguments representing
+ * interleaved keys and values.
+ */
+cljs.core.js_obj = (function cljs$core$js_obj(var_args){
+var G__10412 = arguments.length;
+switch (G__10412) {
+case 0:
+return cljs.core.js_obj.cljs$core$IFn$_invoke$arity$0();
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10416 = arguments.length;
+var i__9001__auto___10417 = (0);
+while(true){
+if((i__9001__auto___10417 < len__9000__auto___10416)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10417]));
+
+var G__10418 = (i__9001__auto___10417 + (1));
+i__9001__auto___10417 = G__10418;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((0)),(0),null));
+return cljs.core.js_obj.cljs$core$IFn$_invoke$arity$variadic(argseq__9026__auto__);
+
+}
+});
+
+cljs.core.js_obj.cljs$core$IFn$_invoke$arity$0 = (function (){
+return {};
+});
+
+cljs.core.js_obj.cljs$core$IFn$_invoke$arity$variadic = (function (keyvals){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(goog.object.create,keyvals);
+});
+
+/** @this {Function} */
+cljs.core.js_obj.cljs$lang$applyTo = (function (seq10411){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq10411));
+});
+
+cljs.core.js_obj.cljs$lang$maxFixedArity = (0);
+
+/**
+ * Return the JavaScript keys for an object.
+ */
+cljs.core.js_keys = (function cljs$core$js_keys(obj){
+return goog.object.getKeys(obj);
+});
+/**
+ * Delete a property from a JavaScript object.
+ * Returns true upon success, false otherwise.
+ */
+cljs.core.js_delete = (function cljs$core$js_delete(obj,key){
+return delete obj[key];
+});
+cljs.core.array_copy = (function cljs$core$array_copy(from,i,to,j,len){
+var i__$1 = i;
+var j__$1 = j;
+var len__$1 = len;
+while(true){
+if((len__$1 === (0))){
+return to;
+} else {
+(to[j__$1] = (from[i__$1]));
+
+var G__10419 = (i__$1 + (1));
+var G__10420 = (j__$1 + (1));
+var G__10421 = (len__$1 - (1));
+i__$1 = G__10419;
+j__$1 = G__10420;
+len__$1 = G__10421;
+continue;
+}
+break;
+}
+});
+cljs.core.array_copy_downward = (function cljs$core$array_copy_downward(from,i,to,j,len){
+var i__$1 = (i + (len - (1)));
+var j__$1 = (j + (len - (1)));
+var len__$1 = len;
+while(true){
+if((len__$1 === (0))){
+return to;
+} else {
+(to[j__$1] = (from[i__$1]));
+
+var G__10422 = (i__$1 - (1));
+var G__10423 = (j__$1 - (1));
+var G__10424 = (len__$1 - (1));
+i__$1 = G__10422;
+j__$1 = G__10423;
+len__$1 = G__10424;
+continue;
+}
+break;
+}
+});
+cljs.core.lookup_sentinel = {};
+/**
+ * Returns true if x is the value false, false otherwise.
+ */
+cljs.core.false_QMARK_ = (function cljs$core$false_QMARK_(x){
+return x === false;
+});
+/**
+ * Returns true if x is the value true, false otherwise.
+ */
+cljs.core.true_QMARK_ = (function cljs$core$true_QMARK_(x){
+return x === true;
+});
+/**
+ * Return true if x is a Boolean
+ */
+cljs.core.boolean_QMARK_ = (function cljs$core$boolean_QMARK_(x){
+return ((x === true) || (x === false));
+});
+/**
+ * Returns true if x identical to the JavaScript undefined value.
+ */
+cljs.core.undefined_QMARK_ = (function cljs$core$undefined_QMARK_(x){
+return (void 0 === x);
+});
+/**
+ * Return true if s satisfies ISeq
+ */
+cljs.core.seq_QMARK_ = (function cljs$core$seq_QMARK_(s){
+if((s == null)){
+return false;
+} else {
+if((!((s == null)))){
+if((((s.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === s.cljs$core$ISeq$)))){
+return true;
+} else {
+if((!s.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.ISeq,s);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.ISeq,s);
+}
+}
+});
+/**
+ * Return true if the seq function is supported for s
+ */
+cljs.core.seqable_QMARK_ = (function cljs$core$seqable_QMARK_(s){
+var or__7806__auto__ = (s == null);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (((!((s == null))))?(((((s.cljs$lang$protocol_mask$partition0$ & (8388608))) || ((cljs.core.PROTOCOL_SENTINEL === s.cljs$core$ISeqable$))))?true:(((!s.cljs$lang$protocol_mask$partition0$))?cljs.core.native_satisfies_QMARK_(cljs.core.ISeqable,s):false)):cljs.core.native_satisfies_QMARK_(cljs.core.ISeqable,s));
+if(or__7806__auto____$1){
+return or__7806__auto____$1;
+} else {
+return ((cljs.core.array_QMARK_(s)) || (typeof s === 'string'));
+}
+}
+});
+/**
+ * Coerce to boolean
+ */
+cljs.core.boolean$ = (function cljs$core$boolean(x){
+if((x == null)){
+return false;
+} else {
+if(x === false){
+return false;
+} else {
+return true;
+
+}
+}
+});
+/**
+ * Returns true if f returns true for fn? or satisfies IFn.
+ */
+cljs.core.ifn_QMARK_ = (function cljs$core$ifn_QMARK_(f){
+var or__7806__auto__ = cljs.core.fn_QMARK_(f);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+if((!((f == null)))){
+if((((f.cljs$lang$protocol_mask$partition0$ & (1))) || ((cljs.core.PROTOCOL_SENTINEL === f.cljs$core$IFn$)))){
+return true;
+} else {
+if((!f.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IFn,f);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IFn,f);
+}
+}
+});
+/**
+ * Returns true if n is a JavaScript number with no decimal part.
+ */
+cljs.core.integer_QMARK_ = (function cljs$core$integer_QMARK_(n){
+return ((typeof n === 'number') && ((!(isNaN(n)))) && ((!((n === Infinity)))) && ((parseFloat(n) === parseInt(n,(10)))));
+});
+/**
+ * Return true if x satisfies integer? or is an instance of goog.math.Integer
+ * or goog.math.Long.
+ */
+cljs.core.int_QMARK_ = (function cljs$core$int_QMARK_(x){
+return ((cljs.core.integer_QMARK_(x)) || ((x instanceof goog.math.Integer)) || ((x instanceof goog.math.Long)));
+});
+/**
+ * Return true if x satisfies int? and is positive.
+ */
+cljs.core.pos_int_QMARK_ = (function cljs$core$pos_int_QMARK_(x){
+if(cljs.core.integer_QMARK_(x)){
+return (x > (0));
+} else {
+if((x instanceof goog.math.Integer)){
+return ((cljs.core.not(x.isNegative())) && (cljs.core.not(x.isZero())));
+} else {
+if((x instanceof goog.math.Long)){
+return ((cljs.core.not(x.isNegative())) && (cljs.core.not(x.isZero())));
+} else {
+return false;
+
+}
+}
+}
+});
+/**
+ * Return true if x satisfies int? and is negative.
+ */
+cljs.core.neg_int_QMARK_ = (function cljs$core$neg_int_QMARK_(x){
+if(cljs.core.integer_QMARK_(x)){
+return (x < (0));
+} else {
+if((x instanceof goog.math.Integer)){
+return x.isNegative();
+} else {
+if((x instanceof goog.math.Long)){
+return x.isNegative();
+} else {
+return false;
+
+}
+}
+}
+});
+/**
+ * Return true if x satisfies int? and is a natural integer value.
+ */
+cljs.core.nat_int_QMARK_ = (function cljs$core$nat_int_QMARK_(x){
+if(cljs.core.integer_QMARK_(x)){
+return (!((x < (0))));
+} else {
+if((x instanceof goog.math.Integer)){
+return cljs.core.not(x.isNegative());
+} else {
+if((x instanceof goog.math.Long)){
+return cljs.core.not(x.isNegative());
+} else {
+return false;
+
+}
+}
+}
+});
+/**
+ * Returns true for JavaScript numbers, false otherwise.
+ */
+cljs.core.float_QMARK_ = (function cljs$core$float_QMARK_(x){
+return typeof x === 'number';
+});
+/**
+ * Returns true for JavaScript numbers, false otherwise.
+ */
+cljs.core.double_QMARK_ = (function cljs$core$double_QMARK_(x){
+return typeof x === 'number';
+});
+/**
+ * Returns true for Infinity and -Infinity values.
+ */
+cljs.core.infinite_QMARK_ = (function cljs$core$infinite_QMARK_(x){
+return (((x === Number.POSITIVE_INFINITY)) || ((x === Number.NEGATIVE_INFINITY)));
+});
+/**
+ * Returns true if key is present in the given collection, otherwise
+ * returns false. Note that for numerically indexed collections like
+ * vectors and arrays, this tests if the numeric key is within the
+ * range of indexes. 'contains?' operates constant or logarithmic time;
+ * it will not perform a linear search for a value. See also 'some'.
+ */
+cljs.core.contains_QMARK_ = (function cljs$core$contains_QMARK_(coll,v){
+if((cljs.core.get.cljs$core$IFn$_invoke$arity$3(coll,v,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
+return false;
+} else {
+return true;
+}
+});
+/**
+ * Returns the map entry for key, or nil if key not present.
+ */
+cljs.core.find = (function cljs$core$find(coll,k){
+if(cljs.core.ifind_QMARK_(coll)){
+return cljs.core._find(coll,k);
+} else {
+if((((!((coll == null)))) && (cljs.core.associative_QMARK_(coll)) && (cljs.core.contains_QMARK_(coll,k)))){
+return (new cljs.core.MapEntry(k,cljs.core.get.cljs$core$IFn$_invoke$arity$2(coll,k),null));
+} else {
+return null;
+}
+}
+});
+/**
+ * Returns true if no two of the arguments are =
+ */
+cljs.core.distinct_QMARK_ = (function cljs$core$distinct_QMARK_(var_args){
+var G__10437 = arguments.length;
+switch (G__10437) {
+case 1:
+return cljs.core.distinct_QMARK_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.distinct_QMARK_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10439 = arguments.length;
+var i__9001__auto___10440 = (0);
+while(true){
+if((i__9001__auto___10440 < len__9000__auto___10439)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10440]));
+
+var G__10441 = (i__9001__auto___10440 + (1));
+i__9001__auto___10440 = G__10441;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.distinct_QMARK_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.distinct_QMARK_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return true;
+});
+
+cljs.core.distinct_QMARK_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (!(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y)));
+});
+
+cljs.core.distinct_QMARK_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+if((!(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y)))){
+var s = cljs.core.PersistentHashSet.createAsIfByAssoc([x,y]);
+var xs = more;
+while(true){
+var x__$1 = cljs.core.first(xs);
+var etc = cljs.core.next(xs);
+if(cljs.core.truth_(xs)){
+if(cljs.core.contains_QMARK_(s,x__$1)){
+return false;
+} else {
+var G__10442 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(s,x__$1);
+var G__10443 = etc;
+s = G__10442;
+xs = G__10443;
+continue;
+}
+} else {
+return true;
+}
+break;
+}
+} else {
+return false;
+}
+});
+
+/** @this {Function} */
+cljs.core.distinct_QMARK_.cljs$lang$applyTo = (function (seq10434){
+var G__10435 = cljs.core.first(seq10434);
+var seq10434__$1 = cljs.core.next(seq10434);
+var G__10436 = cljs.core.first(seq10434__$1);
+var seq10434__$2 = cljs.core.next(seq10434__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10435,G__10436,seq10434__$2);
+});
+
+cljs.core.distinct_QMARK_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Comparator. Returns a negative number, zero, or a positive number
+ * when x is logically 'less than', 'equal to', or 'greater than'
+ * y. Uses IComparable if available and google.array.defaultCompare for objects
+ * of the same type and special-cases nil to be less than any other object.
+ */
+cljs.core.compare = (function cljs$core$compare(x,y){
+if((x === y)){
+return (0);
+} else {
+if((x == null)){
+return (-1);
+} else {
+if((y == null)){
+return (1);
+} else {
+if(typeof x === 'number'){
+if(typeof y === 'number'){
+return goog.array.defaultCompare(x,y);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(y)].join('')));
+}
+} else {
+if((((!((x == null))))?(((((x.cljs$lang$protocol_mask$partition1$ & (2048))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IComparable$))))?true:(((!x.cljs$lang$protocol_mask$partition1$))?cljs.core.native_satisfies_QMARK_(cljs.core.IComparable,x):false)):cljs.core.native_satisfies_QMARK_(cljs.core.IComparable,x))){
+return cljs.core._compare(x,y);
+} else {
+if(((((typeof x === 'string') || (cljs.core.array_QMARK_(x)) || (x === true) || (x === false))) && ((cljs.core.type(x) === cljs.core.type(y))))){
+return goog.array.defaultCompare(x,y);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(y)].join('')));
+}
+
+}
+}
+}
+}
+}
+});
+/**
+ * Compare indexed collection.
+ */
+cljs.core.compare_indexed = (function cljs$core$compare_indexed(var_args){
+var G__10446 = arguments.length;
+switch (G__10446) {
+case 2:
+return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 4:
+return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$2 = (function (xs,ys){
+var xl = cljs.core.count(xs);
+var yl = cljs.core.count(ys);
+if((xl < yl)){
+return (-1);
+} else {
+if((xl > yl)){
+return (1);
+} else {
+if((xl === (0))){
+return (0);
+} else {
+return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$4(xs,ys,xl,(0));
+
+}
+}
+}
+});
+
+cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$4 = (function (xs,ys,len,n){
+while(true){
+var d = cljs.core.compare(cljs.core.nth.cljs$core$IFn$_invoke$arity$2(xs,n),cljs.core.nth.cljs$core$IFn$_invoke$arity$2(ys,n));
+if((((d === (0))) && (((n + (1)) < len)))){
+var G__10448 = xs;
+var G__10449 = ys;
+var G__10450 = len;
+var G__10451 = (n + (1));
+xs = G__10448;
+ys = G__10449;
+len = G__10450;
+n = G__10451;
+continue;
+} else {
+return d;
+}
+break;
+}
+});
+
+cljs.core.compare_indexed.cljs$lang$maxFixedArity = 4;
+
+/**
+ * Given a fn that might be boolean valued or a comparator,
+ * return a fn that is a comparator.
+ */
+cljs.core.fn__GT_comparator = (function cljs$core$fn__GT_comparator(f){
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(f,cljs.core.compare)){
+return cljs.core.compare;
+} else {
+return (function (x,y){
+var r = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(x,y) : f.call(null,x,y));
+if(typeof r === 'number'){
+return r;
+} else {
+if(cljs.core.truth_(r)){
+return (-1);
+} else {
+if(cljs.core.truth_((f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(y,x) : f.call(null,y,x)))){
+return (1);
+} else {
+return (0);
+}
+}
+}
+});
+}
+});
+/**
+ * Returns a sorted sequence of the items in coll. Comp can be
+ * boolean-valued comparison function, or a -/0/+ valued comparator.
+ * Comp defaults to compare.
+ */
+cljs.core.sort = (function cljs$core$sort(var_args){
+var G__10453 = arguments.length;
+switch (G__10453) {
+case 1:
+return cljs.core.sort.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.sort.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.sort.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+return cljs.core.sort.cljs$core$IFn$_invoke$arity$2(cljs.core.compare,coll);
+});
+
+cljs.core.sort.cljs$core$IFn$_invoke$arity$2 = (function (comp,coll){
+if(cljs.core.seq(coll)){
+var a = cljs.core.to_array(coll);
+var G__10454_10457 = a;
+var G__10455_10458 = cljs.core.fn__GT_comparator(comp);
+goog.array.stableSort(G__10454_10457,G__10455_10458);
+
+return cljs.core.seq(a);
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.sort.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a sorted sequence of the items in coll, where the sort
+ * order is determined by comparing (keyfn item). Comp can be
+ * boolean-valued comparison function, or a -/0/+ valued comparator.
+ * Comp defaults to compare.
+ */
+cljs.core.sort_by = (function cljs$core$sort_by(var_args){
+var G__10460 = arguments.length;
+switch (G__10460) {
+case 2:
+return cljs.core.sort_by.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.sort_by.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.sort_by.cljs$core$IFn$_invoke$arity$2 = (function (keyfn,coll){
+return cljs.core.sort_by.cljs$core$IFn$_invoke$arity$3(keyfn,cljs.core.compare,coll);
+});
+
+cljs.core.sort_by.cljs$core$IFn$_invoke$arity$3 = (function (keyfn,comp,coll){
+return cljs.core.sort.cljs$core$IFn$_invoke$arity$2((function (x,y){
+var G__10462 = (keyfn.cljs$core$IFn$_invoke$arity$1 ? keyfn.cljs$core$IFn$_invoke$arity$1(x) : keyfn.call(null,x));
+var G__10463 = (keyfn.cljs$core$IFn$_invoke$arity$1 ? keyfn.cljs$core$IFn$_invoke$arity$1(y) : keyfn.call(null,y));
+var fexpr__10461 = cljs.core.fn__GT_comparator(comp);
+return (fexpr__10461.cljs$core$IFn$_invoke$arity$2 ? fexpr__10461.cljs$core$IFn$_invoke$arity$2(G__10462,G__10463) : fexpr__10461.call(null,G__10462,G__10463));
+}),coll);
+});
+
+cljs.core.sort_by.cljs$lang$maxFixedArity = 3;
+
+cljs.core.seq_reduce = (function cljs$core$seq_reduce(var_args){
+var G__10466 = arguments.length;
+switch (G__10466) {
+case 2:
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2 = (function (f,coll){
+var temp__4655__auto__ = cljs.core.seq(coll);
+if(temp__4655__auto__){
+var s = temp__4655__auto__;
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(f,cljs.core.first(s),cljs.core.next(s));
+} else {
+return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
+}
+});
+
+cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3 = (function (f,val,coll){
+var val__$1 = val;
+var coll__$1 = cljs.core.seq(coll);
+while(true){
+if(coll__$1){
+var nval = (function (){var G__10467 = val__$1;
+var G__10468 = cljs.core.first(coll__$1);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10467,G__10468) : f.call(null,G__10467,G__10468));
+})();
+if(cljs.core.reduced_QMARK_(nval)){
+return cljs.core.deref(nval);
+} else {
+var G__10470 = nval;
+var G__10471 = cljs.core.next(coll__$1);
+val__$1 = G__10470;
+coll__$1 = G__10471;
+continue;
+}
+} else {
+return val__$1;
+}
+break;
+}
+});
+
+cljs.core.seq_reduce.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Return a random permutation of coll
+ */
+cljs.core.shuffle = (function cljs$core$shuffle(coll){
+var a = cljs.core.to_array(coll);
+goog.array.shuffle(a);
+
+return cljs.core.vec(a);
+});
+cljs.core.iter_reduce = (function cljs$core$iter_reduce(var_args){
+var G__10473 = arguments.length;
+switch (G__10473) {
+case 2:
+return cljs.core.iter_reduce.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.iter_reduce.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.iter_reduce.cljs$core$IFn$_invoke$arity$2 = (function (coll,f){
+var iter = cljs.core._iterator(coll);
+if(cljs.core.truth_(iter.hasNext())){
+var init = iter.next();
+var acc = init;
+while(true){
+if(iter.hasNext()){
+var nacc = (function (){var G__10474 = acc;
+var G__10475 = iter.next();
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10474,G__10475) : f.call(null,G__10474,G__10475));
+})();
+if(cljs.core.reduced_QMARK_(nacc)){
+return cljs.core.deref(nacc);
+} else {
+var G__10479 = nacc;
+acc = G__10479;
+continue;
+}
+} else {
+return acc;
+}
+break;
+}
+} else {
+return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
+}
+});
+
+cljs.core.iter_reduce.cljs$core$IFn$_invoke$arity$3 = (function (coll,f,init){
+var iter = cljs.core._iterator(coll);
+var acc = init;
+while(true){
+if(iter.hasNext()){
+var nacc = (function (){var G__10476 = acc;
+var G__10477 = iter.next();
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10476,G__10477) : f.call(null,G__10476,G__10477));
+})();
+if(cljs.core.reduced_QMARK_(nacc)){
+return cljs.core.deref(nacc);
+} else {
+var G__10480 = nacc;
+acc = G__10480;
+continue;
+}
+} else {
+return acc;
+}
+break;
+}
+});
+
+cljs.core.iter_reduce.cljs$lang$maxFixedArity = 3;
+
+/**
+ * f should be a function of 2 arguments. If val is not supplied,
+ * returns the result of applying f to the first 2 items in coll, then
+ * applying f to that result and the 3rd item, etc. If coll contains no
+ * items, f must accept no arguments as well, and reduce returns the
+ * result of calling f with no arguments. If coll has only 1 item, it
+ * is returned and f is not called. If val is supplied, returns the
+ * result of applying f to val and the first item in coll, then
+ * applying f to that result and the 2nd item, etc. If coll contains no
+ * items, returns val and f is not called.
+ */
+cljs.core.reduce = (function cljs$core$reduce(var_args){
+var G__10482 = arguments.length;
+switch (G__10482) {
+case 2:
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.reduce.cljs$core$IFn$_invoke$arity$2 = (function (f,coll){
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (524288))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$IReduce$))))?true:false):false)){
+return coll.cljs$core$IReduce$_reduce$arity$2(null,f);
+} else {
+if(cljs.core.array_QMARK_(coll)){
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$2(coll,f);
+} else {
+if(typeof coll === 'string'){
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$2(coll,f);
+} else {
+if(cljs.core.native_satisfies_QMARK_(cljs.core.IReduce,coll)){
+return cljs.core._reduce.cljs$core$IFn$_invoke$arity$2(coll,f);
+} else {
+if(cljs.core.iterable_QMARK_(coll)){
+return cljs.core.iter_reduce.cljs$core$IFn$_invoke$arity$2(coll,f);
+} else {
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll);
+
+}
+}
+}
+}
+}
+});
+
+cljs.core.reduce.cljs$core$IFn$_invoke$arity$3 = (function (f,val,coll){
+if((((!((coll == null))))?(((((coll.cljs$lang$protocol_mask$partition0$ & (524288))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$IReduce$))))?true:false):false)){
+return coll.cljs$core$IReduce$_reduce$arity$3(null,f,val);
+} else {
+if(cljs.core.array_QMARK_(coll)){
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$3(coll,f,val);
+} else {
+if(typeof coll === 'string'){
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$3(coll,f,val);
+} else {
+if(cljs.core.native_satisfies_QMARK_(cljs.core.IReduce,coll)){
+return cljs.core._reduce.cljs$core$IFn$_invoke$arity$3(coll,f,val);
+} else {
+if(cljs.core.iterable_QMARK_(coll)){
+return cljs.core.iter_reduce.cljs$core$IFn$_invoke$arity$3(coll,f,val);
+} else {
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,val,coll);
+
+}
+}
+}
+}
+}
+});
+
+cljs.core.reduce.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Reduces an associative collection. f should be a function of 3
+ * arguments. Returns the result of applying f to init, the first key
+ * and the first value in coll, then applying f to that result and the
+ * 2nd key and value, etc. If coll contains no entries, returns init
+ * and f is not called. Note that reduce-kv is supported on vectors,
+ * where the keys will be the ordinals.
+ */
+cljs.core.reduce_kv = (function cljs$core$reduce_kv(f,init,coll){
+if((!((coll == null)))){
+return cljs.core._kv_reduce(coll,f,init);
+} else {
+return init;
+}
+});
+/**
+ * Returns its argument.
+ */
+cljs.core.identity = (function cljs$core$identity(x){
+return x;
+});
+/**
+ * Takes a reducing function f of 2 args and returns a fn suitable for
+ * transduce by adding an arity-1 signature that calls cf (default -
+ * identity) on the result argument.
+ */
+cljs.core.completing = (function cljs$core$completing(var_args){
+var G__10487 = arguments.length;
+switch (G__10487) {
+case 1:
+return cljs.core.completing.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.completing.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.completing.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return cljs.core.completing.cljs$core$IFn$_invoke$arity$2(f,cljs.core.identity);
+});
+
+cljs.core.completing.cljs$core$IFn$_invoke$arity$2 = (function (f,cf){
+return (function() {
+var G__10489 = null;
+var G__10489__0 = (function (){
+return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
+});
+var G__10489__1 = (function (x){
+return (cf.cljs$core$IFn$_invoke$arity$1 ? cf.cljs$core$IFn$_invoke$arity$1(x) : cf.call(null,x));
+});
+var G__10489__2 = (function (x,y){
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(x,y) : f.call(null,x,y));
+});
+G__10489 = function(x,y){
+switch(arguments.length){
+case 0:
+return G__10489__0.call(this);
+case 1:
+return G__10489__1.call(this,x);
+case 2:
+return G__10489__2.call(this,x,y);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10489.cljs$core$IFn$_invoke$arity$0 = G__10489__0;
+G__10489.cljs$core$IFn$_invoke$arity$1 = G__10489__1;
+G__10489.cljs$core$IFn$_invoke$arity$2 = G__10489__2;
+return G__10489;
+})()
+});
+
+cljs.core.completing.cljs$lang$maxFixedArity = 2;
+
+/**
+ * reduce with a transformation of f (xf). If init is not
+ * supplied, (f) will be called to produce it. f should be a reducing
+ * step function that accepts both 1 and 2 arguments, if it accepts
+ * only 2 you can add the arity-1 with 'completing'. Returns the result
+ * of applying (the transformed) xf to init and the first item in coll,
+ * then applying xf to that result and the 2nd item, etc. If coll
+ * contains no items, returns init and f is not called. Note that
+ * certain transforms may inject or skip items.
+ */
+cljs.core.transduce = (function cljs$core$transduce(var_args){
+var G__10491 = arguments.length;
+switch (G__10491) {
+case 3:
+return cljs.core.transduce.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.transduce.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.transduce.cljs$core$IFn$_invoke$arity$3 = (function (xform,f,coll){
+return cljs.core.transduce.cljs$core$IFn$_invoke$arity$4(xform,f,(f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null)),coll);
+});
+
+cljs.core.transduce.cljs$core$IFn$_invoke$arity$4 = (function (xform,f,init,coll){
+var f__$1 = (xform.cljs$core$IFn$_invoke$arity$1 ? xform.cljs$core$IFn$_invoke$arity$1(f) : xform.call(null,f));
+var ret = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(f__$1,init,coll);
+return (f__$1.cljs$core$IFn$_invoke$arity$1 ? f__$1.cljs$core$IFn$_invoke$arity$1(ret) : f__$1.call(null,ret));
+});
+
+cljs.core.transduce.cljs$lang$maxFixedArity = 4;
+
+/**
+ * Returns the sum of nums. (+) returns 0.
+ */
+cljs.core._PLUS_ = (function cljs$core$_PLUS_(var_args){
+var G__10497 = arguments.length;
+switch (G__10497) {
+case 0:
+return cljs.core._PLUS_.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core._PLUS_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._PLUS_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10499 = arguments.length;
+var i__9001__auto___10500 = (0);
+while(true){
+if((i__9001__auto___10500 < len__9000__auto___10499)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10500]));
+
+var G__10501 = (i__9001__auto___10500 + (1));
+i__9001__auto___10500 = G__10501;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._PLUS_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._PLUS_.cljs$core$IFn$_invoke$arity$0 = (function (){
+return (0);
+});
+
+cljs.core._PLUS_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return x;
+});
+
+cljs.core._PLUS_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x + y);
+});
+
+cljs.core._PLUS_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._PLUS_,(x + y),more);
+});
+
+/** @this {Function} */
+cljs.core._PLUS_.cljs$lang$applyTo = (function (seq10494){
+var G__10495 = cljs.core.first(seq10494);
+var seq10494__$1 = cljs.core.next(seq10494);
+var G__10496 = cljs.core.first(seq10494__$1);
+var seq10494__$2 = cljs.core.next(seq10494__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10495,G__10496,seq10494__$2);
+});
+
+cljs.core._PLUS_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * If no ys are supplied, returns the negation of x, else subtracts
+ * the ys from x and returns the result.
+ */
+cljs.core._ = (function cljs$core$_(var_args){
+var G__10506 = arguments.length;
+switch (G__10506) {
+case 1:
+return cljs.core._.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10508 = arguments.length;
+var i__9001__auto___10509 = (0);
+while(true){
+if((i__9001__auto___10509 < len__9000__auto___10508)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10509]));
+
+var G__10510 = (i__9001__auto___10509 + (1));
+i__9001__auto___10509 = G__10510;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return (- x);
+});
+
+cljs.core._.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x - y);
+});
+
+cljs.core._.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._,(x - y),more);
+});
+
+/** @this {Function} */
+cljs.core._.cljs$lang$applyTo = (function (seq10503){
+var G__10504 = cljs.core.first(seq10503);
+var seq10503__$1 = cljs.core.next(seq10503);
+var G__10505 = cljs.core.first(seq10503__$1);
+var seq10503__$2 = cljs.core.next(seq10503__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10504,G__10505,seq10503__$2);
+});
+
+cljs.core._.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns the product of nums. (*) returns 1.
+ */
+cljs.core._STAR_ = (function cljs$core$_STAR_(var_args){
+var G__10515 = arguments.length;
+switch (G__10515) {
+case 0:
+return cljs.core._STAR_.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core._STAR_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._STAR_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10517 = arguments.length;
+var i__9001__auto___10518 = (0);
+while(true){
+if((i__9001__auto___10518 < len__9000__auto___10517)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10518]));
+
+var G__10519 = (i__9001__auto___10518 + (1));
+i__9001__auto___10518 = G__10519;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._STAR_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._STAR_.cljs$core$IFn$_invoke$arity$0 = (function (){
+return (1);
+});
+
+cljs.core._STAR_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return x;
+});
+
+cljs.core._STAR_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x * y);
+});
+
+cljs.core._STAR_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._STAR_,(x * y),more);
+});
+
+/** @this {Function} */
+cljs.core._STAR_.cljs$lang$applyTo = (function (seq10512){
+var G__10513 = cljs.core.first(seq10512);
+var seq10512__$1 = cljs.core.next(seq10512);
+var G__10514 = cljs.core.first(seq10512__$1);
+var seq10512__$2 = cljs.core.next(seq10512__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10513,G__10514,seq10512__$2);
+});
+
+cljs.core._STAR_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * If no denominators are supplied, returns 1/numerator,
+ * else returns numerator divided by all of the denominators.
+ */
+cljs.core._SLASH_ = (function cljs$core$_SLASH_(var_args){
+var G__10524 = arguments.length;
+switch (G__10524) {
+case 1:
+return cljs.core._SLASH_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._SLASH_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10526 = arguments.length;
+var i__9001__auto___10527 = (0);
+while(true){
+if((i__9001__auto___10527 < len__9000__auto___10526)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10527]));
+
+var G__10528 = (i__9001__auto___10527 + (1));
+i__9001__auto___10527 = G__10528;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._SLASH_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._SLASH_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return ((1) / x);
+});
+
+cljs.core._SLASH_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x / y);
+});
+
+cljs.core._SLASH_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._SLASH_,(x / y),more);
+});
+
+/** @this {Function} */
+cljs.core._SLASH_.cljs$lang$applyTo = (function (seq10521){
+var G__10522 = cljs.core.first(seq10521);
+var seq10521__$1 = cljs.core.next(seq10521);
+var G__10523 = cljs.core.first(seq10521__$1);
+var seq10521__$2 = cljs.core.next(seq10521__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10522,G__10523,seq10521__$2);
+});
+
+cljs.core._SLASH_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns non-nil if nums are in monotonically increasing order,
+ * otherwise false.
+ */
+cljs.core._LT_ = (function cljs$core$_LT_(var_args){
+var G__10533 = arguments.length;
+switch (G__10533) {
+case 1:
+return cljs.core._LT_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._LT_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10535 = arguments.length;
+var i__9001__auto___10536 = (0);
+while(true){
+if((i__9001__auto___10536 < len__9000__auto___10535)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10536]));
+
+var G__10537 = (i__9001__auto___10536 + (1));
+i__9001__auto___10536 = G__10537;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._LT_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._LT_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return true;
+});
+
+cljs.core._LT_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x < y);
+});
+
+cljs.core._LT_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+while(true){
+if((x < y)){
+if(cljs.core.next(more)){
+var G__10538 = y;
+var G__10539 = cljs.core.first(more);
+var G__10540 = cljs.core.next(more);
+x = G__10538;
+y = G__10539;
+more = G__10540;
+continue;
+} else {
+return (y < cljs.core.first(more));
+}
+} else {
+return false;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core._LT_.cljs$lang$applyTo = (function (seq10530){
+var G__10531 = cljs.core.first(seq10530);
+var seq10530__$1 = cljs.core.next(seq10530);
+var G__10532 = cljs.core.first(seq10530__$1);
+var seq10530__$2 = cljs.core.next(seq10530__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10531,G__10532,seq10530__$2);
+});
+
+cljs.core._LT_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns non-nil if nums are in monotonically non-decreasing order,
+ * otherwise false.
+ */
+cljs.core._LT__EQ_ = (function cljs$core$_LT__EQ_(var_args){
+var G__10545 = arguments.length;
+switch (G__10545) {
+case 1:
+return cljs.core._LT__EQ_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._LT__EQ_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10547 = arguments.length;
+var i__9001__auto___10548 = (0);
+while(true){
+if((i__9001__auto___10548 < len__9000__auto___10547)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10548]));
+
+var G__10549 = (i__9001__auto___10548 + (1));
+i__9001__auto___10548 = G__10549;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._LT__EQ_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._LT__EQ_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return true;
+});
+
+cljs.core._LT__EQ_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x <= y);
+});
+
+cljs.core._LT__EQ_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+while(true){
+if((x <= y)){
+if(cljs.core.next(more)){
+var G__10550 = y;
+var G__10551 = cljs.core.first(more);
+var G__10552 = cljs.core.next(more);
+x = G__10550;
+y = G__10551;
+more = G__10552;
+continue;
+} else {
+return (y <= cljs.core.first(more));
+}
+} else {
+return false;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core._LT__EQ_.cljs$lang$applyTo = (function (seq10542){
+var G__10543 = cljs.core.first(seq10542);
+var seq10542__$1 = cljs.core.next(seq10542);
+var G__10544 = cljs.core.first(seq10542__$1);
+var seq10542__$2 = cljs.core.next(seq10542__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10543,G__10544,seq10542__$2);
+});
+
+cljs.core._LT__EQ_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns non-nil if nums are in monotonically decreasing order,
+ * otherwise false.
+ */
+cljs.core._GT_ = (function cljs$core$_GT_(var_args){
+var G__10557 = arguments.length;
+switch (G__10557) {
+case 1:
+return cljs.core._GT_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._GT_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10559 = arguments.length;
+var i__9001__auto___10560 = (0);
+while(true){
+if((i__9001__auto___10560 < len__9000__auto___10559)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10560]));
+
+var G__10561 = (i__9001__auto___10560 + (1));
+i__9001__auto___10560 = G__10561;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._GT_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._GT_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return true;
+});
+
+cljs.core._GT_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x > y);
+});
+
+cljs.core._GT_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+while(true){
+if((x > y)){
+if(cljs.core.next(more)){
+var G__10562 = y;
+var G__10563 = cljs.core.first(more);
+var G__10564 = cljs.core.next(more);
+x = G__10562;
+y = G__10563;
+more = G__10564;
+continue;
+} else {
+return (y > cljs.core.first(more));
+}
+} else {
+return false;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core._GT_.cljs$lang$applyTo = (function (seq10554){
+var G__10555 = cljs.core.first(seq10554);
+var seq10554__$1 = cljs.core.next(seq10554);
+var G__10556 = cljs.core.first(seq10554__$1);
+var seq10554__$2 = cljs.core.next(seq10554__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10555,G__10556,seq10554__$2);
+});
+
+cljs.core._GT_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns non-nil if nums are in monotonically non-increasing order,
+ * otherwise false.
+ */
+cljs.core._GT__EQ_ = (function cljs$core$_GT__EQ_(var_args){
+var G__10569 = arguments.length;
+switch (G__10569) {
+case 1:
+return cljs.core._GT__EQ_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._GT__EQ_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10571 = arguments.length;
+var i__9001__auto___10572 = (0);
+while(true){
+if((i__9001__auto___10572 < len__9000__auto___10571)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10572]));
+
+var G__10573 = (i__9001__auto___10572 + (1));
+i__9001__auto___10572 = G__10573;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._GT__EQ_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._GT__EQ_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return true;
+});
+
+cljs.core._GT__EQ_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x >= y);
+});
+
+cljs.core._GT__EQ_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+while(true){
+if((x >= y)){
+if(cljs.core.next(more)){
+var G__10574 = y;
+var G__10575 = cljs.core.first(more);
+var G__10576 = cljs.core.next(more);
+x = G__10574;
+y = G__10575;
+more = G__10576;
+continue;
+} else {
+return (y >= cljs.core.first(more));
+}
+} else {
+return false;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core._GT__EQ_.cljs$lang$applyTo = (function (seq10566){
+var G__10567 = cljs.core.first(seq10566);
+var seq10566__$1 = cljs.core.next(seq10566);
+var G__10568 = cljs.core.first(seq10566__$1);
+var seq10566__$2 = cljs.core.next(seq10566__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10567,G__10568,seq10566__$2);
+});
+
+cljs.core._GT__EQ_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns a number one less than num.
+ */
+cljs.core.dec = (function cljs$core$dec(x){
+return (x - (1));
+});
+/**
+ * Returns the greatest of the nums.
+ */
+cljs.core.max = (function cljs$core$max(var_args){
+var G__10581 = arguments.length;
+switch (G__10581) {
+case 1:
+return cljs.core.max.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.max.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10583 = arguments.length;
+var i__9001__auto___10584 = (0);
+while(true){
+if((i__9001__auto___10584 < len__9000__auto___10583)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10584]));
+
+var G__10585 = (i__9001__auto___10584 + (1));
+i__9001__auto___10584 = G__10585;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.max.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.max.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return x;
+});
+
+cljs.core.max.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+var x__8162__auto__ = x;
+var y__8163__auto__ = y;
+return ((x__8162__auto__ > y__8163__auto__) ? x__8162__auto__ : y__8163__auto__);
+});
+
+cljs.core.max.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.max,(function (){var x__8162__auto__ = x;
+var y__8163__auto__ = y;
+return ((x__8162__auto__ > y__8163__auto__) ? x__8162__auto__ : y__8163__auto__);
+})(),more);
+});
+
+/** @this {Function} */
+cljs.core.max.cljs$lang$applyTo = (function (seq10578){
+var G__10579 = cljs.core.first(seq10578);
+var seq10578__$1 = cljs.core.next(seq10578);
+var G__10580 = cljs.core.first(seq10578__$1);
+var seq10578__$2 = cljs.core.next(seq10578__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10579,G__10580,seq10578__$2);
+});
+
+cljs.core.max.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns the least of the nums.
+ */
+cljs.core.min = (function cljs$core$min(var_args){
+var G__10590 = arguments.length;
+switch (G__10590) {
+case 1:
+return cljs.core.min.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.min.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10592 = arguments.length;
+var i__9001__auto___10593 = (0);
+while(true){
+if((i__9001__auto___10593 < len__9000__auto___10592)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10593]));
+
+var G__10594 = (i__9001__auto___10593 + (1));
+i__9001__auto___10593 = G__10594;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.min.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.min.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return x;
+});
+
+cljs.core.min.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+var x__8169__auto__ = x;
+var y__8170__auto__ = y;
+return ((x__8169__auto__ < y__8170__auto__) ? x__8169__auto__ : y__8170__auto__);
+});
+
+cljs.core.min.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.min,(function (){var x__8169__auto__ = x;
+var y__8170__auto__ = y;
+return ((x__8169__auto__ < y__8170__auto__) ? x__8169__auto__ : y__8170__auto__);
+})(),more);
+});
+
+/** @this {Function} */
+cljs.core.min.cljs$lang$applyTo = (function (seq10587){
+var G__10588 = cljs.core.first(seq10587);
+var seq10587__$1 = cljs.core.next(seq10587);
+var G__10589 = cljs.core.first(seq10587__$1);
+var seq10587__$2 = cljs.core.next(seq10587__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10588,G__10589,seq10587__$2);
+});
+
+cljs.core.min.cljs$lang$maxFixedArity = (2);
+
+cljs.core.byte$ = (function cljs$core$byte(x){
+return x;
+});
+/**
+ * Coerce to char
+ */
+cljs.core.char$ = (function cljs$core$char(x){
+if(typeof x === 'number'){
+return String.fromCharCode(x);
+} else {
+if(((typeof x === 'string') && ((x.length === (1))))){
+return x;
+} else {
+throw (new Error("Argument to char must be a character or number"));
+
+}
+}
+});
+cljs.core.short$ = (function cljs$core$short(x){
+return x;
+});
+cljs.core.float$ = (function cljs$core$float(x){
+return x;
+});
+cljs.core.double$ = (function cljs$core$double(x){
+return x;
+});
+cljs.core.unchecked_byte = (function cljs$core$unchecked_byte(x){
+return x;
+});
+cljs.core.unchecked_char = (function cljs$core$unchecked_char(x){
+return x;
+});
+cljs.core.unchecked_short = (function cljs$core$unchecked_short(x){
+return x;
+});
+cljs.core.unchecked_float = (function cljs$core$unchecked_float(x){
+return x;
+});
+cljs.core.unchecked_double = (function cljs$core$unchecked_double(x){
+return x;
+});
+/**
+ * Returns the sum of nums. (+) returns 0.
+ */
+cljs.core.unchecked_add = (function cljs$core$unchecked_add(var_args){
+var G__10599 = arguments.length;
+switch (G__10599) {
+case 0:
+return cljs.core.unchecked_add.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.unchecked_add.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.unchecked_add.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10601 = arguments.length;
+var i__9001__auto___10602 = (0);
+while(true){
+if((i__9001__auto___10602 < len__9000__auto___10601)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10602]));
+
+var G__10603 = (i__9001__auto___10602 + (1));
+i__9001__auto___10602 = G__10603;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.unchecked_add.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.unchecked_add.cljs$core$IFn$_invoke$arity$0 = (function (){
+return (0);
+});
+
+cljs.core.unchecked_add.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return x;
+});
+
+cljs.core.unchecked_add.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x + y);
+});
+
+cljs.core.unchecked_add.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.unchecked_add,(x + y),more);
+});
+
+/** @this {Function} */
+cljs.core.unchecked_add.cljs$lang$applyTo = (function (seq10596){
+var G__10597 = cljs.core.first(seq10596);
+var seq10596__$1 = cljs.core.next(seq10596);
+var G__10598 = cljs.core.first(seq10596__$1);
+var seq10596__$2 = cljs.core.next(seq10596__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10597,G__10598,seq10596__$2);
+});
+
+cljs.core.unchecked_add.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns the sum of nums. (+) returns 0.
+ */
+cljs.core.unchecked_add_int = (function cljs$core$unchecked_add_int(var_args){
+var G__10608 = arguments.length;
+switch (G__10608) {
+case 0:
+return cljs.core.unchecked_add_int.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.unchecked_add_int.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.unchecked_add_int.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10610 = arguments.length;
+var i__9001__auto___10611 = (0);
+while(true){
+if((i__9001__auto___10611 < len__9000__auto___10610)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10611]));
+
+var G__10612 = (i__9001__auto___10611 + (1));
+i__9001__auto___10611 = G__10612;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.unchecked_add_int.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.unchecked_add_int.cljs$core$IFn$_invoke$arity$0 = (function (){
+return (0);
+});
+
+cljs.core.unchecked_add_int.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return x;
+});
+
+cljs.core.unchecked_add_int.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x + y);
+});
+
+cljs.core.unchecked_add_int.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.unchecked_add_int,(x + y),more);
+});
+
+/** @this {Function} */
+cljs.core.unchecked_add_int.cljs$lang$applyTo = (function (seq10605){
+var G__10606 = cljs.core.first(seq10605);
+var seq10605__$1 = cljs.core.next(seq10605);
+var G__10607 = cljs.core.first(seq10605__$1);
+var seq10605__$2 = cljs.core.next(seq10605__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10606,G__10607,seq10605__$2);
+});
+
+cljs.core.unchecked_add_int.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns a number one less than x, an int.
+ */
+cljs.core.unchecked_dec = (function cljs$core$unchecked_dec(x){
+return (x - (1));
+});
+/**
+ * Returns a number one less than x, an int.
+ */
+cljs.core.unchecked_dec_int = (function cljs$core$unchecked_dec_int(x){
+return (x - (1));
+});
+/**
+ * If no denominators are supplied, returns 1/numerator,
+ * else returns numerator divided by all of the denominators.
+ */
+cljs.core.unchecked_divide_int = (function cljs$core$unchecked_divide_int(var_args){
+var G__10617 = arguments.length;
+switch (G__10617) {
+case 1:
+return cljs.core.unchecked_divide_int.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.unchecked_divide_int.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10619 = arguments.length;
+var i__9001__auto___10620 = (0);
+while(true){
+if((i__9001__auto___10620 < len__9000__auto___10619)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10620]));
+
+var G__10621 = (i__9001__auto___10620 + (1));
+i__9001__auto___10620 = G__10621;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.unchecked_divide_int.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.unchecked_divide_int.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return ((1) / x);
+});
+
+cljs.core.unchecked_divide_int.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x / y);
+});
+
+cljs.core.unchecked_divide_int.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.unchecked_divide_int,(x / y),more);
+});
+
+/** @this {Function} */
+cljs.core.unchecked_divide_int.cljs$lang$applyTo = (function (seq10614){
+var G__10615 = cljs.core.first(seq10614);
+var seq10614__$1 = cljs.core.next(seq10614);
+var G__10616 = cljs.core.first(seq10614__$1);
+var seq10614__$2 = cljs.core.next(seq10614__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10615,G__10616,seq10614__$2);
+});
+
+cljs.core.unchecked_divide_int.cljs$lang$maxFixedArity = (2);
+
+cljs.core.unchecked_inc = (function cljs$core$unchecked_inc(x){
+return (x + (1));
+});
+cljs.core.unchecked_inc_int = (function cljs$core$unchecked_inc_int(x){
+return (x + (1));
+});
+/**
+ * Returns the product of nums. (*) returns 1.
+ */
+cljs.core.unchecked_multiply = (function cljs$core$unchecked_multiply(var_args){
+var G__10626 = arguments.length;
+switch (G__10626) {
+case 0:
+return cljs.core.unchecked_multiply.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.unchecked_multiply.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.unchecked_multiply.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10628 = arguments.length;
+var i__9001__auto___10629 = (0);
+while(true){
+if((i__9001__auto___10629 < len__9000__auto___10628)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10629]));
+
+var G__10630 = (i__9001__auto___10629 + (1));
+i__9001__auto___10629 = G__10630;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.unchecked_multiply.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.unchecked_multiply.cljs$core$IFn$_invoke$arity$0 = (function (){
+return (1);
+});
+
+cljs.core.unchecked_multiply.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return x;
+});
+
+cljs.core.unchecked_multiply.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x * y);
+});
+
+cljs.core.unchecked_multiply.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.unchecked_multiply,(x * y),more);
+});
+
+/** @this {Function} */
+cljs.core.unchecked_multiply.cljs$lang$applyTo = (function (seq10623){
+var G__10624 = cljs.core.first(seq10623);
+var seq10623__$1 = cljs.core.next(seq10623);
+var G__10625 = cljs.core.first(seq10623__$1);
+var seq10623__$2 = cljs.core.next(seq10623__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10624,G__10625,seq10623__$2);
+});
+
+cljs.core.unchecked_multiply.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns the product of nums. (*) returns 1.
+ */
+cljs.core.unchecked_multiply_int = (function cljs$core$unchecked_multiply_int(var_args){
+var G__10635 = arguments.length;
+switch (G__10635) {
+case 0:
+return cljs.core.unchecked_multiply_int.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.unchecked_multiply_int.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.unchecked_multiply_int.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10637 = arguments.length;
+var i__9001__auto___10638 = (0);
+while(true){
+if((i__9001__auto___10638 < len__9000__auto___10637)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10638]));
+
+var G__10639 = (i__9001__auto___10638 + (1));
+i__9001__auto___10638 = G__10639;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.unchecked_multiply_int.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.unchecked_multiply_int.cljs$core$IFn$_invoke$arity$0 = (function (){
+return (1);
+});
+
+cljs.core.unchecked_multiply_int.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return x;
+});
+
+cljs.core.unchecked_multiply_int.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x * y);
+});
+
+cljs.core.unchecked_multiply_int.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.unchecked_multiply_int,(x * y),more);
+});
+
+/** @this {Function} */
+cljs.core.unchecked_multiply_int.cljs$lang$applyTo = (function (seq10632){
+var G__10633 = cljs.core.first(seq10632);
+var seq10632__$1 = cljs.core.next(seq10632);
+var G__10634 = cljs.core.first(seq10632__$1);
+var seq10632__$2 = cljs.core.next(seq10632__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10633,G__10634,seq10632__$2);
+});
+
+cljs.core.unchecked_multiply_int.cljs$lang$maxFixedArity = (2);
+
+cljs.core.unchecked_negate = (function cljs$core$unchecked_negate(x){
+return (- x);
+});
+cljs.core.unchecked_negate_int = (function cljs$core$unchecked_negate_int(x){
+return (- x);
+});
+cljs.core.unchecked_remainder_int = (function cljs$core$unchecked_remainder_int(x,n){
+return cljs.core.mod(x,n);
+});
+/**
+ * If no ys are supplied, returns the negation of x, else subtracts
+ * the ys from x and returns the result.
+ */
+cljs.core.unchecked_subtract = (function cljs$core$unchecked_subtract(var_args){
+var G__10644 = arguments.length;
+switch (G__10644) {
+case 1:
+return cljs.core.unchecked_subtract.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.unchecked_subtract.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10646 = arguments.length;
+var i__9001__auto___10647 = (0);
+while(true){
+if((i__9001__auto___10647 < len__9000__auto___10646)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10647]));
+
+var G__10648 = (i__9001__auto___10647 + (1));
+i__9001__auto___10647 = G__10648;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.unchecked_subtract.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.unchecked_subtract.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return (- x);
+});
+
+cljs.core.unchecked_subtract.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x - y);
+});
+
+cljs.core.unchecked_subtract.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.unchecked_subtract,(x - y),more);
+});
+
+/** @this {Function} */
+cljs.core.unchecked_subtract.cljs$lang$applyTo = (function (seq10641){
+var G__10642 = cljs.core.first(seq10641);
+var seq10641__$1 = cljs.core.next(seq10641);
+var G__10643 = cljs.core.first(seq10641__$1);
+var seq10641__$2 = cljs.core.next(seq10641__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10642,G__10643,seq10641__$2);
+});
+
+cljs.core.unchecked_subtract.cljs$lang$maxFixedArity = (2);
+
+/**
+ * If no ys are supplied, returns the negation of x, else subtracts
+ * the ys from x and returns the result.
+ */
+cljs.core.unchecked_subtract_int = (function cljs$core$unchecked_subtract_int(var_args){
+var G__10653 = arguments.length;
+switch (G__10653) {
+case 1:
+return cljs.core.unchecked_subtract_int.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.unchecked_subtract_int.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10655 = arguments.length;
+var i__9001__auto___10656 = (0);
+while(true){
+if((i__9001__auto___10656 < len__9000__auto___10655)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10656]));
+
+var G__10657 = (i__9001__auto___10656 + (1));
+i__9001__auto___10656 = G__10657;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.unchecked_subtract_int.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.unchecked_subtract_int.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return (- x);
+});
+
+cljs.core.unchecked_subtract_int.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x - y);
+});
+
+cljs.core.unchecked_subtract_int.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.unchecked_subtract_int,(x - y),more);
+});
+
+/** @this {Function} */
+cljs.core.unchecked_subtract_int.cljs$lang$applyTo = (function (seq10650){
+var G__10651 = cljs.core.first(seq10650);
+var seq10650__$1 = cljs.core.next(seq10650);
+var G__10652 = cljs.core.first(seq10650__$1);
+var seq10650__$2 = cljs.core.next(seq10650__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10651,G__10652,seq10650__$2);
+});
+
+cljs.core.unchecked_subtract_int.cljs$lang$maxFixedArity = (2);
+
+cljs.core.fix = (function cljs$core$fix(q){
+if((q >= (0))){
+return Math.floor(q);
+} else {
+return Math.ceil(q);
+}
+});
+/**
+ * Coerce to int by stripping decimal places.
+ */
+cljs.core.int$ = (function cljs$core$int(x){
+return (x | (0));
+});
+/**
+ * Coerce to int by stripping decimal places.
+ */
+cljs.core.unchecked_int = (function cljs$core$unchecked_int(x){
+return cljs.core.fix(x);
+});
+/**
+ * Coerce to long by stripping decimal places. Identical to `int'.
+ */
+cljs.core.long$ = (function cljs$core$long(x){
+return cljs.core.fix(x);
+});
+/**
+ * Coerce to long by stripping decimal places. Identical to `int'.
+ */
+cljs.core.unchecked_long = (function cljs$core$unchecked_long(x){
+return cljs.core.fix(x);
+});
+cljs.core.booleans = (function cljs$core$booleans(x){
+return x;
+});
+cljs.core.bytes = (function cljs$core$bytes(x){
+return x;
+});
+cljs.core.chars = (function cljs$core$chars(x){
+return x;
+});
+cljs.core.shorts = (function cljs$core$shorts(x){
+return x;
+});
+cljs.core.ints = (function cljs$core$ints(x){
+return x;
+});
+cljs.core.floats = (function cljs$core$floats(x){
+return x;
+});
+cljs.core.doubles = (function cljs$core$doubles(x){
+return x;
+});
+cljs.core.longs = (function cljs$core$longs(x){
+return x;
+});
+/**
+ * Modulus of num and div with original javascript behavior. i.e. bug for negative numbers
+ */
+cljs.core.js_mod = (function cljs$core$js_mod(n,d){
+return (n % d);
+});
+/**
+ * Modulus of num and div. Truncates toward negative infinity.
+ */
+cljs.core.mod = (function cljs$core$mod(n,d){
+return (((n % d) + d) % d);
+});
+/**
+ * quot[ient] of dividing numerator by denominator.
+ */
+cljs.core.quot = (function cljs$core$quot(n,d){
+var rem = (n % d);
+return cljs.core.fix(((n - rem) / d));
+});
+/**
+ * remainder of dividing numerator by denominator.
+ */
+cljs.core.rem = (function cljs$core$rem(n,d){
+var q = cljs.core.quot(n,d);
+return (n - (d * q));
+});
+/**
+ * Bitwise exclusive or
+ */
+cljs.core.bit_xor = (function cljs$core$bit_xor(var_args){
+var G__10662 = arguments.length;
+switch (G__10662) {
+case 2:
+return cljs.core.bit_xor.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10664 = arguments.length;
+var i__9001__auto___10665 = (0);
+while(true){
+if((i__9001__auto___10665 < len__9000__auto___10664)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10665]));
+
+var G__10666 = (i__9001__auto___10665 + (1));
+i__9001__auto___10665 = G__10666;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.bit_xor.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.bit_xor.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x ^ y);
+});
+
+cljs.core.bit_xor.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.bit_xor,(x ^ y),more);
+});
+
+/** @this {Function} */
+cljs.core.bit_xor.cljs$lang$applyTo = (function (seq10659){
+var G__10660 = cljs.core.first(seq10659);
+var seq10659__$1 = cljs.core.next(seq10659);
+var G__10661 = cljs.core.first(seq10659__$1);
+var seq10659__$2 = cljs.core.next(seq10659__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10660,G__10661,seq10659__$2);
+});
+
+cljs.core.bit_xor.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Bitwise and
+ */
+cljs.core.bit_and = (function cljs$core$bit_and(var_args){
+var G__10671 = arguments.length;
+switch (G__10671) {
+case 2:
+return cljs.core.bit_and.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10673 = arguments.length;
+var i__9001__auto___10674 = (0);
+while(true){
+if((i__9001__auto___10674 < len__9000__auto___10673)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10674]));
+
+var G__10675 = (i__9001__auto___10674 + (1));
+i__9001__auto___10674 = G__10675;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.bit_and.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.bit_and.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x & y);
+});
+
+cljs.core.bit_and.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.bit_and,(x & y),more);
+});
+
+/** @this {Function} */
+cljs.core.bit_and.cljs$lang$applyTo = (function (seq10668){
+var G__10669 = cljs.core.first(seq10668);
+var seq10668__$1 = cljs.core.next(seq10668);
+var G__10670 = cljs.core.first(seq10668__$1);
+var seq10668__$2 = cljs.core.next(seq10668__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10669,G__10670,seq10668__$2);
+});
+
+cljs.core.bit_and.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Bitwise or
+ */
+cljs.core.bit_or = (function cljs$core$bit_or(var_args){
+var G__10680 = arguments.length;
+switch (G__10680) {
+case 2:
+return cljs.core.bit_or.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10682 = arguments.length;
+var i__9001__auto___10683 = (0);
+while(true){
+if((i__9001__auto___10683 < len__9000__auto___10682)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10683]));
+
+var G__10684 = (i__9001__auto___10683 + (1));
+i__9001__auto___10683 = G__10684;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.bit_or.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.bit_or.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x | y);
+});
+
+cljs.core.bit_or.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.bit_or,(x | y),more);
+});
+
+/** @this {Function} */
+cljs.core.bit_or.cljs$lang$applyTo = (function (seq10677){
+var G__10678 = cljs.core.first(seq10677);
+var seq10677__$1 = cljs.core.next(seq10677);
+var G__10679 = cljs.core.first(seq10677__$1);
+var seq10677__$2 = cljs.core.next(seq10677__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10678,G__10679,seq10677__$2);
+});
+
+cljs.core.bit_or.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Bitwise and with complement
+ */
+cljs.core.bit_and_not = (function cljs$core$bit_and_not(var_args){
+var G__10689 = arguments.length;
+switch (G__10689) {
+case 2:
+return cljs.core.bit_and_not.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10691 = arguments.length;
+var i__9001__auto___10692 = (0);
+while(true){
+if((i__9001__auto___10692 < len__9000__auto___10691)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10692]));
+
+var G__10693 = (i__9001__auto___10692 + (1));
+i__9001__auto___10692 = G__10693;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.bit_and_not.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.bit_and_not.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (x & ~y);
+});
+
+cljs.core.bit_and_not.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.bit_and_not,(x & ~y),more);
+});
+
+/** @this {Function} */
+cljs.core.bit_and_not.cljs$lang$applyTo = (function (seq10686){
+var G__10687 = cljs.core.first(seq10686);
+var seq10686__$1 = cljs.core.next(seq10686);
+var G__10688 = cljs.core.first(seq10686__$1);
+var seq10686__$2 = cljs.core.next(seq10686__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10687,G__10688,seq10686__$2);
+});
+
+cljs.core.bit_and_not.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Clear bit at index n
+ */
+cljs.core.bit_clear = (function cljs$core$bit_clear(x,n){
+return (x & ~(1 << n));
+});
+/**
+ * Flip bit at index n
+ */
+cljs.core.bit_flip = (function cljs$core$bit_flip(x,n){
+return (x ^ (1 << n));
+});
+/**
+ * Bitwise complement
+ */
+cljs.core.bit_not = (function cljs$core$bit_not(x){
+return (~ x);
+});
+/**
+ * Set bit at index n
+ */
+cljs.core.bit_set = (function cljs$core$bit_set(x,n){
+return (x | (1 << n));
+});
+/**
+ * Test bit at index n
+ */
+cljs.core.bit_test = (function cljs$core$bit_test(x,n){
+return ((x & (1 << n)) != 0);
+});
+/**
+ * Bitwise shift left
+ */
+cljs.core.bit_shift_left = (function cljs$core$bit_shift_left(x,n){
+return (x << n);
+});
+/**
+ * Bitwise shift right
+ */
+cljs.core.bit_shift_right = (function cljs$core$bit_shift_right(x,n){
+return (x >> n);
+});
+/**
+ * DEPRECATED: Bitwise shift right with zero fill
+ */
+cljs.core.bit_shift_right_zero_fill = (function cljs$core$bit_shift_right_zero_fill(x,n){
+return (x >>> n);
+});
+/**
+ * Bitwise shift right with zero fill
+ */
+cljs.core.unsigned_bit_shift_right = (function cljs$core$unsigned_bit_shift_right(x,n){
+return (x >>> n);
+});
+/**
+ * Counts the number of bits set in n
+ */
+cljs.core.bit_count = (function cljs$core$bit_count(v){
+var v__$1 = (v - ((v >> (1)) & (1431655765)));
+var v__$2 = ((v__$1 & (858993459)) + ((v__$1 >> (2)) & (858993459)));
+return ((((v__$2 + (v__$2 >> (4))) & (252645135)) * (16843009)) >> (24));
+});
+/**
+ * Returns non-nil if nums all have the equivalent
+ * value, otherwise false. Behavior on non nums is
+ * undefined.
+ */
+cljs.core._EQ__EQ_ = (function cljs$core$_EQ__EQ_(var_args){
+var G__10698 = arguments.length;
+switch (G__10698) {
+case 1:
+return cljs.core._EQ__EQ_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core._EQ__EQ_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10700 = arguments.length;
+var i__9001__auto___10701 = (0);
+while(true){
+if((i__9001__auto___10701 < len__9000__auto___10700)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10701]));
+
+var G__10702 = (i__9001__auto___10701 + (1));
+i__9001__auto___10701 = G__10702;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core._EQ__EQ_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core._EQ__EQ_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return true;
+});
+
+cljs.core._EQ__EQ_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return cljs.core._equiv(x,y);
+});
+
+cljs.core._EQ__EQ_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+while(true){
+if((x === y)){
+if(cljs.core.next(more)){
+var G__10703 = y;
+var G__10704 = cljs.core.first(more);
+var G__10705 = cljs.core.next(more);
+x = G__10703;
+y = G__10704;
+more = G__10705;
+continue;
+} else {
+return (y === cljs.core.first(more));
+}
+} else {
+return false;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core._EQ__EQ_.cljs$lang$applyTo = (function (seq10695){
+var G__10696 = cljs.core.first(seq10695);
+var seq10695__$1 = cljs.core.next(seq10695);
+var G__10697 = cljs.core.first(seq10695__$1);
+var seq10695__$2 = cljs.core.next(seq10695__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10696,G__10697,seq10695__$2);
+});
+
+cljs.core._EQ__EQ_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns true if num is greater than zero, else false
+ */
+cljs.core.pos_QMARK_ = (function cljs$core$pos_QMARK_(x){
+return (x > (0));
+});
+/**
+ * Returns true if num is zero, else false
+ */
+cljs.core.zero_QMARK_ = (function cljs$core$zero_QMARK_(x){
+return (x === (0));
+});
+/**
+ * Returns true if num is less than zero, else false
+ */
+cljs.core.neg_QMARK_ = (function cljs$core$neg_QMARK_(x){
+return (x < (0));
+});
+/**
+ * Returns the nth next of coll, (seq coll) when n is 0.
+ */
+cljs.core.nthnext = (function cljs$core$nthnext(coll,n){
+var n__$1 = n;
+var xs = cljs.core.seq(coll);
+while(true){
+if(((xs) && ((n__$1 > (0))))){
+var G__10706 = (n__$1 - (1));
+var G__10707 = cljs.core.next(xs);
+n__$1 = G__10706;
+xs = G__10707;
+continue;
+} else {
+return xs;
+}
+break;
+}
+});
+/**
+ * With no args, returns the empty string. With one arg x, returns
+ * x.toString(). (str nil) returns the empty string. With more than
+ * one arg, returns the concatenation of the str values of the args.
+ */
+cljs.core.str = (function cljs$core$str(var_args){
+var G__10711 = arguments.length;
+switch (G__10711) {
+case 0:
+return cljs.core.str.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.str.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10713 = arguments.length;
+var i__9001__auto___10714 = (0);
+while(true){
+if((i__9001__auto___10714 < len__9000__auto___10713)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10714]));
+
+var G__10715 = (i__9001__auto___10714 + (1));
+i__9001__auto___10714 = G__10715;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((1)),(0),null));
+return cljs.core.str.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.str.cljs$core$IFn$_invoke$arity$0 = (function (){
+return "";
+});
+
+cljs.core.str.cljs$core$IFn$_invoke$arity$1 = (function (x){
+if((x == null)){
+return "";
+} else {
+return [x].join("");
+}
+});
+
+cljs.core.str.cljs$core$IFn$_invoke$arity$variadic = (function (x,ys){
+var sb = (new goog.string.StringBuffer(cljs.core.str.cljs$core$IFn$_invoke$arity$1(x)));
+var more = ys;
+while(true){
+if(cljs.core.truth_(more)){
+var G__10716 = sb.append(cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.first(more)));
+var G__10717 = cljs.core.next(more);
+sb = G__10716;
+more = G__10717;
+continue;
+} else {
+return sb.toString();
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core.str.cljs$lang$applyTo = (function (seq10709){
+var G__10710 = cljs.core.first(seq10709);
+var seq10709__$1 = cljs.core.next(seq10709);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10710,seq10709__$1);
+});
+
+cljs.core.str.cljs$lang$maxFixedArity = (1);
+
+/**
+ * Returns the substring of s beginning at start inclusive, and ending
+ * at end (defaults to length of string), exclusive.
+ */
+cljs.core.subs = (function cljs$core$subs(var_args){
+var G__10719 = arguments.length;
+switch (G__10719) {
+case 2:
+return cljs.core.subs.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.subs.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.subs.cljs$core$IFn$_invoke$arity$2 = (function (s,start){
+return s.substring(start);
+});
+
+cljs.core.subs.cljs$core$IFn$_invoke$arity$3 = (function (s,start,end){
+return s.substring(start,end);
+});
+
+cljs.core.subs.cljs$lang$maxFixedArity = 3;
+
+
+/**
+ * Assumes x is sequential. Returns true if x equals y, otherwise
+ * returns false.
+ */
+cljs.core.equiv_sequential = (function cljs$core$equiv_sequential(x,y){
+return cljs.core.boolean$(((cljs.core.sequential_QMARK_(y))?((((cljs.core.counted_QMARK_(x)) && (cljs.core.counted_QMARK_(y)) && ((!((cljs.core.count(x) === cljs.core.count(y)))))))?false:(function (){var xs = cljs.core.seq(x);
+var ys = cljs.core.seq(y);
+while(true){
+if((xs == null)){
+return (ys == null);
+} else {
+if((ys == null)){
+return false;
+} else {
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.first(xs),cljs.core.first(ys))){
+var G__10721 = cljs.core.next(xs);
+var G__10722 = cljs.core.next(ys);
+xs = G__10721;
+ys = G__10722;
+continue;
+} else {
+return false;
+
+}
+}
+}
+break;
+}
+})()):null));
+});
+cljs.core.hash_coll = (function cljs$core$hash_coll(coll){
+if(cljs.core.seq(coll)){
+var res = cljs.core.hash(cljs.core.first(coll));
+var s = cljs.core.next(coll);
+while(true){
+if((s == null)){
+return res;
+} else {
+var G__10723 = cljs.core.hash_combine(res,cljs.core.hash(cljs.core.first(s)));
+var G__10724 = cljs.core.next(s);
+res = G__10723;
+s = G__10724;
+continue;
+}
+break;
+}
+} else {
+return (0);
+}
+});
+
+cljs.core.hash_imap = (function cljs$core$hash_imap(m){
+var h = (0);
+var s = cljs.core.seq(m);
+while(true){
+if(s){
+var e = cljs.core.first(s);
+var G__10725 = ((h + (cljs.core.hash(cljs.core.key(e)) ^ cljs.core.hash(cljs.core.val(e)))) % (4503599627370496));
+var G__10726 = cljs.core.next(s);
+h = G__10725;
+s = G__10726;
+continue;
+} else {
+return h;
+}
+break;
+}
+});
+cljs.core.hash_iset = (function cljs$core$hash_iset(s){
+var h = (0);
+var s__$1 = cljs.core.seq(s);
+while(true){
+if(s__$1){
+var e = cljs.core.first(s__$1);
+var G__10727 = ((h + cljs.core.hash(e)) % (4503599627370496));
+var G__10728 = cljs.core.next(s__$1);
+h = G__10727;
+s__$1 = G__10728;
+continue;
+} else {
+return h;
+}
+break;
+}
+});
+
+
+/**
+ * Takes a JavaScript object and a map of names to functions and
+ * attaches said functions as methods on the object. Any references to
+ * JavaScript's implicit this (via the this-as macro) will resolve to the
+ * object that the function is attached.
+ */
+cljs.core.extend_object_BANG_ = (function cljs$core$extend_object_BANG_(obj,fn_map){
+var seq__10729_10739 = cljs.core.seq(fn_map);
+var chunk__10730_10740 = null;
+var count__10731_10741 = (0);
+var i__10732_10742 = (0);
+while(true){
+if((i__10732_10742 < count__10731_10741)){
+var vec__10733_10743 = chunk__10730_10740.cljs$core$IIndexed$_nth$arity$2(null,i__10732_10742);
+var key_name_10744 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10733_10743,(0),null);
+var f_10745 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10733_10743,(1),null);
+var str_name_10746 = cljs.core.name(key_name_10744);
+goog.object.set(obj,str_name_10746,f_10745);
+
+
+var G__10747 = seq__10729_10739;
+var G__10748 = chunk__10730_10740;
+var G__10749 = count__10731_10741;
+var G__10750 = (i__10732_10742 + (1));
+seq__10729_10739 = G__10747;
+chunk__10730_10740 = G__10748;
+count__10731_10741 = G__10749;
+i__10732_10742 = G__10750;
+continue;
+} else {
+var temp__4657__auto___10751 = cljs.core.seq(seq__10729_10739);
+if(temp__4657__auto___10751){
+var seq__10729_10752__$1 = temp__4657__auto___10751;
+if(cljs.core.chunked_seq_QMARK_(seq__10729_10752__$1)){
+var c__8664__auto___10753 = cljs.core.chunk_first(seq__10729_10752__$1);
+var G__10754 = cljs.core.chunk_rest(seq__10729_10752__$1);
+var G__10755 = c__8664__auto___10753;
+var G__10756 = cljs.core.count(c__8664__auto___10753);
+var G__10757 = (0);
+seq__10729_10739 = G__10754;
+chunk__10730_10740 = G__10755;
+count__10731_10741 = G__10756;
+i__10732_10742 = G__10757;
+continue;
+} else {
+var vec__10736_10758 = cljs.core.first(seq__10729_10752__$1);
+var key_name_10759 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10736_10758,(0),null);
+var f_10760 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10736_10758,(1),null);
+var str_name_10761 = cljs.core.name(key_name_10759);
+goog.object.set(obj,str_name_10761,f_10760);
+
+
+var G__10762 = cljs.core.next(seq__10729_10752__$1);
+var G__10763 = null;
+var G__10764 = (0);
+var G__10765 = (0);
+seq__10729_10739 = G__10762;
+chunk__10730_10740 = G__10763;
+count__10731_10741 = G__10764;
+i__10732_10742 = G__10765;
+continue;
+}
+} else {
+}
+}
+break;
+}
+
+return obj;
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IList}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ASeq}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IStack}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.List = (function (meta,first,rest,count,__hash){
+this.meta = meta;
+this.first = first;
+this.rest = rest;
+this.count = count;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 65937646;
+this.cljs$lang$protocol_mask$partition1$ = 8192;
+});
+cljs.core.List.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.List.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.List.prototype.indexOf = (function() {
+var G__10766 = null;
+var G__10766__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__10766__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10766 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10766__1.call(this,x);
+case 2:
+return G__10766__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10766.cljs$core$IFn$_invoke$arity$1 = G__10766__1;
+G__10766.cljs$core$IFn$_invoke$arity$2 = G__10766__2;
+return G__10766;
+})()
+;
+
+cljs.core.List.prototype.lastIndexOf = (function() {
+var G__10767 = null;
+var G__10767__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,self__.count);
+});
+var G__10767__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10767 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10767__1.call(this,x);
+case 2:
+return G__10767__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10767.cljs$core$IFn$_invoke$arity$1 = G__10767__1;
+G__10767.cljs$core$IFn$_invoke$arity$2 = G__10767__2;
+return G__10767;
+})()
+;
+
+cljs.core.List.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.List.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.List(self__.meta,self__.first,self__.rest,self__.count,self__.__hash));
+});
+
+cljs.core.List.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.count === (1))){
+return null;
+} else {
+return self__.rest;
+}
+});
+
+cljs.core.List.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.count;
+});
+
+cljs.core.List.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.first;
+});
+
+cljs.core.List.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ISeq$_rest$arity$1(null);
+});
+
+cljs.core.List.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.List.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.List.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.List.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.List.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.List.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.first;
+});
+
+cljs.core.List.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.count === (1))){
+return cljs.core.List.EMPTY;
+} else {
+return self__.rest;
+}
+});
+
+cljs.core.List.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.List.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.List(meta__$1,self__.first,self__.rest,self__.count,self__.__hash));
+});
+
+cljs.core.List.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.List(self__.meta,o,coll__$1,(self__.count + (1)),null));
+});
+
+cljs.core.List.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"first","first",996428481,null),new cljs.core.Symbol(null,"rest","rest",398835108,null),new cljs.core.Symbol(null,"count","count",-514511684,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.List.cljs$lang$type = true;
+
+cljs.core.List.cljs$lang$ctorStr = "cljs.core/List";
+
+cljs.core.List.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/List");
+});
+
+/**
+ * Positional factory function for cljs.core/List.
+ */
+cljs.core.__GT_List = (function cljs$core$__GT_List(meta,first,rest,count,__hash){
+return (new cljs.core.List(meta,first,rest,count,__hash));
+});
+
+/**
+ * Returns true if x implements IList
+ */
+cljs.core.list_QMARK_ = (function cljs$core$list_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (33554432))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IList$)))){
+return true;
+} else {
+if((!x.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IList,x);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IList,x);
+}
+});
+var G__10769_10772 = cljs.core.List.prototype;
+var G__10770_10773 = cljs.core.ITER_SYMBOL;
+var G__10771_10774 = ((function (G__10769_10772,G__10770_10773){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__10769_10772,G__10770_10773))
+;
+goog.object.set(G__10769_10772,G__10770_10773,G__10771_10774);
+
+/**
+* @constructor
+ * @implements {cljs.core.IList}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IStack}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.EmptyList = (function (meta){
+this.meta = meta;
+this.cljs$lang$protocol_mask$partition0$ = 65937614;
+this.cljs$lang$protocol_mask$partition1$ = 8192;
+});
+cljs.core.EmptyList.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.EmptyList.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.EmptyList.prototype.indexOf = (function() {
+var G__10775 = null;
+var G__10775__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__10775__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10775 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10775__1.call(this,x);
+case 2:
+return G__10775__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10775.cljs$core$IFn$_invoke$arity$1 = G__10775__1;
+G__10775.cljs$core$IFn$_invoke$arity$2 = G__10775__2;
+return G__10775;
+})()
+;
+
+cljs.core.EmptyList.prototype.lastIndexOf = (function() {
+var G__10776 = null;
+var G__10776__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__10776__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10776 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10776__1.call(this,x);
+case 2:
+return G__10776__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10776.cljs$core$IFn$_invoke$arity$1 = G__10776__1;
+G__10776.cljs$core$IFn$_invoke$arity$2 = G__10776__2;
+return G__10776;
+})()
+;
+
+cljs.core.EmptyList.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.EmptyList.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.EmptyList(self__.meta));
+});
+
+cljs.core.EmptyList.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return null;
+});
+
+cljs.core.EmptyList.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (0);
+});
+
+cljs.core.EmptyList.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return null;
+});
+
+cljs.core.EmptyList.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+throw (new Error("Can't pop empty list"));
+});
+
+cljs.core.EmptyList.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.empty_ordered_hash;
+});
+
+cljs.core.EmptyList.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+if(((cljs.core.list_QMARK_(other)) || (cljs.core.sequential_QMARK_(other)))){
+return (cljs.core.seq(other) == null);
+} else {
+return false;
+}
+});
+
+cljs.core.EmptyList.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.EmptyList.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.EmptyList.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.EmptyList.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return null;
+});
+
+cljs.core.EmptyList.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.List.EMPTY;
+});
+
+cljs.core.EmptyList.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return null;
+});
+
+cljs.core.EmptyList.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.EmptyList(meta__$1));
+});
+
+cljs.core.EmptyList.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.List(self__.meta,o,null,(1),null));
+});
+
+cljs.core.EmptyList.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null)], null);
+});
+
+cljs.core.EmptyList.cljs$lang$type = true;
+
+cljs.core.EmptyList.cljs$lang$ctorStr = "cljs.core/EmptyList";
+
+cljs.core.EmptyList.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/EmptyList");
+});
+
+/**
+ * Positional factory function for cljs.core/EmptyList.
+ */
+cljs.core.__GT_EmptyList = (function cljs$core$__GT_EmptyList(meta){
+return (new cljs.core.EmptyList(meta));
+});
+
+cljs.core.List.EMPTY = (new cljs.core.EmptyList(null));
+var G__10777_10780 = cljs.core.EmptyList.prototype;
+var G__10778_10781 = cljs.core.ITER_SYMBOL;
+var G__10779_10782 = ((function (G__10777_10780,G__10778_10781){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__10777_10780,G__10778_10781))
+;
+goog.object.set(G__10777_10780,G__10778_10781,G__10779_10782);
+/**
+ * Returns true if coll satisfies? IReversible.
+ */
+cljs.core.reversible_QMARK_ = (function cljs$core$reversible_QMARK_(coll){
+if((!((coll == null)))){
+if((((coll.cljs$lang$protocol_mask$partition0$ & (134217728))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$IReversible$)))){
+return true;
+} else {
+if((!coll.cljs$lang$protocol_mask$partition0$)){
+return cljs.core.native_satisfies_QMARK_(cljs.core.IReversible,coll);
+} else {
+return false;
+}
+}
+} else {
+return cljs.core.native_satisfies_QMARK_(cljs.core.IReversible,coll);
+}
+});
+/**
+ * Returns, in constant time, a seq of the items in rev (which
+ * can be a vector or sorted-map), in reverse order. If rev is empty returns nil
+ */
+cljs.core.rseq = (function cljs$core$rseq(rev){
+return cljs.core._rseq(rev);
+});
+/**
+ * Returns a seq of the items in coll in reverse order. Not lazy.
+ */
+cljs.core.reverse = (function cljs$core$reverse(coll){
+if(cljs.core.reversible_QMARK_(coll)){
+var or__7806__auto__ = cljs.core.rseq(coll);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return cljs.core.List.EMPTY;
+}
+} else {
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.conj,cljs.core.List.EMPTY,coll);
+}
+});
+/**
+ * Creates a new list containing the items.
+ */
+cljs.core.list = (function cljs$core$list(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___10785 = arguments.length;
+var i__9001__auto___10786 = (0);
+while(true){
+if((i__9001__auto___10786 < len__9000__auto___10785)){
+args__9010__auto__.push((arguments[i__9001__auto___10786]));
+
+var G__10787 = (i__9001__auto___10786 + (1));
+i__9001__auto___10786 = G__10787;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.list.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.list.cljs$core$IFn$_invoke$arity$variadic = (function (xs){
+var arr = (((((xs instanceof cljs.core.IndexedSeq)) && ((xs.i === (0)))))?xs.arr:(function (){var arr = [];
+var xs__$1 = xs;
+while(true){
+if((!((xs__$1 == null)))){
+arr.push(xs__$1.cljs$core$ISeq$_first$arity$1(null));
+
+var G__10788 = xs__$1.cljs$core$INext$_next$arity$1(null);
+xs__$1 = G__10788;
+continue;
+} else {
+return arr;
+}
+break;
+}
+})());
+var i = arr.length;
+var r = cljs.core.List.EMPTY;
+while(true){
+if((i > (0))){
+var G__10789 = (i - (1));
+var G__10790 = r.cljs$core$ICollection$_conj$arity$2(null,(arr[(i - (1))]));
+i = G__10789;
+r = G__10790;
+continue;
+} else {
+return r;
+}
+break;
+}
+});
+
+cljs.core.list.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.list.cljs$lang$applyTo = (function (seq10784){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq10784));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IList}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ASeq}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.Cons = (function (meta,first,rest,__hash){
+this.meta = meta;
+this.first = first;
+this.rest = rest;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 65929452;
+this.cljs$lang$protocol_mask$partition1$ = 8192;
+});
+cljs.core.Cons.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.Cons.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.Cons.prototype.indexOf = (function() {
+var G__10791 = null;
+var G__10791__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__10791__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10791 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10791__1.call(this,x);
+case 2:
+return G__10791__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10791.cljs$core$IFn$_invoke$arity$1 = G__10791__1;
+G__10791.cljs$core$IFn$_invoke$arity$2 = G__10791__2;
+return G__10791;
+})()
+;
+
+cljs.core.Cons.prototype.lastIndexOf = (function() {
+var G__10792 = null;
+var G__10792__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__10792__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10792 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10792__1.call(this,x);
+case 2:
+return G__10792__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10792.cljs$core$IFn$_invoke$arity$1 = G__10792__1;
+G__10792.cljs$core$IFn$_invoke$arity$2 = G__10792__2;
+return G__10792;
+})()
+;
+
+cljs.core.Cons.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.Cons.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.Cons(self__.meta,self__.first,self__.rest,self__.__hash));
+});
+
+cljs.core.Cons.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.rest == null)){
+return null;
+} else {
+return cljs.core.seq(self__.rest);
+}
+});
+
+cljs.core.Cons.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.Cons.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.Cons.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.Cons.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.Cons.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.Cons.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.first;
+});
+
+cljs.core.Cons.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.rest == null)){
+return cljs.core.List.EMPTY;
+} else {
+return self__.rest;
+}
+});
+
+cljs.core.Cons.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.Cons.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.Cons(meta__$1,self__.first,self__.rest,self__.__hash));
+});
+
+cljs.core.Cons.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.Cons(null,o,coll__$1,null));
+});
+
+cljs.core.Cons.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"first","first",996428481,null),new cljs.core.Symbol(null,"rest","rest",398835108,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Cons.cljs$lang$type = true;
+
+cljs.core.Cons.cljs$lang$ctorStr = "cljs.core/Cons";
+
+cljs.core.Cons.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Cons");
+});
+
+/**
+ * Positional factory function for cljs.core/Cons.
+ */
+cljs.core.__GT_Cons = (function cljs$core$__GT_Cons(meta,first,rest,__hash){
+return (new cljs.core.Cons(meta,first,rest,__hash));
+});
+
+var G__10793_10796 = cljs.core.Cons.prototype;
+var G__10794_10797 = cljs.core.ITER_SYMBOL;
+var G__10795_10798 = ((function (G__10793_10796,G__10794_10797){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__10793_10796,G__10794_10797))
+;
+goog.object.set(G__10793_10796,G__10794_10797,G__10795_10798);
+/**
+ * Returns a new seq where x is the first element and coll is the rest.
+ */
+cljs.core.cons = (function cljs$core$cons(x,coll){
+if((function (){var or__7806__auto__ = (coll == null);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+if((!((coll == null)))){
+if((((coll.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === coll.cljs$core$ISeq$)))){
+return true;
+} else {
+return false;
+}
+} else {
+return false;
+}
+}
+})()){
+return (new cljs.core.Cons(null,x,coll,null));
+} else {
+return (new cljs.core.Cons(null,x,cljs.core.seq(coll),null));
+}
+});
+cljs.core.hash_keyword = (function cljs$core$hash_keyword(k){
+return ((cljs.core.hash_symbol(k) + (2654435769)) | (0));
+});
+cljs.core.compare_keywords = (function cljs$core$compare_keywords(a,b){
+if((a.fqn === b.fqn)){
+return (0);
+} else {
+if(cljs.core.truth_((function (){var and__7791__auto__ = cljs.core.not(a.ns);
+if(and__7791__auto__){
+return b.ns;
+} else {
+return and__7791__auto__;
+}
+})())){
+return (-1);
+} else {
+if(cljs.core.truth_(a.ns)){
+if(cljs.core.not(b.ns)){
+return (1);
+} else {
+var nsc = (function (){var G__10801 = a.ns;
+var G__10802 = b.ns;
+return goog.array.defaultCompare(G__10801,G__10802);
+})();
+if(((0) === nsc)){
+var G__10803 = a.name;
+var G__10804 = b.name;
+return goog.array.defaultCompare(G__10803,G__10804);
+} else {
+return nsc;
+}
+}
+} else {
+var G__10805 = a.name;
+var G__10806 = b.name;
+return goog.array.defaultCompare(G__10805,G__10806);
+
+}
+}
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.INamed}
+ * @implements {cljs.core.IPrintWithWriter}
+*/
+cljs.core.Keyword = (function (ns,name,fqn,_hash){
+this.ns = ns;
+this.name = name;
+this.fqn = fqn;
+this._hash = _hash;
+this.cljs$lang$protocol_mask$partition0$ = 2153775105;
+this.cljs$lang$protocol_mask$partition1$ = 4096;
+});
+cljs.core.Keyword.prototype.toString = (function (){
+var self__ = this;
+var _ = this;
+return [":",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.fqn)].join('');
+});
+
+cljs.core.Keyword.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.Keyword.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (_,other){
+var self__ = this;
+var ___$1 = this;
+if((other instanceof cljs.core.Keyword)){
+return (self__.fqn === other.fqn);
+} else {
+return false;
+}
+});
+
+cljs.core.Keyword.prototype.call = (function() {
+var G__10808 = null;
+var G__10808__2 = (function (self__,coll){
+var self__ = this;
+var self____$1 = this;
+var kw = self____$1;
+return cljs.core.get.cljs$core$IFn$_invoke$arity$2(coll,kw);
+});
+var G__10808__3 = (function (self__,coll,not_found){
+var self__ = this;
+var self____$1 = this;
+var kw = self____$1;
+return cljs.core.get.cljs$core$IFn$_invoke$arity$3(coll,kw,not_found);
+});
+G__10808 = function(self__,coll,not_found){
+switch(arguments.length){
+case 2:
+return G__10808__2.call(this,self__,coll);
+case 3:
+return G__10808__3.call(this,self__,coll,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__10808.cljs$core$IFn$_invoke$arity$2 = G__10808__2;
+G__10808.cljs$core$IFn$_invoke$arity$3 = G__10808__3;
+return G__10808;
+})()
+;
+
+cljs.core.Keyword.prototype.apply = (function (self__,args10807){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args10807)));
+});
+
+cljs.core.Keyword.prototype.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+var self__ = this;
+var kw = this;
+return cljs.core.get.cljs$core$IFn$_invoke$arity$2(coll,kw);
+});
+
+cljs.core.Keyword.prototype.cljs$core$IFn$_invoke$arity$2 = (function (coll,not_found){
+var self__ = this;
+var kw = this;
+return cljs.core.get.cljs$core$IFn$_invoke$arity$3(coll,kw,not_found);
+});
+
+cljs.core.Keyword.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+var h__8266__auto__ = self__._hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_keyword(this$__$1);
+self__._hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.Keyword.prototype.cljs$core$INamed$_name$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.name;
+});
+
+cljs.core.Keyword.prototype.cljs$core$INamed$_namespace$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.ns;
+});
+
+cljs.core.Keyword.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (o,writer,_){
+var self__ = this;
+var o__$1 = this;
+return cljs.core._write(writer,[":",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.fqn)].join(''));
+});
+
+cljs.core.Keyword.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"ns","ns",2082130287,null),new cljs.core.Symbol(null,"name","name",-810760592,null),new cljs.core.Symbol(null,"fqn","fqn",-1749334463,null),cljs.core.with_meta(new cljs.core.Symbol(null,"_hash","_hash",-2130838312,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Keyword.cljs$lang$type = true;
+
+cljs.core.Keyword.cljs$lang$ctorStr = "cljs.core/Keyword";
+
+cljs.core.Keyword.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Keyword");
+});
+
+/**
+ * Positional factory function for cljs.core/Keyword.
+ */
+cljs.core.__GT_Keyword = (function cljs$core$__GT_Keyword(ns,name,fqn,_hash){
+return (new cljs.core.Keyword(ns,name,fqn,_hash));
+});
+
+/**
+ * Return true if x is a Keyword
+ */
+cljs.core.keyword_QMARK_ = (function cljs$core$keyword_QMARK_(x){
+return (x instanceof cljs.core.Keyword);
+});
+/**
+ * Efficient test to determine that two keywords are identical.
+ */
+cljs.core.keyword_identical_QMARK_ = (function cljs$core$keyword_identical_QMARK_(x,y){
+if((x === y)){
+return true;
+} else {
+if((((x instanceof cljs.core.Keyword)) && ((y instanceof cljs.core.Keyword)))){
+return (x.fqn === y.fqn);
+} else {
+return false;
+}
+}
+});
+/**
+ * Efficient test to determine that two symbols are identical.
+ */
+cljs.core.symbol_identical_QMARK_ = (function cljs$core$symbol_identical_QMARK_(x,y){
+if((x === y)){
+return true;
+} else {
+if((((x instanceof cljs.core.Symbol)) && ((y instanceof cljs.core.Symbol)))){
+return (x.str === y.str);
+} else {
+return false;
+}
+}
+});
+/**
+ * Returns the namespace String of a symbol or keyword, or nil if not present.
+ */
+cljs.core.namespace = (function cljs$core$namespace(x){
+if((((!((x == null))))?(((((x.cljs$lang$protocol_mask$partition1$ & (4096))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$INamed$))))?true:false):false)){
+return x.cljs$core$INamed$_namespace$arity$1(null);
+} else {
+throw (new Error(["Doesn't support namespace: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x)].join('')));
+}
+});
+/**
+ * Return true if x is a symbol or keyword
+ */
+cljs.core.ident_QMARK_ = (function cljs$core$ident_QMARK_(x){
+return (((x instanceof cljs.core.Keyword)) || ((x instanceof cljs.core.Symbol)));
+});
+/**
+ * Return true if x is a symbol or keyword without a namespace
+ */
+cljs.core.simple_ident_QMARK_ = (function cljs$core$simple_ident_QMARK_(x){
+return ((cljs.core.ident_QMARK_(x)) && ((cljs.core.namespace(x) == null)));
+});
+/**
+ * Return true if x is a symbol or keyword with a namespace
+ */
+cljs.core.qualified_ident_QMARK_ = (function cljs$core$qualified_ident_QMARK_(x){
+return cljs.core.boolean$((function (){var and__7791__auto__ = cljs.core.ident_QMARK_(x);
+if(and__7791__auto__){
+var and__7791__auto____$1 = cljs.core.namespace(x);
+if(cljs.core.truth_(and__7791__auto____$1)){
+return true;
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+})());
+});
+/**
+ * Return true if x is a symbol without a namespace
+ */
+cljs.core.simple_symbol_QMARK_ = (function cljs$core$simple_symbol_QMARK_(x){
+return (((x instanceof cljs.core.Symbol)) && ((cljs.core.namespace(x) == null)));
+});
+/**
+ * Return true if x is a symbol with a namespace
+ */
+cljs.core.qualified_symbol_QMARK_ = (function cljs$core$qualified_symbol_QMARK_(x){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (x instanceof cljs.core.Symbol);
+if(and__7791__auto__){
+var and__7791__auto____$1 = cljs.core.namespace(x);
+if(cljs.core.truth_(and__7791__auto____$1)){
+return true;
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+})());
+});
+/**
+ * Return true if x is a keyword without a namespace
+ */
+cljs.core.simple_keyword_QMARK_ = (function cljs$core$simple_keyword_QMARK_(x){
+return (((x instanceof cljs.core.Keyword)) && ((cljs.core.namespace(x) == null)));
+});
+/**
+ * Return true if x is a keyword with a namespace
+ */
+cljs.core.qualified_keyword_QMARK_ = (function cljs$core$qualified_keyword_QMARK_(x){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (x instanceof cljs.core.Keyword);
+if(and__7791__auto__){
+var and__7791__auto____$1 = cljs.core.namespace(x);
+if(cljs.core.truth_(and__7791__auto____$1)){
+return true;
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+})());
+});
+/**
+ * Returns a Keyword with the given namespace and name. Do not use :
+ * in the keyword strings, it will be added automatically.
+ */
+cljs.core.keyword = (function cljs$core$keyword(var_args){
+var G__10811 = arguments.length;
+switch (G__10811) {
+case 1:
+return cljs.core.keyword.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.keyword.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.keyword.cljs$core$IFn$_invoke$arity$1 = (function (name){
+if((name instanceof cljs.core.Keyword)){
+return name;
+} else {
+if((name instanceof cljs.core.Symbol)){
+return (new cljs.core.Keyword(cljs.core.namespace(name),cljs.core.name(name),name.str,null));
+} else {
+if(typeof name === 'string'){
+var parts = name.split("/");
+if((parts.length === (2))){
+return (new cljs.core.Keyword((parts[(0)]),(parts[(1)]),name,null));
+} else {
+return (new cljs.core.Keyword(null,(parts[(0)]),name,null));
+}
+} else {
+return null;
+}
+}
+}
+});
+
+cljs.core.keyword.cljs$core$IFn$_invoke$arity$2 = (function (ns,name){
+var ns__$1 = (((ns instanceof cljs.core.Keyword))?cljs.core.name(ns):(((ns instanceof cljs.core.Symbol))?cljs.core.name(ns):ns
+));
+var name__$1 = (((name instanceof cljs.core.Keyword))?cljs.core.name(name):(((name instanceof cljs.core.Symbol))?cljs.core.name(name):name
+));
+return (new cljs.core.Keyword(ns__$1,name__$1,[cljs.core.str.cljs$core$IFn$_invoke$arity$1((cljs.core.truth_(ns__$1)?[cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns__$1),"/"].join(''):null)),cljs.core.str.cljs$core$IFn$_invoke$arity$1(name__$1)].join(''),null));
+});
+
+cljs.core.keyword.cljs$lang$maxFixedArity = 2;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IPending}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.LazySeq = (function (meta,fn,s,__hash){
+this.meta = meta;
+this.fn = fn;
+this.s = s;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 32374988;
+this.cljs$lang$protocol_mask$partition1$ = 1;
+});
+cljs.core.LazySeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.LazySeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.LazySeq.prototype.sval = (function (){
+var self__ = this;
+var coll = this;
+if((self__.fn == null)){
+return self__.s;
+} else {
+self__.s = (self__.fn.cljs$core$IFn$_invoke$arity$0 ? self__.fn.cljs$core$IFn$_invoke$arity$0() : self__.fn.call(null));
+
+self__.fn = null;
+
+return self__.s;
+}
+});
+
+cljs.core.LazySeq.prototype.indexOf = (function() {
+var G__10813 = null;
+var G__10813__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__10813__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10813 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10813__1.call(this,x);
+case 2:
+return G__10813__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10813.cljs$core$IFn$_invoke$arity$1 = G__10813__1;
+G__10813.cljs$core$IFn$_invoke$arity$2 = G__10813__2;
+return G__10813;
+})()
+;
+
+cljs.core.LazySeq.prototype.lastIndexOf = (function() {
+var G__10814 = null;
+var G__10814__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__10814__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10814 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10814__1.call(this,x);
+case 2:
+return G__10814__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10814.cljs$core$IFn$_invoke$arity$1 = G__10814__1;
+G__10814.cljs$core$IFn$_invoke$arity$2 = G__10814__2;
+return G__10814;
+})()
+;
+
+cljs.core.LazySeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.LazySeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+coll__$1.cljs$core$ISeqable$_seq$arity$1(null);
+
+if((self__.s == null)){
+return null;
+} else {
+return cljs.core.next(self__.s);
+}
+});
+
+cljs.core.LazySeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.LazySeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.LazySeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.LazySeq.prototype.cljs$core$IPending$_realized_QMARK_$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.not(self__.fn);
+});
+
+cljs.core.LazySeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.LazySeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.LazySeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+coll__$1.cljs$core$ISeqable$_seq$arity$1(null);
+
+if((self__.s == null)){
+return null;
+} else {
+return cljs.core.first(self__.s);
+}
+});
+
+cljs.core.LazySeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+coll__$1.cljs$core$ISeqable$_seq$arity$1(null);
+
+if((!((self__.s == null)))){
+return cljs.core.rest(self__.s);
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.LazySeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+coll__$1.sval();
+
+if((self__.s == null)){
+return null;
+} else {
+var ls = self__.s;
+while(true){
+if((ls instanceof cljs.core.LazySeq)){
+var G__10815 = ls.sval();
+ls = G__10815;
+continue;
+} else {
+self__.s = ls;
+
+return cljs.core.seq(self__.s);
+}
+break;
+}
+}
+});
+
+cljs.core.LazySeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.LazySeq(meta__$1,((function (coll__$1){
+return (function (){
+return coll__$1.cljs$core$ISeqable$_seq$arity$1(null);
+});})(coll__$1))
+,null,self__.__hash));
+});
+
+cljs.core.LazySeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.LazySeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),cljs.core.with_meta(new cljs.core.Symbol(null,"fn","fn",465265323,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"s","s",-948495851,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.LazySeq.cljs$lang$type = true;
+
+cljs.core.LazySeq.cljs$lang$ctorStr = "cljs.core/LazySeq";
+
+cljs.core.LazySeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/LazySeq");
+});
+
+/**
+ * Positional factory function for cljs.core/LazySeq.
+ */
+cljs.core.__GT_LazySeq = (function cljs$core$__GT_LazySeq(meta,fn,s,__hash){
+return (new cljs.core.LazySeq(meta,fn,s,__hash));
+});
+
+var G__10816_10819 = cljs.core.LazySeq.prototype;
+var G__10817_10820 = cljs.core.ITER_SYMBOL;
+var G__10818_10821 = ((function (G__10816_10819,G__10817_10820){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__10816_10819,G__10817_10820))
+;
+goog.object.set(G__10816_10819,G__10817_10820,G__10818_10821);
+
+/**
+* @constructor
+ * @implements {cljs.core.ICounted}
+*/
+cljs.core.ChunkBuffer = (function (buf,end){
+this.buf = buf;
+this.end = end;
+this.cljs$lang$protocol_mask$partition0$ = 2;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.ChunkBuffer.prototype.add = (function (o){
+var self__ = this;
+var _ = this;
+(self__.buf[self__.end] = o);
+
+return self__.end = (self__.end + (1));
+});
+
+cljs.core.ChunkBuffer.prototype.chunk = (function (){
+var self__ = this;
+var _ = this;
+var ret = (new cljs.core.ArrayChunk(self__.buf,(0),self__.end));
+self__.buf = null;
+
+return ret;
+});
+
+cljs.core.ChunkBuffer.prototype.cljs$core$ICounted$_count$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.end;
+});
+
+cljs.core.ChunkBuffer.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"buf","buf",1426618187,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"end","end",1372345569,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ChunkBuffer.cljs$lang$type = true;
+
+cljs.core.ChunkBuffer.cljs$lang$ctorStr = "cljs.core/ChunkBuffer";
+
+cljs.core.ChunkBuffer.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ChunkBuffer");
+});
+
+/**
+ * Positional factory function for cljs.core/ChunkBuffer.
+ */
+cljs.core.__GT_ChunkBuffer = (function cljs$core$__GT_ChunkBuffer(buf,end){
+return (new cljs.core.ChunkBuffer(buf,end));
+});
+
+cljs.core.chunk_buffer = (function cljs$core$chunk_buffer(capacity){
+return (new cljs.core.ChunkBuffer((new Array(capacity)),(0)));
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IIndexed}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.IChunk}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.ArrayChunk = (function (arr,off,end){
+this.arr = arr;
+this.off = off;
+this.end = end;
+this.cljs$lang$protocol_mask$partition0$ = 524306;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.ArrayChunk.prototype.cljs$core$ICounted$_count$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (self__.end - self__.off);
+});
+
+cljs.core.ArrayChunk.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,i){
+var self__ = this;
+var coll__$1 = this;
+return (self__.arr[(self__.off + i)]);
+});
+
+cljs.core.ArrayChunk.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,i,not_found){
+var self__ = this;
+var coll__$1 = this;
+if((((i >= (0))) && ((i < (self__.end - self__.off))))){
+return (self__.arr[(self__.off + i)]);
+} else {
+return not_found;
+}
+});
+
+cljs.core.ArrayChunk.prototype.cljs$core$IChunk$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.ArrayChunk.prototype.cljs$core$IChunk$_drop_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.off === self__.end)){
+throw (new Error("-drop-first of empty chunk"));
+} else {
+return (new cljs.core.ArrayChunk(self__.arr,(self__.off + (1)),self__.end));
+}
+});
+
+cljs.core.ArrayChunk.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4(self__.arr,f,(self__.arr[self__.off]),(self__.off + (1)));
+});
+
+cljs.core.ArrayChunk.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4(self__.arr,f,start,self__.off);
+});
+
+cljs.core.ArrayChunk.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"arr","arr",2115492975,null),new cljs.core.Symbol(null,"off","off",-2047994980,null),new cljs.core.Symbol(null,"end","end",1372345569,null)], null);
+});
+
+cljs.core.ArrayChunk.cljs$lang$type = true;
+
+cljs.core.ArrayChunk.cljs$lang$ctorStr = "cljs.core/ArrayChunk";
+
+cljs.core.ArrayChunk.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ArrayChunk");
+});
+
+/**
+ * Positional factory function for cljs.core/ArrayChunk.
+ */
+cljs.core.__GT_ArrayChunk = (function cljs$core$__GT_ArrayChunk(arr,off,end){
+return (new cljs.core.ArrayChunk(arr,off,end));
+});
+
+cljs.core.array_chunk = (function cljs$core$array_chunk(var_args){
+var G__10823 = arguments.length;
+switch (G__10823) {
+case 1:
+return cljs.core.array_chunk.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.array_chunk.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.array_chunk.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.array_chunk.cljs$core$IFn$_invoke$arity$1 = (function (arr){
+return (new cljs.core.ArrayChunk(arr,(0),arr.length));
+});
+
+cljs.core.array_chunk.cljs$core$IFn$_invoke$arity$2 = (function (arr,off){
+return (new cljs.core.ArrayChunk(arr,off,arr.length));
+});
+
+cljs.core.array_chunk.cljs$core$IFn$_invoke$arity$3 = (function (arr,off,end){
+return (new cljs.core.ArrayChunk(arr,off,end));
+});
+
+cljs.core.array_chunk.cljs$lang$maxFixedArity = 3;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ASeq}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IChunkedNext}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.IChunkedSeq}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+*/
+cljs.core.ChunkedCons = (function (chunk,more,meta,__hash){
+this.chunk = chunk;
+this.more = more;
+this.meta = meta;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 31850732;
+this.cljs$lang$protocol_mask$partition1$ = 1536;
+});
+cljs.core.ChunkedCons.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.ChunkedCons.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.ChunkedCons.prototype.indexOf = (function() {
+var G__10825 = null;
+var G__10825__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__10825__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10825 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10825__1.call(this,x);
+case 2:
+return G__10825__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10825.cljs$core$IFn$_invoke$arity$1 = G__10825__1;
+G__10825.cljs$core$IFn$_invoke$arity$2 = G__10825__2;
+return G__10825;
+})()
+;
+
+cljs.core.ChunkedCons.prototype.lastIndexOf = (function() {
+var G__10826 = null;
+var G__10826__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__10826__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__10826 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__10826__1.call(this,x);
+case 2:
+return G__10826__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__10826.cljs$core$IFn$_invoke$arity$1 = G__10826__1;
+G__10826.cljs$core$IFn$_invoke$arity$2 = G__10826__2;
+return G__10826;
+})()
+;
+
+cljs.core.ChunkedCons.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((cljs.core._count(self__.chunk) > (1))){
+return (new cljs.core.ChunkedCons(cljs.core._drop_first(self__.chunk),self__.more,self__.meta,null));
+} else {
+if((self__.more == null)){
+return null;
+} else {
+return cljs.core._seq(self__.more);
+}
+}
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.chunk,(0));
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((cljs.core._count(self__.chunk) > (1))){
+return (new cljs.core.ChunkedCons(cljs.core._drop_first(self__.chunk),self__.more,self__.meta,null));
+} else {
+if((self__.more == null)){
+return cljs.core.List.EMPTY;
+} else {
+return self__.more;
+}
+}
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$IChunkedSeq$_chunked_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.chunk;
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$IChunkedSeq$_chunked_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.more == null)){
+return cljs.core.List.EMPTY;
+} else {
+return self__.more;
+}
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,m){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.ChunkedCons(self__.chunk,self__.more,m,self__.__hash));
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this$,o){
+var self__ = this;
+var this$__$1 = this;
+return cljs.core.cons(o,this$__$1);
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$IChunkedNext$_chunked_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.more == null)){
+return null;
+} else {
+return self__.more;
+}
+});
+
+cljs.core.ChunkedCons.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"chunk","chunk",449371907,null),new cljs.core.Symbol(null,"more","more",-418290273,null),new cljs.core.Symbol(null,"meta","meta",-1154898805,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ChunkedCons.cljs$lang$type = true;
+
+cljs.core.ChunkedCons.cljs$lang$ctorStr = "cljs.core/ChunkedCons";
+
+cljs.core.ChunkedCons.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ChunkedCons");
+});
+
+/**
+ * Positional factory function for cljs.core/ChunkedCons.
+ */
+cljs.core.__GT_ChunkedCons = (function cljs$core$__GT_ChunkedCons(chunk,more,meta,__hash){
+return (new cljs.core.ChunkedCons(chunk,more,meta,__hash));
+});
+
+var G__10827_10830 = cljs.core.ChunkedCons.prototype;
+var G__10828_10831 = cljs.core.ITER_SYMBOL;
+var G__10829_10832 = ((function (G__10827_10830,G__10828_10831){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__10827_10830,G__10828_10831))
+;
+goog.object.set(G__10827_10830,G__10828_10831,G__10829_10832);
+cljs.core.chunk_cons = (function cljs$core$chunk_cons(chunk,rest){
+if((cljs.core._count(chunk) === (0))){
+return rest;
+} else {
+return (new cljs.core.ChunkedCons(chunk,rest,null,null));
+}
+});
+cljs.core.chunk_append = (function cljs$core$chunk_append(b,x){
+return b.add(x);
+});
+cljs.core.chunk = (function cljs$core$chunk(b){
+return b.chunk();
+});
+cljs.core.chunk_first = (function cljs$core$chunk_first(s){
+return cljs.core._chunked_first(s);
+});
+cljs.core.chunk_rest = (function cljs$core$chunk_rest(s){
+return cljs.core._chunked_rest(s);
+});
+cljs.core.chunk_next = (function cljs$core$chunk_next(s){
+if((((!((s == null))))?(((((s.cljs$lang$protocol_mask$partition1$ & (1024))) || ((cljs.core.PROTOCOL_SENTINEL === s.cljs$core$IChunkedNext$))))?true:false):false)){
+return cljs.core._chunked_next(s);
+} else {
+return cljs.core.seq(cljs.core._chunked_rest(s));
+}
+});
+/**
+ * Returns an array containing the contents of coll.
+ */
+cljs.core.to_array = (function cljs$core$to_array(coll){
+var ary = [];
+var s = cljs.core.seq(coll);
+while(true){
+if((!((s == null)))){
+ary.push(cljs.core.first(s));
+
+var G__10834 = cljs.core.next(s);
+s = G__10834;
+continue;
+} else {
+return ary;
+}
+break;
+}
+});
+/**
+ * Returns a (potentially-ragged) 2-dimensional array
+ * containing the contents of coll.
+ */
+cljs.core.to_array_2d = (function cljs$core$to_array_2d(coll){
+var ret = (new Array(cljs.core.count(coll)));
+var i_10835 = (0);
+var xs_10836 = cljs.core.seq(coll);
+while(true){
+if((xs_10836 == null)){
+} else {
+(ret[i_10835] = cljs.core.to_array(cljs.core.first(xs_10836)));
+
+var G__10837 = (i_10835 + (1));
+var G__10838 = cljs.core.next(xs_10836);
+i_10835 = G__10837;
+xs_10836 = G__10838;
+continue;
+}
+break;
+}
+
+return ret;
+});
+/**
+ * Creates an array of ints. Does not coerce array, provided for compatibility
+ * with Clojure.
+ */
+cljs.core.int_array = (function cljs$core$int_array(var_args){
+var G__10840 = arguments.length;
+switch (G__10840) {
+case 1:
+return cljs.core.int_array.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.int_array.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.int_array.cljs$core$IFn$_invoke$arity$1 = (function (size_or_seq){
+if(typeof size_or_seq === 'number'){
+return cljs.core.int_array.cljs$core$IFn$_invoke$arity$2(size_or_seq,null);
+} else {
+return cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(size_or_seq);
+}
+});
+
+cljs.core.int_array.cljs$core$IFn$_invoke$arity$2 = (function (size,init_val_or_seq){
+var a = (new Array(size));
+if(cljs.core.seq_QMARK_(init_val_or_seq)){
+var s = cljs.core.seq(init_val_or_seq);
+var i = (0);
+var s__$1 = s;
+while(true){
+if(((s__$1) && ((i < size)))){
+(a[i] = cljs.core.first(s__$1));
+
+var G__10842 = (i + (1));
+var G__10843 = cljs.core.next(s__$1);
+i = G__10842;
+s__$1 = G__10843;
+continue;
+} else {
+return a;
+}
+break;
+}
+} else {
+var n__8769__auto___10844 = size;
+var i_10845 = (0);
+while(true){
+if((i_10845 < n__8769__auto___10844)){
+(a[i_10845] = init_val_or_seq);
+
+var G__10846 = (i_10845 + (1));
+i_10845 = G__10846;
+continue;
+} else {
+}
+break;
+}
+
+return a;
+}
+});
+
+cljs.core.int_array.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Creates an array of longs. Does not coerce array, provided for compatibility
+ * with Clojure.
+ */
+cljs.core.long_array = (function cljs$core$long_array(var_args){
+var G__10848 = arguments.length;
+switch (G__10848) {
+case 1:
+return cljs.core.long_array.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.long_array.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.long_array.cljs$core$IFn$_invoke$arity$1 = (function (size_or_seq){
+if(typeof size_or_seq === 'number'){
+return cljs.core.long_array.cljs$core$IFn$_invoke$arity$2(size_or_seq,null);
+} else {
+return cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(size_or_seq);
+}
+});
+
+cljs.core.long_array.cljs$core$IFn$_invoke$arity$2 = (function (size,init_val_or_seq){
+var a = (new Array(size));
+if(cljs.core.seq_QMARK_(init_val_or_seq)){
+var s = cljs.core.seq(init_val_or_seq);
+var i = (0);
+var s__$1 = s;
+while(true){
+if(((s__$1) && ((i < size)))){
+(a[i] = cljs.core.first(s__$1));
+
+var G__10850 = (i + (1));
+var G__10851 = cljs.core.next(s__$1);
+i = G__10850;
+s__$1 = G__10851;
+continue;
+} else {
+return a;
+}
+break;
+}
+} else {
+var n__8769__auto___10852 = size;
+var i_10853 = (0);
+while(true){
+if((i_10853 < n__8769__auto___10852)){
+(a[i_10853] = init_val_or_seq);
+
+var G__10854 = (i_10853 + (1));
+i_10853 = G__10854;
+continue;
+} else {
+}
+break;
+}
+
+return a;
+}
+});
+
+cljs.core.long_array.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Creates an array of doubles. Does not coerce array, provided for compatibility
+ * with Clojure.
+ */
+cljs.core.double_array = (function cljs$core$double_array(var_args){
+var G__10856 = arguments.length;
+switch (G__10856) {
+case 1:
+return cljs.core.double_array.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.double_array.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.double_array.cljs$core$IFn$_invoke$arity$1 = (function (size_or_seq){
+if(typeof size_or_seq === 'number'){
+return cljs.core.double_array.cljs$core$IFn$_invoke$arity$2(size_or_seq,null);
+} else {
+return cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(size_or_seq);
+}
+});
+
+cljs.core.double_array.cljs$core$IFn$_invoke$arity$2 = (function (size,init_val_or_seq){
+var a = (new Array(size));
+if(cljs.core.seq_QMARK_(init_val_or_seq)){
+var s = cljs.core.seq(init_val_or_seq);
+var i = (0);
+var s__$1 = s;
+while(true){
+if(((s__$1) && ((i < size)))){
+(a[i] = cljs.core.first(s__$1));
+
+var G__10858 = (i + (1));
+var G__10859 = cljs.core.next(s__$1);
+i = G__10858;
+s__$1 = G__10859;
+continue;
+} else {
+return a;
+}
+break;
+}
+} else {
+var n__8769__auto___10860 = size;
+var i_10861 = (0);
+while(true){
+if((i_10861 < n__8769__auto___10860)){
+(a[i_10861] = init_val_or_seq);
+
+var G__10862 = (i_10861 + (1));
+i_10861 = G__10862;
+continue;
+} else {
+}
+break;
+}
+
+return a;
+}
+});
+
+cljs.core.double_array.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Creates an array of objects. Does not coerce array, provided for compatibility
+ * with Clojure.
+ */
+cljs.core.object_array = (function cljs$core$object_array(var_args){
+var G__10864 = arguments.length;
+switch (G__10864) {
+case 1:
+return cljs.core.object_array.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.object_array.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.object_array.cljs$core$IFn$_invoke$arity$1 = (function (size_or_seq){
+if(typeof size_or_seq === 'number'){
+return cljs.core.object_array.cljs$core$IFn$_invoke$arity$2(size_or_seq,null);
+} else {
+return cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(size_or_seq);
+}
+});
+
+cljs.core.object_array.cljs$core$IFn$_invoke$arity$2 = (function (size,init_val_or_seq){
+var a = (new Array(size));
+if(cljs.core.seq_QMARK_(init_val_or_seq)){
+var s = cljs.core.seq(init_val_or_seq);
+var i = (0);
+var s__$1 = s;
+while(true){
+if(((s__$1) && ((i < size)))){
+(a[i] = cljs.core.first(s__$1));
+
+var G__10866 = (i + (1));
+var G__10867 = cljs.core.next(s__$1);
+i = G__10866;
+s__$1 = G__10867;
+continue;
+} else {
+return a;
+}
+break;
+}
+} else {
+var n__8769__auto___10868 = size;
+var i_10869 = (0);
+while(true){
+if((i_10869 < n__8769__auto___10868)){
+(a[i_10869] = init_val_or_seq);
+
+var G__10870 = (i_10869 + (1));
+i_10869 = G__10870;
+continue;
+} else {
+}
+break;
+}
+
+return a;
+}
+});
+
+cljs.core.object_array.cljs$lang$maxFixedArity = 2;
+
+/**
+ * If coll is counted? returns its count, else will count at most the first n
+ * elements of coll using its seq
+ */
+cljs.core.bounded_count = (function cljs$core$bounded_count(n,coll){
+if(cljs.core.counted_QMARK_(coll)){
+return cljs.core.count(coll);
+} else {
+var i = (0);
+var s = cljs.core.seq(coll);
+while(true){
+if((((!((s == null)))) && ((i < n)))){
+var G__10871 = (i + (1));
+var G__10872 = cljs.core.next(s);
+i = G__10871;
+s = G__10872;
+continue;
+} else {
+return i;
+}
+break;
+}
+}
+});
+cljs.core.spread = (function cljs$core$spread(arglist){
+if((arglist == null)){
+return null;
+} else {
+var n = cljs.core.next(arglist);
+if((n == null)){
+return cljs.core.seq(cljs.core.first(arglist));
+} else {
+return cljs.core.cons(cljs.core.first(arglist),(cljs.core.spread.cljs$core$IFn$_invoke$arity$1 ? cljs.core.spread.cljs$core$IFn$_invoke$arity$1(n) : cljs.core.spread.call(null,n)));
+}
+}
+});
+/**
+ * Returns a lazy seq representing the concatenation of the elements in the supplied colls.
+ */
+cljs.core.concat = (function cljs$core$concat(var_args){
+var G__10877 = arguments.length;
+switch (G__10877) {
+case 0:
+return cljs.core.concat.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.concat.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.concat.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10879 = arguments.length;
+var i__9001__auto___10880 = (0);
+while(true){
+if((i__9001__auto___10880 < len__9000__auto___10879)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10880]));
+
+var G__10881 = (i__9001__auto___10880 + (1));
+i__9001__auto___10880 = G__10881;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.concat.cljs$core$IFn$_invoke$arity$0 = (function (){
+return (new cljs.core.LazySeq(null,(function (){
+return null;
+}),null,null));
+});
+
+cljs.core.concat.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return (new cljs.core.LazySeq(null,(function (){
+return x;
+}),null,null));
+});
+
+cljs.core.concat.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (new cljs.core.LazySeq(null,(function (){
+var s = cljs.core.seq(x);
+if(s){
+if(cljs.core.chunked_seq_QMARK_(s)){
+return cljs.core.chunk_cons(cljs.core.chunk_first(s),cljs.core.concat.cljs$core$IFn$_invoke$arity$2(cljs.core.chunk_rest(s),y));
+} else {
+return cljs.core.cons(cljs.core.first(s),cljs.core.concat.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(s),y));
+}
+} else {
+return y;
+}
+}),null,null));
+});
+
+cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,zs){
+var cat = (function cljs$core$cat(xys,zs__$1){
+return (new cljs.core.LazySeq(null,(function (){
+var xys__$1 = cljs.core.seq(xys);
+if(xys__$1){
+if(cljs.core.chunked_seq_QMARK_(xys__$1)){
+return cljs.core.chunk_cons(cljs.core.chunk_first(xys__$1),cljs$core$cat(cljs.core.chunk_rest(xys__$1),zs__$1));
+} else {
+return cljs.core.cons(cljs.core.first(xys__$1),cljs$core$cat(cljs.core.rest(xys__$1),zs__$1));
+}
+} else {
+if(cljs.core.truth_(zs__$1)){
+return cljs$core$cat(cljs.core.first(zs__$1),cljs.core.next(zs__$1));
+} else {
+return null;
+}
+}
+}),null,null));
+});
+return cat(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(x,y),zs);
+});
+
+/** @this {Function} */
+cljs.core.concat.cljs$lang$applyTo = (function (seq10874){
+var G__10875 = cljs.core.first(seq10874);
+var seq10874__$1 = cljs.core.next(seq10874);
+var G__10876 = cljs.core.first(seq10874__$1);
+var seq10874__$2 = cljs.core.next(seq10874__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10875,G__10876,seq10874__$2);
+});
+
+cljs.core.concat.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Creates a new list containing the items prepended to the rest, the
+ * last of which will be treated as a sequence.
+ */
+cljs.core.list_STAR_ = (function cljs$core$list_STAR_(var_args){
+var G__10888 = arguments.length;
+switch (G__10888) {
+case 1:
+return cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10890 = arguments.length;
+var i__9001__auto___10891 = (0);
+while(true){
+if((i__9001__auto___10891 < len__9000__auto___10890)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10891]));
+
+var G__10892 = (i__9001__auto___10891 + (1));
+i__9001__auto___10891 = G__10892;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((4)),(0),null));
+return cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$1 = (function (args){
+return cljs.core.seq(args);
+});
+
+cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$2 = (function (a,args){
+return cljs.core.cons(a,args);
+});
+
+cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$3 = (function (a,b,args){
+return cljs.core.cons(a,cljs.core.cons(b,args));
+});
+
+cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4 = (function (a,b,c,args){
+return cljs.core.cons(a,cljs.core.cons(b,cljs.core.cons(c,args)));
+});
+
+cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$variadic = (function (a,b,c,d,more){
+return cljs.core.cons(a,cljs.core.cons(b,cljs.core.cons(c,cljs.core.cons(d,cljs.core.spread(more)))));
+});
+
+/** @this {Function} */
+cljs.core.list_STAR_.cljs$lang$applyTo = (function (seq10883){
+var G__10884 = cljs.core.first(seq10883);
+var seq10883__$1 = cljs.core.next(seq10883);
+var G__10885 = cljs.core.first(seq10883__$1);
+var seq10883__$2 = cljs.core.next(seq10883__$1);
+var G__10886 = cljs.core.first(seq10883__$2);
+var seq10883__$3 = cljs.core.next(seq10883__$2);
+var G__10887 = cljs.core.first(seq10883__$3);
+var seq10883__$4 = cljs.core.next(seq10883__$3);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10884,G__10885,G__10886,G__10887,seq10883__$4);
+});
+
+cljs.core.list_STAR_.cljs$lang$maxFixedArity = (4);
+
+/**
+ * Returns a new, transient version of the collection, in constant time.
+ */
+cljs.core.transient$ = (function cljs$core$transient(coll){
+return cljs.core._as_transient(coll);
+});
+/**
+ * Returns a new, persistent version of the transient collection, in
+ * constant time. The transient collection cannot be used after this
+ * call, any such use will throw an exception.
+ */
+cljs.core.persistent_BANG_ = (function cljs$core$persistent_BANG_(tcoll){
+return cljs.core._persistent_BANG_(tcoll);
+});
+/**
+ * Adds val to the transient collection, and return tcoll. The 'addition'
+ * may happen at different 'places' depending on the concrete type.
+ */
+cljs.core.conj_BANG_ = (function cljs$core$conj_BANG_(var_args){
+var G__10897 = arguments.length;
+switch (G__10897) {
+case 0:
+return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10899 = arguments.length;
+var i__9001__auto___10900 = (0);
+while(true){
+if((i__9001__auto___10900 < len__9000__auto___10899)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10900]));
+
+var G__10901 = (i__9001__auto___10900 + (1));
+i__9001__auto___10900 = G__10901;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.transient$(cljs.core.PersistentVector.EMPTY);
+});
+
+cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$1 = (function (tcoll){
+return tcoll;
+});
+
+cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2 = (function (tcoll,val){
+return cljs.core._conj_BANG_(tcoll,val);
+});
+
+cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (tcoll,val,vals){
+while(true){
+var ntcoll = cljs.core._conj_BANG_(tcoll,val);
+if(cljs.core.truth_(vals)){
+var G__10902 = ntcoll;
+var G__10903 = cljs.core.first(vals);
+var G__10904 = cljs.core.next(vals);
+tcoll = G__10902;
+val = G__10903;
+vals = G__10904;
+continue;
+} else {
+return ntcoll;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core.conj_BANG_.cljs$lang$applyTo = (function (seq10894){
+var G__10895 = cljs.core.first(seq10894);
+var seq10894__$1 = cljs.core.next(seq10894);
+var G__10896 = cljs.core.first(seq10894__$1);
+var seq10894__$2 = cljs.core.next(seq10894__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10895,G__10896,seq10894__$2);
+});
+
+cljs.core.conj_BANG_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * When applied to a transient map, adds mapping of key(s) to
+ * val(s). When applied to a transient vector, sets the val at index.
+ * Note - index must be <= (count vector). Returns coll.
+ */
+cljs.core.assoc_BANG_ = (function cljs$core$assoc_BANG_(var_args){
+var G__10910 = arguments.length;
+switch (G__10910) {
+case 3:
+return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10912 = arguments.length;
+var i__9001__auto___10913 = (0);
+while(true){
+if((i__9001__auto___10913 < len__9000__auto___10912)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10913]));
+
+var G__10914 = (i__9001__auto___10913 + (1));
+i__9001__auto___10913 = G__10914;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3 = (function (tcoll,key,val){
+return cljs.core._assoc_BANG_(tcoll,key,val);
+});
+
+cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (tcoll,key,val,kvs){
+while(true){
+var ntcoll = cljs.core._assoc_BANG_(tcoll,key,val);
+if(cljs.core.truth_(kvs)){
+var G__10915 = ntcoll;
+var G__10916 = cljs.core.first(kvs);
+var G__10917 = cljs.core.second(kvs);
+var G__10918 = cljs.core.nnext(kvs);
+tcoll = G__10915;
+key = G__10916;
+val = G__10917;
+kvs = G__10918;
+continue;
+} else {
+return ntcoll;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core.assoc_BANG_.cljs$lang$applyTo = (function (seq10906){
+var G__10907 = cljs.core.first(seq10906);
+var seq10906__$1 = cljs.core.next(seq10906);
+var G__10908 = cljs.core.first(seq10906__$1);
+var seq10906__$2 = cljs.core.next(seq10906__$1);
+var G__10909 = cljs.core.first(seq10906__$2);
+var seq10906__$3 = cljs.core.next(seq10906__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10907,G__10908,G__10909,seq10906__$3);
+});
+
+cljs.core.assoc_BANG_.cljs$lang$maxFixedArity = (3);
+
+/**
+ * Returns a transient map that doesn't contain a mapping for key(s).
+ */
+cljs.core.dissoc_BANG_ = (function cljs$core$dissoc_BANG_(var_args){
+var G__10923 = arguments.length;
+switch (G__10923) {
+case 2:
+return cljs.core.dissoc_BANG_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10925 = arguments.length;
+var i__9001__auto___10926 = (0);
+while(true){
+if((i__9001__auto___10926 < len__9000__auto___10925)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10926]));
+
+var G__10927 = (i__9001__auto___10926 + (1));
+i__9001__auto___10926 = G__10927;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.dissoc_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.dissoc_BANG_.cljs$core$IFn$_invoke$arity$2 = (function (tcoll,key){
+return cljs.core._dissoc_BANG_(tcoll,key);
+});
+
+cljs.core.dissoc_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (tcoll,key,ks){
+while(true){
+var ntcoll = cljs.core._dissoc_BANG_(tcoll,key);
+if(cljs.core.truth_(ks)){
+var G__10928 = ntcoll;
+var G__10929 = cljs.core.first(ks);
+var G__10930 = cljs.core.next(ks);
+tcoll = G__10928;
+key = G__10929;
+ks = G__10930;
+continue;
+} else {
+return ntcoll;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core.dissoc_BANG_.cljs$lang$applyTo = (function (seq10920){
+var G__10921 = cljs.core.first(seq10920);
+var seq10920__$1 = cljs.core.next(seq10920);
+var G__10922 = cljs.core.first(seq10920__$1);
+var seq10920__$2 = cljs.core.next(seq10920__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10921,G__10922,seq10920__$2);
+});
+
+cljs.core.dissoc_BANG_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Removes the last item from a transient vector. If
+ * the collection is empty, throws an exception. Returns tcoll
+ */
+cljs.core.pop_BANG_ = (function cljs$core$pop_BANG_(tcoll){
+return cljs.core._pop_BANG_(tcoll);
+});
+/**
+ * disj[oin]. Returns a transient set of the same (hashed/sorted) type, that
+ * does not contain key(s).
+ */
+cljs.core.disj_BANG_ = (function cljs$core$disj_BANG_(var_args){
+var G__10935 = arguments.length;
+switch (G__10935) {
+case 2:
+return cljs.core.disj_BANG_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10937 = arguments.length;
+var i__9001__auto___10938 = (0);
+while(true){
+if((i__9001__auto___10938 < len__9000__auto___10937)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10938]));
+
+var G__10939 = (i__9001__auto___10938 + (1));
+i__9001__auto___10938 = G__10939;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.disj_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.disj_BANG_.cljs$core$IFn$_invoke$arity$2 = (function (tcoll,val){
+return cljs.core._disjoin_BANG_(tcoll,val);
+});
+
+cljs.core.disj_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (tcoll,val,vals){
+while(true){
+var ntcoll = cljs.core._disjoin_BANG_(tcoll,val);
+if(cljs.core.truth_(vals)){
+var G__10940 = ntcoll;
+var G__10941 = cljs.core.first(vals);
+var G__10942 = cljs.core.next(vals);
+tcoll = G__10940;
+val = G__10941;
+vals = G__10942;
+continue;
+} else {
+return ntcoll;
+}
+break;
+}
+});
+
+/** @this {Function} */
+cljs.core.disj_BANG_.cljs$lang$applyTo = (function (seq10932){
+var G__10933 = cljs.core.first(seq10932);
+var seq10932__$1 = cljs.core.next(seq10932);
+var G__10934 = cljs.core.first(seq10932__$1);
+var seq10932__$2 = cljs.core.next(seq10932__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10933,G__10934,seq10932__$2);
+});
+
+cljs.core.disj_BANG_.cljs$lang$maxFixedArity = (2);
+
+
+cljs.core.apply_to = (function cljs$core$apply_to(f,argc,args){
+var args__$1 = cljs.core.seq(args);
+if((argc === (0))){
+return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
+} else {
+var a8813 = cljs.core._first(args__$1);
+var args__$2 = cljs.core._rest(args__$1);
+if((argc === (1))){
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(a8813) : f.call(null,a8813));
+} else {
+var b8814 = cljs.core._first(args__$2);
+var args__$3 = cljs.core._rest(args__$2);
+if((argc === (2))){
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(a8813,b8814) : f.call(null,a8813,b8814));
+} else {
+var c8815 = cljs.core._first(args__$3);
+var args__$4 = cljs.core._rest(args__$3);
+if((argc === (3))){
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(a8813,b8814,c8815) : f.call(null,a8813,b8814,c8815));
+} else {
+var d8816 = cljs.core._first(args__$4);
+var args__$5 = cljs.core._rest(args__$4);
+if((argc === (4))){
+return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(a8813,b8814,c8815,d8816) : f.call(null,a8813,b8814,c8815,d8816));
+} else {
+var e8817 = cljs.core._first(args__$5);
+var args__$6 = cljs.core._rest(args__$5);
+if((argc === (5))){
+return (f.cljs$core$IFn$_invoke$arity$5 ? f.cljs$core$IFn$_invoke$arity$5(a8813,b8814,c8815,d8816,e8817) : f.call(null,a8813,b8814,c8815,d8816,e8817));
+} else {
+var f8818 = cljs.core._first(args__$6);
+var args__$7 = cljs.core._rest(args__$6);
+if((argc === (6))){
+return (f.cljs$core$IFn$_invoke$arity$6 ? f.cljs$core$IFn$_invoke$arity$6(a8813,b8814,c8815,d8816,e8817,f8818) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818));
+} else {
+var g8819 = cljs.core._first(args__$7);
+var args__$8 = cljs.core._rest(args__$7);
+if((argc === (7))){
+return (f.cljs$core$IFn$_invoke$arity$7 ? f.cljs$core$IFn$_invoke$arity$7(a8813,b8814,c8815,d8816,e8817,f8818,g8819) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819));
+} else {
+var h8820 = cljs.core._first(args__$8);
+var args__$9 = cljs.core._rest(args__$8);
+if((argc === (8))){
+return (f.cljs$core$IFn$_invoke$arity$8 ? f.cljs$core$IFn$_invoke$arity$8(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820));
+} else {
+var i8821 = cljs.core._first(args__$9);
+var args__$10 = cljs.core._rest(args__$9);
+if((argc === (9))){
+return (f.cljs$core$IFn$_invoke$arity$9 ? f.cljs$core$IFn$_invoke$arity$9(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821));
+} else {
+var j8822 = cljs.core._first(args__$10);
+var args__$11 = cljs.core._rest(args__$10);
+if((argc === (10))){
+return (f.cljs$core$IFn$_invoke$arity$10 ? f.cljs$core$IFn$_invoke$arity$10(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822));
+} else {
+var k8823 = cljs.core._first(args__$11);
+var args__$12 = cljs.core._rest(args__$11);
+if((argc === (11))){
+return (f.cljs$core$IFn$_invoke$arity$11 ? f.cljs$core$IFn$_invoke$arity$11(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823));
+} else {
+var l8824 = cljs.core._first(args__$12);
+var args__$13 = cljs.core._rest(args__$12);
+if((argc === (12))){
+return (f.cljs$core$IFn$_invoke$arity$12 ? f.cljs$core$IFn$_invoke$arity$12(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824));
+} else {
+var m8825 = cljs.core._first(args__$13);
+var args__$14 = cljs.core._rest(args__$13);
+if((argc === (13))){
+return (f.cljs$core$IFn$_invoke$arity$13 ? f.cljs$core$IFn$_invoke$arity$13(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825));
+} else {
+var n8826 = cljs.core._first(args__$14);
+var args__$15 = cljs.core._rest(args__$14);
+if((argc === (14))){
+return (f.cljs$core$IFn$_invoke$arity$14 ? f.cljs$core$IFn$_invoke$arity$14(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826));
+} else {
+var o8827 = cljs.core._first(args__$15);
+var args__$16 = cljs.core._rest(args__$15);
+if((argc === (15))){
+return (f.cljs$core$IFn$_invoke$arity$15 ? f.cljs$core$IFn$_invoke$arity$15(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827));
+} else {
+var p8828 = cljs.core._first(args__$16);
+var args__$17 = cljs.core._rest(args__$16);
+if((argc === (16))){
+return (f.cljs$core$IFn$_invoke$arity$16 ? f.cljs$core$IFn$_invoke$arity$16(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828));
+} else {
+var q8829 = cljs.core._first(args__$17);
+var args__$18 = cljs.core._rest(args__$17);
+if((argc === (17))){
+return (f.cljs$core$IFn$_invoke$arity$17 ? f.cljs$core$IFn$_invoke$arity$17(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828,q8829) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828,q8829));
+} else {
+var r8830 = cljs.core._first(args__$18);
+var args__$19 = cljs.core._rest(args__$18);
+if((argc === (18))){
+return (f.cljs$core$IFn$_invoke$arity$18 ? f.cljs$core$IFn$_invoke$arity$18(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828,q8829,r8830) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828,q8829,r8830));
+} else {
+var s8831 = cljs.core._first(args__$19);
+var args__$20 = cljs.core._rest(args__$19);
+if((argc === (19))){
+return (f.cljs$core$IFn$_invoke$arity$19 ? f.cljs$core$IFn$_invoke$arity$19(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828,q8829,r8830,s8831) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828,q8829,r8830,s8831));
+} else {
+var t8832 = cljs.core._first(args__$20);
+var args__$21 = cljs.core._rest(args__$20);
+if((argc === (20))){
+return (f.cljs$core$IFn$_invoke$arity$20 ? f.cljs$core$IFn$_invoke$arity$20(a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828,q8829,r8830,s8831,t8832) : f.call(null,a8813,b8814,c8815,d8816,e8817,f8818,g8819,h8820,i8821,j8822,k8823,l8824,m8825,n8826,o8827,p8828,q8829,r8830,s8831,t8832));
+} else {
+throw (new Error("Only up to 20 arguments supported on functions"));
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+});
+
+/**
+ * Internal. DO NOT USE!
+ * Assumes args was already called with seq beforehand!
+ */
+cljs.core.apply_to_simple = (function cljs$core$apply_to_simple(var_args){
+var G__10944 = arguments.length;
+switch (G__10944) {
+case 2:
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 5:
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+case 6:
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$6((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$2 = (function (f,args){
+if((args == null)){
+if(f.cljs$core$IFn$_invoke$arity$0){
+return f.cljs$core$IFn$_invoke$arity$0();
+} else {
+return f.call(f);
+}
+} else {
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$3(f,cljs.core._first(args),cljs.core.next(args));
+}
+});
+
+cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$3 = (function (f,a0,args){
+if((args == null)){
+if(f.cljs$core$IFn$_invoke$arity$1){
+return f.cljs$core$IFn$_invoke$arity$1(a0);
+} else {
+return f.call(f,a0);
+}
+} else {
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$4(f,a0,cljs.core._first(args),cljs.core.next(args));
+}
+});
+
+cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$4 = (function (f,a0,a1,args){
+if((args == null)){
+if(f.cljs$core$IFn$_invoke$arity$2){
+return f.cljs$core$IFn$_invoke$arity$2(a0,a1);
+} else {
+return f.call(f,a0,a1);
+}
+} else {
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$5(f,a0,a1,cljs.core._first(args),cljs.core.next(args));
+}
+});
+
+cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$5 = (function (f,a0,a1,a2,args){
+if((args == null)){
+if(f.cljs$core$IFn$_invoke$arity$3){
+return f.cljs$core$IFn$_invoke$arity$3(a0,a1,a2);
+} else {
+return f.call(f,a0,a1,a2);
+}
+} else {
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$6(f,a0,a1,a2,cljs.core._first(args),cljs.core.next(args));
+}
+});
+
+cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$6 = (function (f,a0,a1,a2,a3,args){
+if((args == null)){
+if(f.cljs$core$IFn$_invoke$arity$4){
+return f.cljs$core$IFn$_invoke$arity$4(a0,a1,a2,a3);
+} else {
+return f.call(f,a0,a1,a2,a3);
+}
+} else {
+var a4 = cljs.core._first(args);
+var next_4 = cljs.core.next(args);
+if((next_4 == null)){
+if(f.cljs$core$IFn$_invoke$arity$5){
+return f.cljs$core$IFn$_invoke$arity$5(a0,a1,a2,a3,a4);
+} else {
+return f.call(f,a0,a1,a2,a3,a4);
+}
+} else {
+var a5 = cljs.core._first(next_4);
+var next_5 = cljs.core.next(next_4);
+if((next_5 == null)){
+if(f.cljs$core$IFn$_invoke$arity$6){
+return f.cljs$core$IFn$_invoke$arity$6(a0,a1,a2,a3,a4,a5);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5);
+}
+} else {
+var a6 = cljs.core._first(next_5);
+var next_6 = cljs.core.next(next_5);
+if((next_6 == null)){
+if(f.cljs$core$IFn$_invoke$arity$7){
+return f.cljs$core$IFn$_invoke$arity$7(a0,a1,a2,a3,a4,a5,a6);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6);
+}
+} else {
+var a7 = cljs.core._first(next_6);
+var next_7 = cljs.core.next(next_6);
+if((next_7 == null)){
+if(f.cljs$core$IFn$_invoke$arity$8){
+return f.cljs$core$IFn$_invoke$arity$8(a0,a1,a2,a3,a4,a5,a6,a7);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7);
+}
+} else {
+var a8 = cljs.core._first(next_7);
+var next_8 = cljs.core.next(next_7);
+if((next_8 == null)){
+if(f.cljs$core$IFn$_invoke$arity$9){
+return f.cljs$core$IFn$_invoke$arity$9(a0,a1,a2,a3,a4,a5,a6,a7,a8);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8);
+}
+} else {
+var a9 = cljs.core._first(next_8);
+var next_9 = cljs.core.next(next_8);
+if((next_9 == null)){
+if(f.cljs$core$IFn$_invoke$arity$10){
+return f.cljs$core$IFn$_invoke$arity$10(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);
+}
+} else {
+var a10 = cljs.core._first(next_9);
+var next_10 = cljs.core.next(next_9);
+if((next_10 == null)){
+if(f.cljs$core$IFn$_invoke$arity$11){
+return f.cljs$core$IFn$_invoke$arity$11(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
+}
+} else {
+var a11 = cljs.core._first(next_10);
+var next_11 = cljs.core.next(next_10);
+if((next_11 == null)){
+if(f.cljs$core$IFn$_invoke$arity$12){
+return f.cljs$core$IFn$_invoke$arity$12(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
+}
+} else {
+var a12 = cljs.core._first(next_11);
+var next_12 = cljs.core.next(next_11);
+if((next_12 == null)){
+if(f.cljs$core$IFn$_invoke$arity$13){
+return f.cljs$core$IFn$_invoke$arity$13(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12);
+}
+} else {
+var a13 = cljs.core._first(next_12);
+var next_13 = cljs.core.next(next_12);
+if((next_13 == null)){
+if(f.cljs$core$IFn$_invoke$arity$14){
+return f.cljs$core$IFn$_invoke$arity$14(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13);
+}
+} else {
+var a14 = cljs.core._first(next_13);
+var next_14 = cljs.core.next(next_13);
+if((next_14 == null)){
+if(f.cljs$core$IFn$_invoke$arity$15){
+return f.cljs$core$IFn$_invoke$arity$15(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14);
+}
+} else {
+var a15 = cljs.core._first(next_14);
+var next_15 = cljs.core.next(next_14);
+if((next_15 == null)){
+if(f.cljs$core$IFn$_invoke$arity$16){
+return f.cljs$core$IFn$_invoke$arity$16(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15);
+}
+} else {
+var a16 = cljs.core._first(next_15);
+var next_16 = cljs.core.next(next_15);
+if((next_16 == null)){
+if(f.cljs$core$IFn$_invoke$arity$17){
+return f.cljs$core$IFn$_invoke$arity$17(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16);
+}
+} else {
+var a17 = cljs.core._first(next_16);
+var next_17 = cljs.core.next(next_16);
+if((next_17 == null)){
+if(f.cljs$core$IFn$_invoke$arity$18){
+return f.cljs$core$IFn$_invoke$arity$18(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17);
+}
+} else {
+var a18 = cljs.core._first(next_17);
+var next_18 = cljs.core.next(next_17);
+if((next_18 == null)){
+if(f.cljs$core$IFn$_invoke$arity$19){
+return f.cljs$core$IFn$_invoke$arity$19(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18);
+}
+} else {
+var a19 = cljs.core._first(next_18);
+var next_19 = cljs.core.next(next_18);
+if((next_19 == null)){
+if(f.cljs$core$IFn$_invoke$arity$20){
+return f.cljs$core$IFn$_invoke$arity$20(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19);
+} else {
+return f.call(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19);
+}
+} else {
+var arr__8841__auto__ = [a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19];
+var s__8842__auto___10946 = next_19;
+while(true){
+if(s__8842__auto___10946){
+arr__8841__auto__.push(cljs.core._first(s__8842__auto___10946));
+
+var G__10947 = cljs.core.next(s__8842__auto___10946);
+s__8842__auto___10946 = G__10947;
+continue;
+} else {
+}
+break;
+}
+
+return f.apply(f,arr__8841__auto__);
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+});
+
+cljs.core.apply_to_simple.cljs$lang$maxFixedArity = 6;
+
+/**
+ * Applies fn f to the argument list formed by prepending intervening arguments to args.
+ */
+cljs.core.apply = (function cljs$core$apply(var_args){
+var G__10955 = arguments.length;
+switch (G__10955) {
+case 2:
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 5:
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10957 = arguments.length;
+var i__9001__auto___10958 = (0);
+while(true){
+if((i__9001__auto___10958 < len__9000__auto___10957)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10958]));
+
+var G__10959 = (i__9001__auto___10958 + (1));
+i__9001__auto___10958 = G__10959;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((5)),(0),null));
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.apply.cljs$core$IFn$_invoke$arity$2 = (function (f,args){
+if(f.cljs$lang$applyTo){
+var fixed_arity = f.cljs$lang$maxFixedArity;
+var bc = cljs.core.bounded_count((fixed_arity + (1)),args);
+if((bc <= fixed_arity)){
+return cljs.core.apply_to(f,bc,args);
+} else {
+return f.cljs$lang$applyTo(args);
+}
+} else {
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$2(f,cljs.core.seq(args));
+}
+});
+
+cljs.core.apply.cljs$core$IFn$_invoke$arity$3 = (function (f,x,args){
+if(f.cljs$lang$applyTo){
+var arglist = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$2(x,args);
+var fixed_arity = f.cljs$lang$maxFixedArity;
+var bc = (cljs.core.bounded_count(fixed_arity,args) + (1));
+if((bc <= fixed_arity)){
+return cljs.core.apply_to(f,bc,arglist);
+} else {
+return f.cljs$lang$applyTo(arglist);
+}
+} else {
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$3(f,x,cljs.core.seq(args));
+}
+});
+
+cljs.core.apply.cljs$core$IFn$_invoke$arity$4 = (function (f,x,y,args){
+if(f.cljs$lang$applyTo){
+var arglist = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$3(x,y,args);
+var fixed_arity = f.cljs$lang$maxFixedArity;
+var bc = ((2) + cljs.core.bounded_count((fixed_arity - (1)),args));
+if((bc <= fixed_arity)){
+return cljs.core.apply_to(f,bc,arglist);
+} else {
+return f.cljs$lang$applyTo(arglist);
+}
+} else {
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$4(f,x,y,cljs.core.seq(args));
+}
+});
+
+cljs.core.apply.cljs$core$IFn$_invoke$arity$5 = (function (f,x,y,z,args){
+if(f.cljs$lang$applyTo){
+var arglist = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(x,y,z,args);
+var fixed_arity = f.cljs$lang$maxFixedArity;
+var bc = ((3) + cljs.core.bounded_count((fixed_arity - (2)),args));
+if((bc <= fixed_arity)){
+return cljs.core.apply_to(f,bc,arglist);
+} else {
+return f.cljs$lang$applyTo(arglist);
+}
+} else {
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$5(f,x,y,z,cljs.core.seq(args));
+}
+});
+
+cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic = (function (f,a,b,c,d,args){
+if(f.cljs$lang$applyTo){
+var spread_args = cljs.core.spread(args);
+var arglist = cljs.core.cons(a,cljs.core.cons(b,cljs.core.cons(c,cljs.core.cons(d,spread_args))));
+var fixed_arity = f.cljs$lang$maxFixedArity;
+var bc = ((4) + cljs.core.bounded_count((fixed_arity - (3)),spread_args));
+if((bc <= fixed_arity)){
+return cljs.core.apply_to(f,bc,arglist);
+} else {
+return f.cljs$lang$applyTo(arglist);
+}
+} else {
+return cljs.core.apply_to_simple.cljs$core$IFn$_invoke$arity$6(f,a,b,c,d,cljs.core.spread(args));
+}
+});
+
+/** @this {Function} */
+cljs.core.apply.cljs$lang$applyTo = (function (seq10949){
+var G__10950 = cljs.core.first(seq10949);
+var seq10949__$1 = cljs.core.next(seq10949);
+var G__10951 = cljs.core.first(seq10949__$1);
+var seq10949__$2 = cljs.core.next(seq10949__$1);
+var G__10952 = cljs.core.first(seq10949__$2);
+var seq10949__$3 = cljs.core.next(seq10949__$2);
+var G__10953 = cljs.core.first(seq10949__$3);
+var seq10949__$4 = cljs.core.next(seq10949__$3);
+var G__10954 = cljs.core.first(seq10949__$4);
+var seq10949__$5 = cljs.core.next(seq10949__$4);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10950,G__10951,G__10952,G__10953,G__10954,seq10949__$5);
+});
+
+cljs.core.apply.cljs$lang$maxFixedArity = (5);
+
+/**
+ * Returns an object of the same type and value as obj, with
+ * (apply f (meta obj) args) as its metadata.
+ */
+cljs.core.vary_meta = (function cljs$core$vary_meta(var_args){
+var G__10968 = arguments.length;
+switch (G__10968) {
+case 2:
+return cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 5:
+return cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+case 6:
+return cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$6((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10985 = arguments.length;
+var i__9001__auto___10986 = (0);
+while(true){
+if((i__9001__auto___10986 < len__9000__auto___10985)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10986]));
+
+var G__10987 = (i__9001__auto___10986 + (1));
+i__9001__auto___10986 = G__10987;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((6)),(0),null));
+return cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$2 = (function (obj,f){
+return cljs.core.with_meta(obj,(function (){var G__10969 = cljs.core.meta(obj);
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10969) : f.call(null,G__10969));
+})());
+});
+
+cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$3 = (function (obj,f,a){
+return cljs.core.with_meta(obj,(function (){var G__10970 = cljs.core.meta(obj);
+var G__10971 = a;
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10970,G__10971) : f.call(null,G__10970,G__10971));
+})());
+});
+
+cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$4 = (function (obj,f,a,b){
+return cljs.core.with_meta(obj,(function (){var G__10972 = cljs.core.meta(obj);
+var G__10973 = a;
+var G__10974 = b;
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10972,G__10973,G__10974) : f.call(null,G__10972,G__10973,G__10974));
+})());
+});
+
+cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$5 = (function (obj,f,a,b,c){
+return cljs.core.with_meta(obj,(function (){var G__10975 = cljs.core.meta(obj);
+var G__10976 = a;
+var G__10977 = b;
+var G__10978 = c;
+return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__10975,G__10976,G__10977,G__10978) : f.call(null,G__10975,G__10976,G__10977,G__10978));
+})());
+});
+
+cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$6 = (function (obj,f,a,b,c,d){
+return cljs.core.with_meta(obj,(function (){var G__10979 = cljs.core.meta(obj);
+var G__10980 = a;
+var G__10981 = b;
+var G__10982 = c;
+var G__10983 = d;
+return (f.cljs$core$IFn$_invoke$arity$5 ? f.cljs$core$IFn$_invoke$arity$5(G__10979,G__10980,G__10981,G__10982,G__10983) : f.call(null,G__10979,G__10980,G__10981,G__10982,G__10983));
+})());
+});
+
+cljs.core.vary_meta.cljs$core$IFn$_invoke$arity$variadic = (function (obj,f,a,b,c,d,args){
+return cljs.core.with_meta(obj,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,cljs.core.meta(obj),a,b,c,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([d,args], 0)));
+});
+
+/** @this {Function} */
+cljs.core.vary_meta.cljs$lang$applyTo = (function (seq10961){
+var G__10962 = cljs.core.first(seq10961);
+var seq10961__$1 = cljs.core.next(seq10961);
+var G__10963 = cljs.core.first(seq10961__$1);
+var seq10961__$2 = cljs.core.next(seq10961__$1);
+var G__10964 = cljs.core.first(seq10961__$2);
+var seq10961__$3 = cljs.core.next(seq10961__$2);
+var G__10965 = cljs.core.first(seq10961__$3);
+var seq10961__$4 = cljs.core.next(seq10961__$3);
+var G__10966 = cljs.core.first(seq10961__$4);
+var seq10961__$5 = cljs.core.next(seq10961__$4);
+var G__10967 = cljs.core.first(seq10961__$5);
+var seq10961__$6 = cljs.core.next(seq10961__$5);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10962,G__10963,G__10964,G__10965,G__10966,G__10967,seq10961__$6);
+});
+
+cljs.core.vary_meta.cljs$lang$maxFixedArity = (6);
+
+/**
+ * Same as (not (= obj1 obj2))
+ */
+cljs.core.not_EQ_ = (function cljs$core$not_EQ_(var_args){
+var G__10992 = arguments.length;
+switch (G__10992) {
+case 1:
+return cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___10994 = arguments.length;
+var i__9001__auto___10995 = (0);
+while(true){
+if((i__9001__auto___10995 < len__9000__auto___10994)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___10995]));
+
+var G__10996 = (i__9001__auto___10995 + (1));
+i__9001__auto___10995 = G__10996;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return false;
+});
+
+cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2 = (function (x,y){
+return (!(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y)));
+});
+
+cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$variadic = (function (x,y,more){
+return cljs.core.not(cljs.core.apply.cljs$core$IFn$_invoke$arity$4(cljs.core._EQ_,x,y,more));
+});
+
+/** @this {Function} */
+cljs.core.not_EQ_.cljs$lang$applyTo = (function (seq10989){
+var G__10990 = cljs.core.first(seq10989);
+var seq10989__$1 = cljs.core.next(seq10989);
+var G__10991 = cljs.core.first(seq10989__$1);
+var seq10989__$2 = cljs.core.next(seq10989__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10990,G__10991,seq10989__$2);
+});
+
+cljs.core.not_EQ_.cljs$lang$maxFixedArity = (2);
+
+/**
+ * If coll is empty, returns nil, else coll
+ */
+cljs.core.not_empty = (function cljs$core$not_empty(coll){
+if(cljs.core.seq(coll)){
+return coll;
+} else {
+return null;
+}
+});
+cljs.core.nil_iter = (function cljs$core$nil_iter(){
+if((typeof cljs !== 'undefined') && (typeof cljs.core !== 'undefined') && (typeof cljs.core.t_cljs$core10997 !== 'undefined')){
+} else {
+
+/**
+* @constructor
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.IWithMeta}
+*/
+cljs.core.t_cljs$core10997 = (function (meta10998){
+this.meta10998 = meta10998;
+this.cljs$lang$protocol_mask$partition0$ = 393216;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.t_cljs$core10997.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_10999,meta10998__$1){
+var self__ = this;
+var _10999__$1 = this;
+return (new cljs.core.t_cljs$core10997(meta10998__$1));
+});
+
+cljs.core.t_cljs$core10997.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_10999){
+var self__ = this;
+var _10999__$1 = this;
+return self__.meta10998;
+});
+
+cljs.core.t_cljs$core10997.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+return false;
+});
+
+cljs.core.t_cljs$core10997.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("No such element"));
+});
+
+cljs.core.t_cljs$core10997.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.t_cljs$core10997.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta10998","meta10998",1410155594,null)], null);
+});
+
+cljs.core.t_cljs$core10997.cljs$lang$type = true;
+
+cljs.core.t_cljs$core10997.cljs$lang$ctorStr = "cljs.core/t_cljs$core10997";
+
+cljs.core.t_cljs$core10997.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/t_cljs$core10997");
+});
+
+/**
+ * Positional factory function for cljs.core/t_cljs$core10997.
+ */
+cljs.core.__GT_t_cljs$core10997 = (function cljs$core$nil_iter_$___GT_t_cljs$core10997(meta10998){
+return (new cljs.core.t_cljs$core10997(meta10998));
+});
+
+}
+
+return (new cljs.core.t_cljs$core10997(cljs.core.PersistentArrayMap.EMPTY));
+});
+
+/**
+* @constructor
+*/
+cljs.core.StringIter = (function (s,i){
+this.s = s;
+this.i = i;
+});
+cljs.core.StringIter.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+return (self__.i < self__.s.length);
+});
+
+cljs.core.StringIter.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+var ret = self__.s.charAt(self__.i);
+self__.i = (self__.i + (1));
+
+return ret;
+});
+
+cljs.core.StringIter.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.StringIter.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"s","s",-948495851,null),cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.StringIter.cljs$lang$type = true;
+
+cljs.core.StringIter.cljs$lang$ctorStr = "cljs.core/StringIter";
+
+cljs.core.StringIter.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/StringIter");
+});
+
+/**
+ * Positional factory function for cljs.core/StringIter.
+ */
+cljs.core.__GT_StringIter = (function cljs$core$__GT_StringIter(s,i){
+return (new cljs.core.StringIter(s,i));
+});
+
+cljs.core.string_iter = (function cljs$core$string_iter(x){
+return (new cljs.core.StringIter(x,(0)));
+});
+
+/**
+* @constructor
+*/
+cljs.core.ArrayIter = (function (arr,i){
+this.arr = arr;
+this.i = i;
+});
+cljs.core.ArrayIter.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+return (self__.i < self__.arr.length);
+});
+
+cljs.core.ArrayIter.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+var ret = (self__.arr[self__.i]);
+self__.i = (self__.i + (1));
+
+return ret;
+});
+
+cljs.core.ArrayIter.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.ArrayIter.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"arr","arr",2115492975,null),cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ArrayIter.cljs$lang$type = true;
+
+cljs.core.ArrayIter.cljs$lang$ctorStr = "cljs.core/ArrayIter";
+
+cljs.core.ArrayIter.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ArrayIter");
+});
+
+/**
+ * Positional factory function for cljs.core/ArrayIter.
+ */
+cljs.core.__GT_ArrayIter = (function cljs$core$__GT_ArrayIter(arr,i){
+return (new cljs.core.ArrayIter(arr,i));
+});
+
+cljs.core.array_iter = (function cljs$core$array_iter(x){
+return (new cljs.core.ArrayIter(x,(0)));
+});
+cljs.core.INIT = ({});
+cljs.core.START = ({});
+
+/**
+* @constructor
+*/
+cljs.core.SeqIter = (function (_seq,_next){
+this._seq = _seq;
+this._next = _next;
+});
+cljs.core.SeqIter.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+if((self__._seq === cljs.core.INIT)){
+self__._seq = cljs.core.START;
+
+self__._next = cljs.core.seq(self__._next);
+} else {
+if((self__._seq === self__._next)){
+self__._next = cljs.core.next(self__._seq);
+} else {
+}
+}
+
+return (!((self__._next == null)));
+});
+
+cljs.core.SeqIter.prototype.next = (function (){
+var self__ = this;
+var this$ = this;
+if((!(this$.hasNext()))){
+throw (new Error("No such element"));
+} else {
+self__._seq = self__._next;
+
+return cljs.core.first(self__._next);
+}
+});
+
+cljs.core.SeqIter.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.SeqIter.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"_seq","_seq",-449557847,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"_next","_next",101877036,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.SeqIter.cljs$lang$type = true;
+
+cljs.core.SeqIter.cljs$lang$ctorStr = "cljs.core/SeqIter";
+
+cljs.core.SeqIter.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/SeqIter");
+});
+
+/**
+ * Positional factory function for cljs.core/SeqIter.
+ */
+cljs.core.__GT_SeqIter = (function cljs$core$__GT_SeqIter(_seq,_next){
+return (new cljs.core.SeqIter(_seq,_next));
+});
+
+cljs.core.seq_iter = (function cljs$core$seq_iter(coll){
+return (new cljs.core.SeqIter(cljs.core.INIT,coll));
+});
+cljs.core.iter = (function cljs$core$iter(coll){
+if(cljs.core.iterable_QMARK_(coll)){
+return cljs.core._iterator(coll);
+} else {
+if((coll == null)){
+return cljs.core.nil_iter();
+} else {
+if(typeof coll === 'string'){
+return cljs.core.string_iter(coll);
+} else {
+if(cljs.core.array_QMARK_(coll)){
+return cljs.core.array_iter(coll);
+} else {
+if(cljs.core.seqable_QMARK_(coll)){
+return cljs.core.seq_iter(coll);
+} else {
+throw (new Error(["Cannot create iterator from ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(coll)].join('')));
+
+}
+}
+}
+}
+}
+});
+
+/**
+* @constructor
+*/
+cljs.core.Many = (function (vals){
+this.vals = vals;
+});
+cljs.core.Many.prototype.add = (function (o){
+var self__ = this;
+var this$ = this;
+self__.vals.push(o);
+
+return this$;
+});
+
+cljs.core.Many.prototype.remove = (function (){
+var self__ = this;
+var this$ = this;
+return self__.vals.shift();
+});
+
+cljs.core.Many.prototype.isEmpty = (function (){
+var self__ = this;
+var this$ = this;
+return (self__.vals.length === (0));
+});
+
+cljs.core.Many.prototype.toString = (function (){
+var self__ = this;
+var this$ = this;
+return ["Many: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.vals)].join('');
+});
+
+cljs.core.Many.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"vals","vals",-1886377036,null)], null);
+});
+
+cljs.core.Many.cljs$lang$type = true;
+
+cljs.core.Many.cljs$lang$ctorStr = "cljs.core/Many";
+
+cljs.core.Many.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Many");
+});
+
+/**
+ * Positional factory function for cljs.core/Many.
+ */
+cljs.core.__GT_Many = (function cljs$core$__GT_Many(vals){
+return (new cljs.core.Many(vals));
+});
+
+cljs.core.NONE = ({});
+
+/**
+* @constructor
+*/
+cljs.core.Single = (function (val){
+this.val = val;
+});
+cljs.core.Single.prototype.add = (function (o){
+var self__ = this;
+var this$ = this;
+if((self__.val === cljs.core.NONE)){
+self__.val = o;
+
+return this$;
+} else {
+return (new cljs.core.Many([self__.val,o]));
+}
+});
+
+cljs.core.Single.prototype.remove = (function (){
+var self__ = this;
+var this$ = this;
+if((self__.val === cljs.core.NONE)){
+throw (new Error("Removing object from empty buffer"));
+} else {
+var ret = self__.val;
+self__.val = cljs.core.NONE;
+
+return ret;
+}
+});
+
+cljs.core.Single.prototype.isEmpty = (function (){
+var self__ = this;
+var this$ = this;
+return (self__.val === cljs.core.NONE);
+});
+
+cljs.core.Single.prototype.toString = (function (){
+var self__ = this;
+var this$ = this;
+return ["Single: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.val)].join('');
+});
+
+cljs.core.Single.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"val","val",1769233139,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Single.cljs$lang$type = true;
+
+cljs.core.Single.cljs$lang$ctorStr = "cljs.core/Single";
+
+cljs.core.Single.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Single");
+});
+
+/**
+ * Positional factory function for cljs.core/Single.
+ */
+cljs.core.__GT_Single = (function cljs$core$__GT_Single(val){
+return (new cljs.core.Single(val));
+});
+
+
+/**
+* @constructor
+*/
+cljs.core.Empty = (function (){
+});
+cljs.core.Empty.prototype.add = (function (o){
+var self__ = this;
+var this$ = this;
+return (new cljs.core.Single(o));
+});
+
+cljs.core.Empty.prototype.remove = (function (){
+var self__ = this;
+var this$ = this;
+throw (new Error("Removing object from empty buffer"));
+});
+
+cljs.core.Empty.prototype.isEmpty = (function (){
+var self__ = this;
+var this$ = this;
+return true;
+});
+
+cljs.core.Empty.prototype.toString = (function (){
+var self__ = this;
+var this$ = this;
+return "Empty";
+});
+
+cljs.core.Empty.getBasis = (function (){
+return cljs.core.PersistentVector.EMPTY;
+});
+
+cljs.core.Empty.cljs$lang$type = true;
+
+cljs.core.Empty.cljs$lang$ctorStr = "cljs.core/Empty";
+
+cljs.core.Empty.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Empty");
+});
+
+/**
+ * Positional factory function for cljs.core/Empty.
+ */
+cljs.core.__GT_Empty = (function cljs$core$__GT_Empty(){
+return (new cljs.core.Empty());
+});
+
+cljs.core.EMPTY = (new cljs.core.Empty());
+
+/**
+* @constructor
+*/
+cljs.core.MultiIterator = (function (iters){
+this.iters = iters;
+});
+cljs.core.MultiIterator.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+var iters__$1 = cljs.core.seq(self__.iters);
+while(true){
+if((!((iters__$1 == null)))){
+var iter = cljs.core.first(iters__$1);
+if((!(iter.hasNext()))){
+return false;
+} else {
+var G__11000 = cljs.core.next(iters__$1);
+iters__$1 = G__11000;
+continue;
+}
+} else {
+return true;
+}
+break;
+}
+});
+
+cljs.core.MultiIterator.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+var nexts = [];
+var n__8769__auto___11001 = self__.iters.length;
+var i_11002 = (0);
+while(true){
+if((i_11002 < n__8769__auto___11001)){
+(nexts[i_11002] = (self__.iters[i_11002]).next());
+
+var G__11003 = (i_11002 + (1));
+i_11002 = G__11003;
+continue;
+} else {
+}
+break;
+}
+
+return cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(nexts,(0));
+});
+
+cljs.core.MultiIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"iters","iters",719353031,null)], null);
+});
+
+cljs.core.MultiIterator.cljs$lang$type = true;
+
+cljs.core.MultiIterator.cljs$lang$ctorStr = "cljs.core/MultiIterator";
+
+cljs.core.MultiIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/MultiIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/MultiIterator.
+ */
+cljs.core.__GT_MultiIterator = (function cljs$core$__GT_MultiIterator(iters){
+return (new cljs.core.MultiIterator(iters));
+});
+
+cljs.core.chunkIteratorSeq = (function cljs$core$chunkIteratorSeq(iter){
+return (new cljs.core.LazySeq(null,(function (){
+if(iter.hasNext()){
+var arr = [];
+var n = (0);
+while(true){
+if(cljs.core.truth_((function (){var and__7791__auto__ = iter.hasNext();
+if(cljs.core.truth_(and__7791__auto__)){
+return (n < (32));
+} else {
+return and__7791__auto__;
+}
+})())){
+(arr[n] = iter.next());
+
+var G__11004 = (n + (1));
+n = G__11004;
+continue;
+} else {
+return cljs.core.chunk_cons(cljs.core.array_chunk.cljs$core$IFn$_invoke$arity$3(arr,(0),n),(cljs.core.chunkIteratorSeq.cljs$core$IFn$_invoke$arity$1 ? cljs.core.chunkIteratorSeq.cljs$core$IFn$_invoke$arity$1(iter) : cljs.core.chunkIteratorSeq.call(null,iter)));
+}
+break;
+}
+} else {
+return null;
+}
+}),null,null));
+});
+
+/**
+* @constructor
+*/
+cljs.core.TransformerIterator = (function (buffer,_next,completed,xf,sourceIter,multi){
+this.buffer = buffer;
+this._next = _next;
+this.completed = completed;
+this.xf = xf;
+this.sourceIter = sourceIter;
+this.multi = multi;
+});
+cljs.core.TransformerIterator.prototype.step = (function (){
+var self__ = this;
+var this$ = this;
+if((!((self__._next === cljs.core.NONE)))){
+return true;
+} else {
+while(true){
+if((self__._next === cljs.core.NONE)){
+if(self__.buffer.isEmpty()){
+if(self__.completed){
+return false;
+} else {
+if(self__.sourceIter.hasNext()){
+var iter = ((self__.multi)?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(self__.xf,cljs.core.cons(null,self__.sourceIter.next())):(function (){var G__11005 = null;
+var G__11006 = self__.sourceIter.next();
+return (self__.xf.cljs$core$IFn$_invoke$arity$2 ? self__.xf.cljs$core$IFn$_invoke$arity$2(G__11005,G__11006) : self__.xf.call(null,G__11005,G__11006));
+})());
+if(cljs.core.reduced_QMARK_(iter)){
+(self__.xf.cljs$core$IFn$_invoke$arity$1 ? self__.xf.cljs$core$IFn$_invoke$arity$1(null) : self__.xf.call(null,null));
+
+self__.completed = true;
+} else {
+}
+
+continue;
+} else {
+(self__.xf.cljs$core$IFn$_invoke$arity$1 ? self__.xf.cljs$core$IFn$_invoke$arity$1(null) : self__.xf.call(null,null));
+
+self__.completed = true;
+
+continue;
+}
+}
+} else {
+self__._next = self__.buffer.remove();
+
+continue;
+}
+} else {
+return true;
+}
+break;
+}
+}
+});
+
+cljs.core.TransformerIterator.prototype.hasNext = (function (){
+var self__ = this;
+var this$ = this;
+return this$.step();
+});
+
+cljs.core.TransformerIterator.prototype.next = (function (){
+var self__ = this;
+var this$ = this;
+if(this$.hasNext()){
+var ret = self__._next;
+self__._next = cljs.core.NONE;
+
+return ret;
+} else {
+throw (new Error("No such element"));
+}
+});
+
+cljs.core.TransformerIterator.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.TransformerIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"buffer","buffer",-2037140571,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"_next","_next",101877036,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"completed","completed",1154475024,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"xf","xf",2042434515,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"sourceIter","sourceIter",1068220306,null),new cljs.core.Symbol(null,"multi","multi",1450238522,null)], null);
+});
+
+cljs.core.TransformerIterator.cljs$lang$type = true;
+
+cljs.core.TransformerIterator.cljs$lang$ctorStr = "cljs.core/TransformerIterator";
+
+cljs.core.TransformerIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/TransformerIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/TransformerIterator.
+ */
+cljs.core.__GT_TransformerIterator = (function cljs$core$__GT_TransformerIterator(buffer,_next,completed,xf,sourceIter,multi){
+return (new cljs.core.TransformerIterator(buffer,_next,completed,xf,sourceIter,multi));
+});
+
+var G__11007_11010 = cljs.core.TransformerIterator.prototype;
+var G__11008_11011 = cljs.core.ITER_SYMBOL;
+var G__11009_11012 = ((function (G__11007_11010,G__11008_11011){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11007_11010,G__11008_11011))
+;
+goog.object.set(G__11007_11010,G__11008_11011,G__11009_11012);
+cljs.core.transformer_iterator = (function cljs$core$transformer_iterator(xform,sourceIter,multi){
+var iterator = (new cljs.core.TransformerIterator(cljs.core.EMPTY,cljs.core.NONE,false,null,sourceIter,multi));
+iterator.xf = (function (){var G__11013 = ((function (iterator){
+return (function() {
+var G__11014 = null;
+var G__11014__0 = (function (){
+return null;
+});
+var G__11014__1 = (function (acc){
+return acc;
+});
+var G__11014__2 = (function (acc,o){
+iterator.buffer = iterator.buffer.add(o);
+
+return acc;
+});
+G__11014 = function(acc,o){
+switch(arguments.length){
+case 0:
+return G__11014__0.call(this);
+case 1:
+return G__11014__1.call(this,acc);
+case 2:
+return G__11014__2.call(this,acc,o);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11014.cljs$core$IFn$_invoke$arity$0 = G__11014__0;
+G__11014.cljs$core$IFn$_invoke$arity$1 = G__11014__1;
+G__11014.cljs$core$IFn$_invoke$arity$2 = G__11014__2;
+return G__11014;
+})()
+;})(iterator))
+;
+return (xform.cljs$core$IFn$_invoke$arity$1 ? xform.cljs$core$IFn$_invoke$arity$1(G__11013) : xform.call(null,G__11013));
+})();
+
+return iterator;
+});
+cljs.core.TransformerIterator.create = (function (xform,source){
+return cljs.core.transformer_iterator(xform,source,false);
+});
+cljs.core.TransformerIterator.createMulti = (function (xform,sources){
+return cljs.core.transformer_iterator(xform,(new cljs.core.MultiIterator(cljs.core.to_array(sources))),true);
+});
+/**
+ * Coerces coll to a (possibly empty) sequence, if it is not already
+ * one. Will not force a lazy seq. (sequence nil) yields (), When a
+ * transducer is supplied, returns a lazy sequence of applications of
+ * the transform to the items in coll(s), i.e. to the set of first
+ * items of each coll, followed by the set of second
+ * items in each coll, until any one of the colls is exhausted. Any
+ * remaining items in other colls are ignored. The transform should accept
+ * number-of-colls arguments
+ */
+cljs.core.sequence = (function cljs$core$sequence(var_args){
+var G__11019 = arguments.length;
+switch (G__11019) {
+case 1:
+return cljs.core.sequence.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.sequence.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11021 = arguments.length;
+var i__9001__auto___11022 = (0);
+while(true){
+if((i__9001__auto___11022 < len__9000__auto___11021)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11022]));
+
+var G__11023 = (i__9001__auto___11022 + (1));
+i__9001__auto___11022 = G__11023;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.sequence.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.sequence.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+if(cljs.core.seq_QMARK_(coll)){
+return coll;
+} else {
+var or__7806__auto__ = cljs.core.seq(coll);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return cljs.core.List.EMPTY;
+}
+}
+});
+
+cljs.core.sequence.cljs$core$IFn$_invoke$arity$2 = (function (xform,coll){
+var or__7806__auto__ = cljs.core.chunkIteratorSeq(cljs.core.TransformerIterator.create(xform,cljs.core.iter(coll)));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.sequence.cljs$core$IFn$_invoke$arity$variadic = (function (xform,coll,colls){
+var or__7806__auto__ = cljs.core.chunkIteratorSeq(cljs.core.TransformerIterator.createMulti(xform,cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.iter,cljs.core.cons(coll,colls))));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+/** @this {Function} */
+cljs.core.sequence.cljs$lang$applyTo = (function (seq11016){
+var G__11017 = cljs.core.first(seq11016);
+var seq11016__$1 = cljs.core.next(seq11016);
+var G__11018 = cljs.core.first(seq11016__$1);
+var seq11016__$2 = cljs.core.next(seq11016__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11017,G__11018,seq11016__$2);
+});
+
+cljs.core.sequence.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns true if (pred x) is logical true for every x in coll, else
+ * false.
+ */
+cljs.core.every_QMARK_ = (function cljs$core$every_QMARK_(pred,coll){
+while(true){
+if((cljs.core.seq(coll) == null)){
+return true;
+} else {
+if(cljs.core.truth_((function (){var G__11024 = cljs.core.first(coll);
+return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__11024) : pred.call(null,G__11024));
+})())){
+var G__11025 = pred;
+var G__11026 = cljs.core.next(coll);
+pred = G__11025;
+coll = G__11026;
+continue;
+} else {
+return false;
+
+}
+}
+break;
+}
+});
+/**
+ * Returns false if (pred x) is logical true for every x in
+ * coll, else true.
+ */
+cljs.core.not_every_QMARK_ = (function cljs$core$not_every_QMARK_(pred,coll){
+return (!(cljs.core.every_QMARK_(pred,coll)));
+});
+/**
+ * Returns the first logical true value of (pred x) for any x in coll,
+ * else nil. One common idiom is to use a set as pred, for example
+ * this will return :fred if :fred is in the sequence, otherwise nil:
+ * (some #{:fred} coll)
+ */
+cljs.core.some = (function cljs$core$some(pred,coll){
+while(true){
+if(cljs.core.seq(coll)){
+var or__7806__auto__ = (function (){var G__11028 = cljs.core.first(coll);
+return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__11028) : pred.call(null,G__11028));
+})();
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+var G__11029 = pred;
+var G__11030 = cljs.core.next(coll);
+pred = G__11029;
+coll = G__11030;
+continue;
+}
+} else {
+return null;
+}
+break;
+}
+});
+/**
+ * Returns false if (pred x) is logical true for any x in coll,
+ * else true.
+ */
+cljs.core.not_any_QMARK_ = (function cljs$core$not_any_QMARK_(pred,coll){
+return cljs.core.not(cljs.core.some(pred,coll));
+});
+/**
+ * Returns true if n is even, throws an exception if n is not an integer
+ */
+cljs.core.even_QMARK_ = (function cljs$core$even_QMARK_(n){
+if(cljs.core.integer_QMARK_(n)){
+return ((n & (1)) === (0));
+} else {
+throw (new Error(["Argument must be an integer: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(n)].join('')));
+}
+});
+/**
+ * Returns true if n is odd, throws an exception if n is not an integer
+ */
+cljs.core.odd_QMARK_ = (function cljs$core$odd_QMARK_(n){
+return (!(cljs.core.even_QMARK_(n)));
+});
+/**
+ * Takes a fn f and returns a fn that takes the same arguments as f,
+ * has the same effects, if any, and returns the opposite truth value.
+ */
+cljs.core.complement = (function cljs$core$complement(f){
+return (function() {
+var G__11031 = null;
+var G__11031__0 = (function (){
+return cljs.core.not((f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null)));
+});
+var G__11031__1 = (function (x){
+return cljs.core.not((f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(x) : f.call(null,x)));
+});
+var G__11031__2 = (function (x,y){
+return cljs.core.not((f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(x,y) : f.call(null,x,y)));
+});
+var G__11031__3 = (function() {
+var G__11032__delegate = function (x,y,zs){
+return cljs.core.not(cljs.core.apply.cljs$core$IFn$_invoke$arity$4(f,x,y,zs));
+};
+var G__11032 = function (x,y,var_args){
+var zs = null;
+if (arguments.length > 2) {
+var G__11033__i = 0, G__11033__a = new Array(arguments.length - 2);
+while (G__11033__i < G__11033__a.length) {G__11033__a[G__11033__i] = arguments[G__11033__i + 2]; ++G__11033__i;}
+ zs = new cljs.core.IndexedSeq(G__11033__a,0,null);
+}
+return G__11032__delegate.call(this,x,y,zs);};
+G__11032.cljs$lang$maxFixedArity = 2;
+G__11032.cljs$lang$applyTo = (function (arglist__11034){
+var x = cljs.core.first(arglist__11034);
+arglist__11034 = cljs.core.next(arglist__11034);
+var y = cljs.core.first(arglist__11034);
+var zs = cljs.core.rest(arglist__11034);
+return G__11032__delegate(x,y,zs);
+});
+G__11032.cljs$core$IFn$_invoke$arity$variadic = G__11032__delegate;
+return G__11032;
+})()
+;
+G__11031 = function(x,y,var_args){
+var zs = var_args;
+switch(arguments.length){
+case 0:
+return G__11031__0.call(this);
+case 1:
+return G__11031__1.call(this,x);
+case 2:
+return G__11031__2.call(this,x,y);
+default:
+var G__11035 = null;
+if (arguments.length > 2) {
+var G__11036__i = 0, G__11036__a = new Array(arguments.length - 2);
+while (G__11036__i < G__11036__a.length) {G__11036__a[G__11036__i] = arguments[G__11036__i + 2]; ++G__11036__i;}
+G__11035 = new cljs.core.IndexedSeq(G__11036__a,0,null);
+}
+return G__11031__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__11035);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11031.cljs$lang$maxFixedArity = 2;
+G__11031.cljs$lang$applyTo = G__11031__3.cljs$lang$applyTo;
+G__11031.cljs$core$IFn$_invoke$arity$0 = G__11031__0;
+G__11031.cljs$core$IFn$_invoke$arity$1 = G__11031__1;
+G__11031.cljs$core$IFn$_invoke$arity$2 = G__11031__2;
+G__11031.cljs$core$IFn$_invoke$arity$variadic = G__11031__3.cljs$core$IFn$_invoke$arity$variadic;
+return G__11031;
+})()
+});
+/**
+ * Returns a function that takes any number of arguments and returns x.
+ */
+cljs.core.constantly = (function cljs$core$constantly(x){
+return (function() {
+var G__11037__delegate = function (args){
+return x;
+};
+var G__11037 = function (var_args){
+var args = null;
+if (arguments.length > 0) {
+var G__11038__i = 0, G__11038__a = new Array(arguments.length - 0);
+while (G__11038__i < G__11038__a.length) {G__11038__a[G__11038__i] = arguments[G__11038__i + 0]; ++G__11038__i;}
+ args = new cljs.core.IndexedSeq(G__11038__a,0,null);
+}
+return G__11037__delegate.call(this,args);};
+G__11037.cljs$lang$maxFixedArity = 0;
+G__11037.cljs$lang$applyTo = (function (arglist__11039){
+var args = cljs.core.seq(arglist__11039);
+return G__11037__delegate(args);
+});
+G__11037.cljs$core$IFn$_invoke$arity$variadic = G__11037__delegate;
+return G__11037;
+})()
+;
+});
+/**
+ * Takes a set of functions and returns a fn that is the composition
+ * of those fns. The returned fn takes a variable number of args,
+ * applies the rightmost of fns to the args, the next
+ * fn (right-to-left) to the result, etc.
+ */
+cljs.core.comp = (function cljs$core$comp(var_args){
+var G__11045 = arguments.length;
+switch (G__11045) {
+case 0:
+return cljs.core.comp.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.comp.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.comp.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.comp.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11063 = arguments.length;
+var i__9001__auto___11064 = (0);
+while(true){
+if((i__9001__auto___11064 < len__9000__auto___11063)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11064]));
+
+var G__11065 = (i__9001__auto___11064 + (1));
+i__9001__auto___11064 = G__11065;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.comp.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.comp.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.identity;
+});
+
+cljs.core.comp.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return f;
+});
+
+cljs.core.comp.cljs$core$IFn$_invoke$arity$2 = (function (f,g){
+return (function() {
+var G__11066 = null;
+var G__11066__0 = (function (){
+var G__11046 = (g.cljs$core$IFn$_invoke$arity$0 ? g.cljs$core$IFn$_invoke$arity$0() : g.call(null));
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11046) : f.call(null,G__11046));
+});
+var G__11066__1 = (function (x){
+var G__11047 = (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(x) : g.call(null,x));
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11047) : f.call(null,G__11047));
+});
+var G__11066__2 = (function (x,y){
+var G__11048 = (g.cljs$core$IFn$_invoke$arity$2 ? g.cljs$core$IFn$_invoke$arity$2(x,y) : g.call(null,x,y));
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11048) : f.call(null,G__11048));
+});
+var G__11066__3 = (function (x,y,z){
+var G__11049 = (g.cljs$core$IFn$_invoke$arity$3 ? g.cljs$core$IFn$_invoke$arity$3(x,y,z) : g.call(null,x,y,z));
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11049) : f.call(null,G__11049));
+});
+var G__11066__4 = (function() {
+var G__11067__delegate = function (x,y,z,args){
+var G__11050 = cljs.core.apply.cljs$core$IFn$_invoke$arity$5(g,x,y,z,args);
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11050) : f.call(null,G__11050));
+};
+var G__11067 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11068__i = 0, G__11068__a = new Array(arguments.length - 3);
+while (G__11068__i < G__11068__a.length) {G__11068__a[G__11068__i] = arguments[G__11068__i + 3]; ++G__11068__i;}
+ args = new cljs.core.IndexedSeq(G__11068__a,0,null);
+}
+return G__11067__delegate.call(this,x,y,z,args);};
+G__11067.cljs$lang$maxFixedArity = 3;
+G__11067.cljs$lang$applyTo = (function (arglist__11069){
+var x = cljs.core.first(arglist__11069);
+arglist__11069 = cljs.core.next(arglist__11069);
+var y = cljs.core.first(arglist__11069);
+arglist__11069 = cljs.core.next(arglist__11069);
+var z = cljs.core.first(arglist__11069);
+var args = cljs.core.rest(arglist__11069);
+return G__11067__delegate(x,y,z,args);
+});
+G__11067.cljs$core$IFn$_invoke$arity$variadic = G__11067__delegate;
+return G__11067;
+})()
+;
+G__11066 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return G__11066__0.call(this);
+case 1:
+return G__11066__1.call(this,x);
+case 2:
+return G__11066__2.call(this,x,y);
+case 3:
+return G__11066__3.call(this,x,y,z);
+default:
+var G__11070 = null;
+if (arguments.length > 3) {
+var G__11071__i = 0, G__11071__a = new Array(arguments.length - 3);
+while (G__11071__i < G__11071__a.length) {G__11071__a[G__11071__i] = arguments[G__11071__i + 3]; ++G__11071__i;}
+G__11070 = new cljs.core.IndexedSeq(G__11071__a,0,null);
+}
+return G__11066__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11070);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11066.cljs$lang$maxFixedArity = 3;
+G__11066.cljs$lang$applyTo = G__11066__4.cljs$lang$applyTo;
+G__11066.cljs$core$IFn$_invoke$arity$0 = G__11066__0;
+G__11066.cljs$core$IFn$_invoke$arity$1 = G__11066__1;
+G__11066.cljs$core$IFn$_invoke$arity$2 = G__11066__2;
+G__11066.cljs$core$IFn$_invoke$arity$3 = G__11066__3;
+G__11066.cljs$core$IFn$_invoke$arity$variadic = G__11066__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__11066;
+})()
+});
+
+cljs.core.comp.cljs$core$IFn$_invoke$arity$3 = (function (f,g,h){
+return (function() {
+var G__11072 = null;
+var G__11072__0 = (function (){
+var G__11051 = (function (){var G__11052 = (h.cljs$core$IFn$_invoke$arity$0 ? h.cljs$core$IFn$_invoke$arity$0() : h.call(null));
+return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__11052) : g.call(null,G__11052));
+})();
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11051) : f.call(null,G__11051));
+});
+var G__11072__1 = (function (x){
+var G__11053 = (function (){var G__11054 = (h.cljs$core$IFn$_invoke$arity$1 ? h.cljs$core$IFn$_invoke$arity$1(x) : h.call(null,x));
+return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__11054) : g.call(null,G__11054));
+})();
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11053) : f.call(null,G__11053));
+});
+var G__11072__2 = (function (x,y){
+var G__11055 = (function (){var G__11056 = (h.cljs$core$IFn$_invoke$arity$2 ? h.cljs$core$IFn$_invoke$arity$2(x,y) : h.call(null,x,y));
+return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__11056) : g.call(null,G__11056));
+})();
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11055) : f.call(null,G__11055));
+});
+var G__11072__3 = (function (x,y,z){
+var G__11057 = (function (){var G__11058 = (h.cljs$core$IFn$_invoke$arity$3 ? h.cljs$core$IFn$_invoke$arity$3(x,y,z) : h.call(null,x,y,z));
+return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__11058) : g.call(null,G__11058));
+})();
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11057) : f.call(null,G__11057));
+});
+var G__11072__4 = (function() {
+var G__11073__delegate = function (x,y,z,args){
+var G__11059 = (function (){var G__11060 = cljs.core.apply.cljs$core$IFn$_invoke$arity$5(h,x,y,z,args);
+return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__11060) : g.call(null,G__11060));
+})();
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11059) : f.call(null,G__11059));
+};
+var G__11073 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11074__i = 0, G__11074__a = new Array(arguments.length - 3);
+while (G__11074__i < G__11074__a.length) {G__11074__a[G__11074__i] = arguments[G__11074__i + 3]; ++G__11074__i;}
+ args = new cljs.core.IndexedSeq(G__11074__a,0,null);
+}
+return G__11073__delegate.call(this,x,y,z,args);};
+G__11073.cljs$lang$maxFixedArity = 3;
+G__11073.cljs$lang$applyTo = (function (arglist__11075){
+var x = cljs.core.first(arglist__11075);
+arglist__11075 = cljs.core.next(arglist__11075);
+var y = cljs.core.first(arglist__11075);
+arglist__11075 = cljs.core.next(arglist__11075);
+var z = cljs.core.first(arglist__11075);
+var args = cljs.core.rest(arglist__11075);
+return G__11073__delegate(x,y,z,args);
+});
+G__11073.cljs$core$IFn$_invoke$arity$variadic = G__11073__delegate;
+return G__11073;
+})()
+;
+G__11072 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return G__11072__0.call(this);
+case 1:
+return G__11072__1.call(this,x);
+case 2:
+return G__11072__2.call(this,x,y);
+case 3:
+return G__11072__3.call(this,x,y,z);
+default:
+var G__11076 = null;
+if (arguments.length > 3) {
+var G__11077__i = 0, G__11077__a = new Array(arguments.length - 3);
+while (G__11077__i < G__11077__a.length) {G__11077__a[G__11077__i] = arguments[G__11077__i + 3]; ++G__11077__i;}
+G__11076 = new cljs.core.IndexedSeq(G__11077__a,0,null);
+}
+return G__11072__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11076);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11072.cljs$lang$maxFixedArity = 3;
+G__11072.cljs$lang$applyTo = G__11072__4.cljs$lang$applyTo;
+G__11072.cljs$core$IFn$_invoke$arity$0 = G__11072__0;
+G__11072.cljs$core$IFn$_invoke$arity$1 = G__11072__1;
+G__11072.cljs$core$IFn$_invoke$arity$2 = G__11072__2;
+G__11072.cljs$core$IFn$_invoke$arity$3 = G__11072__3;
+G__11072.cljs$core$IFn$_invoke$arity$variadic = G__11072__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__11072;
+})()
+});
+
+cljs.core.comp.cljs$core$IFn$_invoke$arity$variadic = (function (f1,f2,f3,fs){
+var fs__$1 = cljs.core.reverse(cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(f1,f2,f3,fs));
+return ((function (fs__$1){
+return (function() {
+var G__11078__delegate = function (args){
+var ret = cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.first(fs__$1),args);
+var fs__$2 = cljs.core.next(fs__$1);
+while(true){
+if(fs__$2){
+var G__11079 = (function (){var fexpr__11061 = cljs.core.first(fs__$2);
+return (fexpr__11061.cljs$core$IFn$_invoke$arity$1 ? fexpr__11061.cljs$core$IFn$_invoke$arity$1(ret) : fexpr__11061.call(null,ret));
+})();
+var G__11080 = cljs.core.next(fs__$2);
+ret = G__11079;
+fs__$2 = G__11080;
+continue;
+} else {
+return ret;
+}
+break;
+}
+};
+var G__11078 = function (var_args){
+var args = null;
+if (arguments.length > 0) {
+var G__11081__i = 0, G__11081__a = new Array(arguments.length - 0);
+while (G__11081__i < G__11081__a.length) {G__11081__a[G__11081__i] = arguments[G__11081__i + 0]; ++G__11081__i;}
+ args = new cljs.core.IndexedSeq(G__11081__a,0,null);
+}
+return G__11078__delegate.call(this,args);};
+G__11078.cljs$lang$maxFixedArity = 0;
+G__11078.cljs$lang$applyTo = (function (arglist__11082){
+var args = cljs.core.seq(arglist__11082);
+return G__11078__delegate(args);
+});
+G__11078.cljs$core$IFn$_invoke$arity$variadic = G__11078__delegate;
+return G__11078;
+})()
+;
+;})(fs__$1))
+});
+
+/** @this {Function} */
+cljs.core.comp.cljs$lang$applyTo = (function (seq11041){
+var G__11042 = cljs.core.first(seq11041);
+var seq11041__$1 = cljs.core.next(seq11041);
+var G__11043 = cljs.core.first(seq11041__$1);
+var seq11041__$2 = cljs.core.next(seq11041__$1);
+var G__11044 = cljs.core.first(seq11041__$2);
+var seq11041__$3 = cljs.core.next(seq11041__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11042,G__11043,G__11044,seq11041__$3);
+});
+
+cljs.core.comp.cljs$lang$maxFixedArity = (3);
+
+/**
+ * Takes a function f and fewer than the normal arguments to f, and
+ * returns a fn that takes a variable number of additional args. When
+ * called, the returned function calls f with args + additional args.
+ */
+cljs.core.partial = (function cljs$core$partial(var_args){
+var G__11089 = arguments.length;
+switch (G__11089) {
+case 1:
+return cljs.core.partial.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.partial.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.partial.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.partial.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11091 = arguments.length;
+var i__9001__auto___11092 = (0);
+while(true){
+if((i__9001__auto___11092 < len__9000__auto___11091)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11092]));
+
+var G__11093 = (i__9001__auto___11092 + (1));
+i__9001__auto___11092 = G__11093;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((4)),(0),null));
+return cljs.core.partial.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.partial.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return f;
+});
+
+cljs.core.partial.cljs$core$IFn$_invoke$arity$2 = (function (f,arg1){
+return (function() {
+var G__11094 = null;
+var G__11094__0 = (function (){
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(arg1) : f.call(null,arg1));
+});
+var G__11094__1 = (function (x){
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(arg1,x) : f.call(null,arg1,x));
+});
+var G__11094__2 = (function (x,y){
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(arg1,x,y) : f.call(null,arg1,x,y));
+});
+var G__11094__3 = (function (x,y,z){
+return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(arg1,x,y,z) : f.call(null,arg1,x,y,z));
+});
+var G__11094__4 = (function() {
+var G__11095__delegate = function (x,y,z,args){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,arg1,x,y,z,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([args], 0));
+};
+var G__11095 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11096__i = 0, G__11096__a = new Array(arguments.length - 3);
+while (G__11096__i < G__11096__a.length) {G__11096__a[G__11096__i] = arguments[G__11096__i + 3]; ++G__11096__i;}
+ args = new cljs.core.IndexedSeq(G__11096__a,0,null);
+}
+return G__11095__delegate.call(this,x,y,z,args);};
+G__11095.cljs$lang$maxFixedArity = 3;
+G__11095.cljs$lang$applyTo = (function (arglist__11097){
+var x = cljs.core.first(arglist__11097);
+arglist__11097 = cljs.core.next(arglist__11097);
+var y = cljs.core.first(arglist__11097);
+arglist__11097 = cljs.core.next(arglist__11097);
+var z = cljs.core.first(arglist__11097);
+var args = cljs.core.rest(arglist__11097);
+return G__11095__delegate(x,y,z,args);
+});
+G__11095.cljs$core$IFn$_invoke$arity$variadic = G__11095__delegate;
+return G__11095;
+})()
+;
+G__11094 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return G__11094__0.call(this);
+case 1:
+return G__11094__1.call(this,x);
+case 2:
+return G__11094__2.call(this,x,y);
+case 3:
+return G__11094__3.call(this,x,y,z);
+default:
+var G__11098 = null;
+if (arguments.length > 3) {
+var G__11099__i = 0, G__11099__a = new Array(arguments.length - 3);
+while (G__11099__i < G__11099__a.length) {G__11099__a[G__11099__i] = arguments[G__11099__i + 3]; ++G__11099__i;}
+G__11098 = new cljs.core.IndexedSeq(G__11099__a,0,null);
+}
+return G__11094__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11098);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11094.cljs$lang$maxFixedArity = 3;
+G__11094.cljs$lang$applyTo = G__11094__4.cljs$lang$applyTo;
+G__11094.cljs$core$IFn$_invoke$arity$0 = G__11094__0;
+G__11094.cljs$core$IFn$_invoke$arity$1 = G__11094__1;
+G__11094.cljs$core$IFn$_invoke$arity$2 = G__11094__2;
+G__11094.cljs$core$IFn$_invoke$arity$3 = G__11094__3;
+G__11094.cljs$core$IFn$_invoke$arity$variadic = G__11094__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__11094;
+})()
+});
+
+cljs.core.partial.cljs$core$IFn$_invoke$arity$3 = (function (f,arg1,arg2){
+return (function() {
+var G__11100 = null;
+var G__11100__0 = (function (){
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(arg1,arg2) : f.call(null,arg1,arg2));
+});
+var G__11100__1 = (function (x){
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(arg1,arg2,x) : f.call(null,arg1,arg2,x));
+});
+var G__11100__2 = (function (x,y){
+return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(arg1,arg2,x,y) : f.call(null,arg1,arg2,x,y));
+});
+var G__11100__3 = (function (x,y,z){
+return (f.cljs$core$IFn$_invoke$arity$5 ? f.cljs$core$IFn$_invoke$arity$5(arg1,arg2,x,y,z) : f.call(null,arg1,arg2,x,y,z));
+});
+var G__11100__4 = (function() {
+var G__11101__delegate = function (x,y,z,args){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,arg1,arg2,x,y,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([z,args], 0));
+};
+var G__11101 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11102__i = 0, G__11102__a = new Array(arguments.length - 3);
+while (G__11102__i < G__11102__a.length) {G__11102__a[G__11102__i] = arguments[G__11102__i + 3]; ++G__11102__i;}
+ args = new cljs.core.IndexedSeq(G__11102__a,0,null);
+}
+return G__11101__delegate.call(this,x,y,z,args);};
+G__11101.cljs$lang$maxFixedArity = 3;
+G__11101.cljs$lang$applyTo = (function (arglist__11103){
+var x = cljs.core.first(arglist__11103);
+arglist__11103 = cljs.core.next(arglist__11103);
+var y = cljs.core.first(arglist__11103);
+arglist__11103 = cljs.core.next(arglist__11103);
+var z = cljs.core.first(arglist__11103);
+var args = cljs.core.rest(arglist__11103);
+return G__11101__delegate(x,y,z,args);
+});
+G__11101.cljs$core$IFn$_invoke$arity$variadic = G__11101__delegate;
+return G__11101;
+})()
+;
+G__11100 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return G__11100__0.call(this);
+case 1:
+return G__11100__1.call(this,x);
+case 2:
+return G__11100__2.call(this,x,y);
+case 3:
+return G__11100__3.call(this,x,y,z);
+default:
+var G__11104 = null;
+if (arguments.length > 3) {
+var G__11105__i = 0, G__11105__a = new Array(arguments.length - 3);
+while (G__11105__i < G__11105__a.length) {G__11105__a[G__11105__i] = arguments[G__11105__i + 3]; ++G__11105__i;}
+G__11104 = new cljs.core.IndexedSeq(G__11105__a,0,null);
+}
+return G__11100__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11104);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11100.cljs$lang$maxFixedArity = 3;
+G__11100.cljs$lang$applyTo = G__11100__4.cljs$lang$applyTo;
+G__11100.cljs$core$IFn$_invoke$arity$0 = G__11100__0;
+G__11100.cljs$core$IFn$_invoke$arity$1 = G__11100__1;
+G__11100.cljs$core$IFn$_invoke$arity$2 = G__11100__2;
+G__11100.cljs$core$IFn$_invoke$arity$3 = G__11100__3;
+G__11100.cljs$core$IFn$_invoke$arity$variadic = G__11100__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__11100;
+})()
+});
+
+cljs.core.partial.cljs$core$IFn$_invoke$arity$4 = (function (f,arg1,arg2,arg3){
+return (function() {
+var G__11106 = null;
+var G__11106__0 = (function (){
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(arg1,arg2,arg3) : f.call(null,arg1,arg2,arg3));
+});
+var G__11106__1 = (function (x){
+return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(arg1,arg2,arg3,x) : f.call(null,arg1,arg2,arg3,x));
+});
+var G__11106__2 = (function (x,y){
+return (f.cljs$core$IFn$_invoke$arity$5 ? f.cljs$core$IFn$_invoke$arity$5(arg1,arg2,arg3,x,y) : f.call(null,arg1,arg2,arg3,x,y));
+});
+var G__11106__3 = (function (x,y,z){
+return (f.cljs$core$IFn$_invoke$arity$6 ? f.cljs$core$IFn$_invoke$arity$6(arg1,arg2,arg3,x,y,z) : f.call(null,arg1,arg2,arg3,x,y,z));
+});
+var G__11106__4 = (function() {
+var G__11107__delegate = function (x,y,z,args){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,arg1,arg2,arg3,x,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([y,z,args], 0));
+};
+var G__11107 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11108__i = 0, G__11108__a = new Array(arguments.length - 3);
+while (G__11108__i < G__11108__a.length) {G__11108__a[G__11108__i] = arguments[G__11108__i + 3]; ++G__11108__i;}
+ args = new cljs.core.IndexedSeq(G__11108__a,0,null);
+}
+return G__11107__delegate.call(this,x,y,z,args);};
+G__11107.cljs$lang$maxFixedArity = 3;
+G__11107.cljs$lang$applyTo = (function (arglist__11109){
+var x = cljs.core.first(arglist__11109);
+arglist__11109 = cljs.core.next(arglist__11109);
+var y = cljs.core.first(arglist__11109);
+arglist__11109 = cljs.core.next(arglist__11109);
+var z = cljs.core.first(arglist__11109);
+var args = cljs.core.rest(arglist__11109);
+return G__11107__delegate(x,y,z,args);
+});
+G__11107.cljs$core$IFn$_invoke$arity$variadic = G__11107__delegate;
+return G__11107;
+})()
+;
+G__11106 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return G__11106__0.call(this);
+case 1:
+return G__11106__1.call(this,x);
+case 2:
+return G__11106__2.call(this,x,y);
+case 3:
+return G__11106__3.call(this,x,y,z);
+default:
+var G__11110 = null;
+if (arguments.length > 3) {
+var G__11111__i = 0, G__11111__a = new Array(arguments.length - 3);
+while (G__11111__i < G__11111__a.length) {G__11111__a[G__11111__i] = arguments[G__11111__i + 3]; ++G__11111__i;}
+G__11110 = new cljs.core.IndexedSeq(G__11111__a,0,null);
+}
+return G__11106__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11110);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11106.cljs$lang$maxFixedArity = 3;
+G__11106.cljs$lang$applyTo = G__11106__4.cljs$lang$applyTo;
+G__11106.cljs$core$IFn$_invoke$arity$0 = G__11106__0;
+G__11106.cljs$core$IFn$_invoke$arity$1 = G__11106__1;
+G__11106.cljs$core$IFn$_invoke$arity$2 = G__11106__2;
+G__11106.cljs$core$IFn$_invoke$arity$3 = G__11106__3;
+G__11106.cljs$core$IFn$_invoke$arity$variadic = G__11106__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__11106;
+})()
+});
+
+cljs.core.partial.cljs$core$IFn$_invoke$arity$variadic = (function (f,arg1,arg2,arg3,more){
+return (function() {
+var G__11112__delegate = function (args){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,arg1,arg2,arg3,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(more,args));
+};
+var G__11112 = function (var_args){
+var args = null;
+if (arguments.length > 0) {
+var G__11113__i = 0, G__11113__a = new Array(arguments.length - 0);
+while (G__11113__i < G__11113__a.length) {G__11113__a[G__11113__i] = arguments[G__11113__i + 0]; ++G__11113__i;}
+ args = new cljs.core.IndexedSeq(G__11113__a,0,null);
+}
+return G__11112__delegate.call(this,args);};
+G__11112.cljs$lang$maxFixedArity = 0;
+G__11112.cljs$lang$applyTo = (function (arglist__11114){
+var args = cljs.core.seq(arglist__11114);
+return G__11112__delegate(args);
+});
+G__11112.cljs$core$IFn$_invoke$arity$variadic = G__11112__delegate;
+return G__11112;
+})()
+;
+});
+
+/** @this {Function} */
+cljs.core.partial.cljs$lang$applyTo = (function (seq11084){
+var G__11085 = cljs.core.first(seq11084);
+var seq11084__$1 = cljs.core.next(seq11084);
+var G__11086 = cljs.core.first(seq11084__$1);
+var seq11084__$2 = cljs.core.next(seq11084__$1);
+var G__11087 = cljs.core.first(seq11084__$2);
+var seq11084__$3 = cljs.core.next(seq11084__$2);
+var G__11088 = cljs.core.first(seq11084__$3);
+var seq11084__$4 = cljs.core.next(seq11084__$3);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11085,G__11086,G__11087,G__11088,seq11084__$4);
+});
+
+cljs.core.partial.cljs$lang$maxFixedArity = (4);
+
+/**
+ * Takes a function f, and returns a function that calls f, replacing
+ * a nil first argument to f with the supplied value x. Higher arity
+ * versions can replace arguments in the second and third
+ * positions (y, z). Note that the function f can take any number of
+ * arguments, not just the one(s) being nil-patched.
+ */
+cljs.core.fnil = (function cljs$core$fnil(var_args){
+var G__11116 = arguments.length;
+switch (G__11116) {
+case 2:
+return cljs.core.fnil.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.fnil.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.fnil.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.fnil.cljs$core$IFn$_invoke$arity$2 = (function (f,x){
+return (function() {
+var G__11134 = null;
+var G__11134__1 = (function (a){
+var G__11117 = (((a == null))?x:a);
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11117) : f.call(null,G__11117));
+});
+var G__11134__2 = (function (a,b){
+var G__11118 = (((a == null))?x:a);
+var G__11119 = b;
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11118,G__11119) : f.call(null,G__11118,G__11119));
+});
+var G__11134__3 = (function (a,b,c){
+var G__11120 = (((a == null))?x:a);
+var G__11121 = b;
+var G__11122 = c;
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11120,G__11121,G__11122) : f.call(null,G__11120,G__11121,G__11122));
+});
+var G__11134__4 = (function() {
+var G__11135__delegate = function (a,b,c,ds){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,(((a == null))?x:a),b,c,ds);
+};
+var G__11135 = function (a,b,c,var_args){
+var ds = null;
+if (arguments.length > 3) {
+var G__11136__i = 0, G__11136__a = new Array(arguments.length - 3);
+while (G__11136__i < G__11136__a.length) {G__11136__a[G__11136__i] = arguments[G__11136__i + 3]; ++G__11136__i;}
+ ds = new cljs.core.IndexedSeq(G__11136__a,0,null);
+}
+return G__11135__delegate.call(this,a,b,c,ds);};
+G__11135.cljs$lang$maxFixedArity = 3;
+G__11135.cljs$lang$applyTo = (function (arglist__11137){
+var a = cljs.core.first(arglist__11137);
+arglist__11137 = cljs.core.next(arglist__11137);
+var b = cljs.core.first(arglist__11137);
+arglist__11137 = cljs.core.next(arglist__11137);
+var c = cljs.core.first(arglist__11137);
+var ds = cljs.core.rest(arglist__11137);
+return G__11135__delegate(a,b,c,ds);
+});
+G__11135.cljs$core$IFn$_invoke$arity$variadic = G__11135__delegate;
+return G__11135;
+})()
+;
+G__11134 = function(a,b,c,var_args){
+var ds = var_args;
+switch(arguments.length){
+case 1:
+return G__11134__1.call(this,a);
+case 2:
+return G__11134__2.call(this,a,b);
+case 3:
+return G__11134__3.call(this,a,b,c);
+default:
+var G__11138 = null;
+if (arguments.length > 3) {
+var G__11139__i = 0, G__11139__a = new Array(arguments.length - 3);
+while (G__11139__i < G__11139__a.length) {G__11139__a[G__11139__i] = arguments[G__11139__i + 3]; ++G__11139__i;}
+G__11138 = new cljs.core.IndexedSeq(G__11139__a,0,null);
+}
+return G__11134__4.cljs$core$IFn$_invoke$arity$variadic(a,b,c, G__11138);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11134.cljs$lang$maxFixedArity = 3;
+G__11134.cljs$lang$applyTo = G__11134__4.cljs$lang$applyTo;
+G__11134.cljs$core$IFn$_invoke$arity$1 = G__11134__1;
+G__11134.cljs$core$IFn$_invoke$arity$2 = G__11134__2;
+G__11134.cljs$core$IFn$_invoke$arity$3 = G__11134__3;
+G__11134.cljs$core$IFn$_invoke$arity$variadic = G__11134__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__11134;
+})()
+});
+
+cljs.core.fnil.cljs$core$IFn$_invoke$arity$3 = (function (f,x,y){
+return (function() {
+var G__11140 = null;
+var G__11140__2 = (function (a,b){
+var G__11123 = (((a == null))?x:a);
+var G__11124 = (((b == null))?y:b);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11123,G__11124) : f.call(null,G__11123,G__11124));
+});
+var G__11140__3 = (function (a,b,c){
+var G__11125 = (((a == null))?x:a);
+var G__11126 = (((b == null))?y:b);
+var G__11127 = c;
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11125,G__11126,G__11127) : f.call(null,G__11125,G__11126,G__11127));
+});
+var G__11140__4 = (function() {
+var G__11141__delegate = function (a,b,c,ds){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,(((a == null))?x:a),(((b == null))?y:b),c,ds);
+};
+var G__11141 = function (a,b,c,var_args){
+var ds = null;
+if (arguments.length > 3) {
+var G__11142__i = 0, G__11142__a = new Array(arguments.length - 3);
+while (G__11142__i < G__11142__a.length) {G__11142__a[G__11142__i] = arguments[G__11142__i + 3]; ++G__11142__i;}
+ ds = new cljs.core.IndexedSeq(G__11142__a,0,null);
+}
+return G__11141__delegate.call(this,a,b,c,ds);};
+G__11141.cljs$lang$maxFixedArity = 3;
+G__11141.cljs$lang$applyTo = (function (arglist__11143){
+var a = cljs.core.first(arglist__11143);
+arglist__11143 = cljs.core.next(arglist__11143);
+var b = cljs.core.first(arglist__11143);
+arglist__11143 = cljs.core.next(arglist__11143);
+var c = cljs.core.first(arglist__11143);
+var ds = cljs.core.rest(arglist__11143);
+return G__11141__delegate(a,b,c,ds);
+});
+G__11141.cljs$core$IFn$_invoke$arity$variadic = G__11141__delegate;
+return G__11141;
+})()
+;
+G__11140 = function(a,b,c,var_args){
+var ds = var_args;
+switch(arguments.length){
+case 2:
+return G__11140__2.call(this,a,b);
+case 3:
+return G__11140__3.call(this,a,b,c);
+default:
+var G__11144 = null;
+if (arguments.length > 3) {
+var G__11145__i = 0, G__11145__a = new Array(arguments.length - 3);
+while (G__11145__i < G__11145__a.length) {G__11145__a[G__11145__i] = arguments[G__11145__i + 3]; ++G__11145__i;}
+G__11144 = new cljs.core.IndexedSeq(G__11145__a,0,null);
+}
+return G__11140__4.cljs$core$IFn$_invoke$arity$variadic(a,b,c, G__11144);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11140.cljs$lang$maxFixedArity = 3;
+G__11140.cljs$lang$applyTo = G__11140__4.cljs$lang$applyTo;
+G__11140.cljs$core$IFn$_invoke$arity$2 = G__11140__2;
+G__11140.cljs$core$IFn$_invoke$arity$3 = G__11140__3;
+G__11140.cljs$core$IFn$_invoke$arity$variadic = G__11140__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__11140;
+})()
+});
+
+cljs.core.fnil.cljs$core$IFn$_invoke$arity$4 = (function (f,x,y,z){
+return (function() {
+var G__11146 = null;
+var G__11146__2 = (function (a,b){
+var G__11128 = (((a == null))?x:a);
+var G__11129 = (((b == null))?y:b);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11128,G__11129) : f.call(null,G__11128,G__11129));
+});
+var G__11146__3 = (function (a,b,c){
+var G__11130 = (((a == null))?x:a);
+var G__11131 = (((b == null))?y:b);
+var G__11132 = (((c == null))?z:c);
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11130,G__11131,G__11132) : f.call(null,G__11130,G__11131,G__11132));
+});
+var G__11146__4 = (function() {
+var G__11147__delegate = function (a,b,c,ds){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,(((a == null))?x:a),(((b == null))?y:b),(((c == null))?z:c),ds);
+};
+var G__11147 = function (a,b,c,var_args){
+var ds = null;
+if (arguments.length > 3) {
+var G__11148__i = 0, G__11148__a = new Array(arguments.length - 3);
+while (G__11148__i < G__11148__a.length) {G__11148__a[G__11148__i] = arguments[G__11148__i + 3]; ++G__11148__i;}
+ ds = new cljs.core.IndexedSeq(G__11148__a,0,null);
+}
+return G__11147__delegate.call(this,a,b,c,ds);};
+G__11147.cljs$lang$maxFixedArity = 3;
+G__11147.cljs$lang$applyTo = (function (arglist__11149){
+var a = cljs.core.first(arglist__11149);
+arglist__11149 = cljs.core.next(arglist__11149);
+var b = cljs.core.first(arglist__11149);
+arglist__11149 = cljs.core.next(arglist__11149);
+var c = cljs.core.first(arglist__11149);
+var ds = cljs.core.rest(arglist__11149);
+return G__11147__delegate(a,b,c,ds);
+});
+G__11147.cljs$core$IFn$_invoke$arity$variadic = G__11147__delegate;
+return G__11147;
+})()
+;
+G__11146 = function(a,b,c,var_args){
+var ds = var_args;
+switch(arguments.length){
+case 2:
+return G__11146__2.call(this,a,b);
+case 3:
+return G__11146__3.call(this,a,b,c);
+default:
+var G__11150 = null;
+if (arguments.length > 3) {
+var G__11151__i = 0, G__11151__a = new Array(arguments.length - 3);
+while (G__11151__i < G__11151__a.length) {G__11151__a[G__11151__i] = arguments[G__11151__i + 3]; ++G__11151__i;}
+G__11150 = new cljs.core.IndexedSeq(G__11151__a,0,null);
+}
+return G__11146__4.cljs$core$IFn$_invoke$arity$variadic(a,b,c, G__11150);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11146.cljs$lang$maxFixedArity = 3;
+G__11146.cljs$lang$applyTo = G__11146__4.cljs$lang$applyTo;
+G__11146.cljs$core$IFn$_invoke$arity$2 = G__11146__2;
+G__11146.cljs$core$IFn$_invoke$arity$3 = G__11146__3;
+G__11146.cljs$core$IFn$_invoke$arity$variadic = G__11146__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__11146;
+})()
+});
+
+cljs.core.fnil.cljs$lang$maxFixedArity = 4;
+
+/**
+ * Returns a lazy sequence consisting of the result of applying f to 0
+ * and the first item of coll, followed by applying f to 1 and the second
+ * item in coll, etc, until coll is exhausted. Thus function f should
+ * accept 2 arguments, index and item. Returns a stateful transducer when
+ * no collection is provided.
+ */
+cljs.core.map_indexed = (function cljs$core$map_indexed(var_args){
+var G__11153 = arguments.length;
+switch (G__11153) {
+case 1:
+return cljs.core.map_indexed.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.map_indexed.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.map_indexed.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return (function (rf){
+var i = cljs.core.volatile_BANG_((-1));
+return ((function (i){
+return (function() {
+var G__11167 = null;
+var G__11167__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__11167__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__11167__2 = (function (result,input){
+var G__11154 = result;
+var G__11155 = (function (){var G__11156 = i.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,(i.cljs$core$IDeref$_deref$arity$1(null) + (1)));
+var G__11157 = input;
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11156,G__11157) : f.call(null,G__11156,G__11157));
+})();
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__11154,G__11155) : rf.call(null,G__11154,G__11155));
+});
+G__11167 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__11167__0.call(this);
+case 1:
+return G__11167__1.call(this,result);
+case 2:
+return G__11167__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11167.cljs$core$IFn$_invoke$arity$0 = G__11167__0;
+G__11167.cljs$core$IFn$_invoke$arity$1 = G__11167__1;
+G__11167.cljs$core$IFn$_invoke$arity$2 = G__11167__2;
+return G__11167;
+})()
+;})(i))
+});
+});
+
+cljs.core.map_indexed.cljs$core$IFn$_invoke$arity$2 = (function (f,coll){
+var mapi = (function cljs$core$mapi(idx,coll__$1){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll__$1);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(s)){
+var c = cljs.core.chunk_first(s);
+var size = cljs.core.count(c);
+var b = cljs.core.chunk_buffer(size);
+var n__8769__auto___11168 = size;
+var i_11169 = (0);
+while(true){
+if((i_11169 < n__8769__auto___11168)){
+cljs.core.chunk_append(b,(function (){var G__11162 = (idx + i_11169);
+var G__11163 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_11169);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11162,G__11163) : f.call(null,G__11162,G__11163));
+})());
+
+var G__11170 = (i_11169 + (1));
+i_11169 = G__11170;
+continue;
+} else {
+}
+break;
+}
+
+return cljs.core.chunk_cons(cljs.core.chunk(b),cljs$core$mapi((idx + size),cljs.core.chunk_rest(s)));
+} else {
+return cljs.core.cons((function (){var G__11164 = idx;
+var G__11165 = cljs.core.first(s);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11164,G__11165) : f.call(null,G__11164,G__11165));
+})(),cljs$core$mapi((idx + (1)),cljs.core.rest(s)));
+}
+} else {
+return null;
+}
+}),null,null));
+});
+return mapi((0),coll);
+});
+
+cljs.core.map_indexed.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a lazy sequence of the non-nil results of (f item). Note,
+ * this means false return values will be included. f must be free of
+ * side-effects. Returns a transducer when no collection is provided.
+ */
+cljs.core.keep = (function cljs$core$keep(var_args){
+var G__11172 = arguments.length;
+switch (G__11172) {
+case 1:
+return cljs.core.keep.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.keep.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.keep.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return (function (rf){
+return (function() {
+var G__11176 = null;
+var G__11176__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__11176__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__11176__2 = (function (result,input){
+var v = (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(input) : f.call(null,input));
+if((v == null)){
+return result;
+} else {
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,v) : rf.call(null,result,v));
+}
+});
+G__11176 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__11176__0.call(this);
+case 1:
+return G__11176__1.call(this,result);
+case 2:
+return G__11176__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11176.cljs$core$IFn$_invoke$arity$0 = G__11176__0;
+G__11176.cljs$core$IFn$_invoke$arity$1 = G__11176__1;
+G__11176.cljs$core$IFn$_invoke$arity$2 = G__11176__2;
+return G__11176;
+})()
+});
+});
+
+cljs.core.keep.cljs$core$IFn$_invoke$arity$2 = (function (f,coll){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(s)){
+var c = cljs.core.chunk_first(s);
+var size = cljs.core.count(c);
+var b = cljs.core.chunk_buffer(size);
+var n__8769__auto___11177 = size;
+var i_11178 = (0);
+while(true){
+if((i_11178 < n__8769__auto___11177)){
+var x_11179 = (function (){var G__11173 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_11178);
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11173) : f.call(null,G__11173));
+})();
+if((x_11179 == null)){
+} else {
+cljs.core.chunk_append(b,x_11179);
+}
+
+var G__11180 = (i_11178 + (1));
+i_11178 = G__11180;
+continue;
+} else {
+}
+break;
+}
+
+return cljs.core.chunk_cons(cljs.core.chunk(b),cljs.core.keep.cljs$core$IFn$_invoke$arity$2(f,cljs.core.chunk_rest(s)));
+} else {
+var x = (function (){var G__11174 = cljs.core.first(s);
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11174) : f.call(null,G__11174));
+})();
+if((x == null)){
+return cljs.core.keep.cljs$core$IFn$_invoke$arity$2(f,cljs.core.rest(s));
+} else {
+return cljs.core.cons(x,cljs.core.keep.cljs$core$IFn$_invoke$arity$2(f,cljs.core.rest(s)));
+}
+}
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.keep.cljs$lang$maxFixedArity = 2;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IWatchable}
+ * @implements {cljs.core.IAtom}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.IDeref}
+*/
+cljs.core.Atom = (function (state,meta,validator,watches){
+this.state = state;
+this.meta = meta;
+this.validator = validator;
+this.watches = watches;
+this.cljs$lang$protocol_mask$partition1$ = 16386;
+this.cljs$lang$protocol_mask$partition0$ = 6455296;
+});
+cljs.core.Atom.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.Atom.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (o,other){
+var self__ = this;
+var o__$1 = this;
+return (o__$1 === other);
+});
+
+cljs.core.Atom.prototype.cljs$core$IDeref$_deref$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.state;
+});
+
+cljs.core.Atom.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.meta;
+});
+
+cljs.core.Atom.prototype.cljs$core$IWatchable$_notify_watches$arity$3 = (function (this$,oldval,newval){
+var self__ = this;
+var this$__$1 = this;
+var seq__11181 = cljs.core.seq(self__.watches);
+var chunk__11182 = null;
+var count__11183 = (0);
+var i__11184 = (0);
+while(true){
+if((i__11184 < count__11183)){
+var vec__11185 = chunk__11182.cljs$core$IIndexed$_nth$arity$2(null,i__11184);
+var key = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11185,(0),null);
+var f = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11185,(1),null);
+(f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(key,this$__$1,oldval,newval) : f.call(null,key,this$__$1,oldval,newval));
+
+
+var G__11191 = seq__11181;
+var G__11192 = chunk__11182;
+var G__11193 = count__11183;
+var G__11194 = (i__11184 + (1));
+seq__11181 = G__11191;
+chunk__11182 = G__11192;
+count__11183 = G__11193;
+i__11184 = G__11194;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__11181);
+if(temp__4657__auto__){
+var seq__11181__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__11181__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__11181__$1);
+var G__11195 = cljs.core.chunk_rest(seq__11181__$1);
+var G__11196 = c__8664__auto__;
+var G__11197 = cljs.core.count(c__8664__auto__);
+var G__11198 = (0);
+seq__11181 = G__11195;
+chunk__11182 = G__11196;
+count__11183 = G__11197;
+i__11184 = G__11198;
+continue;
+} else {
+var vec__11188 = cljs.core.first(seq__11181__$1);
+var key = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11188,(0),null);
+var f = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11188,(1),null);
+(f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(key,this$__$1,oldval,newval) : f.call(null,key,this$__$1,oldval,newval));
+
+
+var G__11199 = cljs.core.next(seq__11181__$1);
+var G__11200 = null;
+var G__11201 = (0);
+var G__11202 = (0);
+seq__11181 = G__11199;
+chunk__11182 = G__11200;
+count__11183 = G__11201;
+i__11184 = G__11202;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+});
+
+cljs.core.Atom.prototype.cljs$core$IWatchable$_add_watch$arity$3 = (function (this$,key,f){
+var self__ = this;
+var this$__$1 = this;
+this$__$1.watches = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.watches,key,f);
+
+return this$__$1;
+});
+
+cljs.core.Atom.prototype.cljs$core$IWatchable$_remove_watch$arity$2 = (function (this$,key){
+var self__ = this;
+var this$__$1 = this;
+return this$__$1.watches = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.watches,key);
+});
+
+cljs.core.Atom.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return goog.getUid(this$__$1);
+});
+
+cljs.core.Atom.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"state","state",-348086572,null),new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"validator","validator",-325659154,null),new cljs.core.Symbol(null,"watches","watches",1367433992,null)], null);
+});
+
+cljs.core.Atom.cljs$lang$type = true;
+
+cljs.core.Atom.cljs$lang$ctorStr = "cljs.core/Atom";
+
+cljs.core.Atom.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Atom");
+});
+
+/**
+ * Positional factory function for cljs.core/Atom.
+ */
+cljs.core.__GT_Atom = (function cljs$core$__GT_Atom(state,meta,validator,watches){
+return (new cljs.core.Atom(state,meta,validator,watches));
+});
+
+/**
+ * Creates and returns an Atom with an initial value of x and zero or
+ * more options (in any order):
+ *
+ * :meta metadata-map
+ *
+ * :validator validate-fn
+ *
+ * If metadata-map is supplied, it will be come the metadata on the
+ * atom. validate-fn must be nil or a side-effect-free fn of one
+ * argument, which will be passed the intended new state on any state
+ * change. If the new state is unacceptable, the validate-fn should
+ * return false or throw an Error. If either of these error conditions
+ * occur, then the value of the atom will not change.
+ */
+cljs.core.atom = (function cljs$core$atom(var_args){
+var G__11206 = arguments.length;
+switch (G__11206) {
+case 1:
+return cljs.core.atom.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11211 = arguments.length;
+var i__9001__auto___11212 = (0);
+while(true){
+if((i__9001__auto___11212 < len__9000__auto___11211)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11212]));
+
+var G__11213 = (i__9001__auto___11212 + (1));
+i__9001__auto___11212 = G__11213;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((1)),(0),null));
+return cljs.core.atom.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.atom.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return (new cljs.core.Atom(x,null,null,null));
+});
+
+cljs.core.atom.cljs$core$IFn$_invoke$arity$variadic = (function (x,p__11207){
+var map__11208 = p__11207;
+var map__11208__$1 = (((((!((map__11208 == null))))?(((((map__11208.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__11208.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__11208):map__11208);
+var meta = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__11208__$1,new cljs.core.Keyword(null,"meta","meta",1499536964));
+var validator = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__11208__$1,new cljs.core.Keyword(null,"validator","validator",-1966190681));
+return (new cljs.core.Atom(x,meta,validator,null));
+});
+
+/** @this {Function} */
+cljs.core.atom.cljs$lang$applyTo = (function (seq11204){
+var G__11205 = cljs.core.first(seq11204);
+var seq11204__$1 = cljs.core.next(seq11204);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11205,seq11204__$1);
+});
+
+cljs.core.atom.cljs$lang$maxFixedArity = (1);
+
+/**
+ * Sets the value of atom to newval without regard for the
+ * current value. Returns new-value.
+ */
+cljs.core.reset_BANG_ = (function cljs$core$reset_BANG_(a,new_value){
+if((a instanceof cljs.core.Atom)){
+var validate = a.validator;
+if((validate == null)){
+} else {
+if(cljs.core.truth_((validate.cljs$core$IFn$_invoke$arity$1 ? validate.cljs$core$IFn$_invoke$arity$1(new_value) : validate.call(null,new_value)))){
+} else {
+throw (new Error("Validator rejected reference state"));
+}
+}
+
+var old_value = a.state;
+a.state = new_value;
+
+if((a.watches == null)){
+} else {
+cljs.core._notify_watches(a,old_value,new_value);
+}
+
+return new_value;
+} else {
+return cljs.core._reset_BANG_(a,new_value);
+}
+});
+/**
+ * Sets the value of atom to newval. Returns [old new], the value of the
+ * atom before and after the reset.
+ */
+cljs.core.reset_vals_BANG_ = (function cljs$core$reset_vals_BANG_(a,new_value){
+var validate = a.validator;
+if((validate == null)){
+} else {
+if(cljs.core.truth_((validate.cljs$core$IFn$_invoke$arity$1 ? validate.cljs$core$IFn$_invoke$arity$1(new_value) : validate.call(null,new_value)))){
+} else {
+throw (new Error("Validator rejected reference state"));
+}
+}
+
+var old_value = a.state;
+a.state = new_value;
+
+if((a.watches == null)){
+} else {
+cljs.core._notify_watches(a,old_value,new_value);
+}
+
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [old_value,new_value], null);
+});
+/**
+ * Atomically swaps the value of atom to be:
+ * (apply f current-value-of-atom args). Note that f may be called
+ * multiple times, and thus should be free of side effects. Returns
+ * the value that was swapped in.
+ */
+cljs.core.swap_BANG_ = (function cljs$core$swap_BANG_(var_args){
+var G__11220 = arguments.length;
+switch (G__11220) {
+case 2:
+return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11228 = arguments.length;
+var i__9001__auto___11229 = (0);
+while(true){
+if((i__9001__auto___11229 < len__9000__auto___11228)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11229]));
+
+var G__11230 = (i__9001__auto___11229 + (1));
+i__9001__auto___11229 = G__11230;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((4)),(0),null));
+return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2 = (function (a,f){
+if((a instanceof cljs.core.Atom)){
+return cljs.core.reset_BANG_(a,(function (){var G__11221 = a.state;
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11221) : f.call(null,G__11221));
+})());
+} else {
+return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$2(a,f);
+}
+});
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3 = (function (a,f,x){
+if((a instanceof cljs.core.Atom)){
+return cljs.core.reset_BANG_(a,(function (){var G__11222 = a.state;
+var G__11223 = x;
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11222,G__11223) : f.call(null,G__11222,G__11223));
+})());
+} else {
+return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$3(a,f,x);
+}
+});
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4 = (function (a,f,x,y){
+if((a instanceof cljs.core.Atom)){
+return cljs.core.reset_BANG_(a,(function (){var G__11224 = a.state;
+var G__11225 = x;
+var G__11226 = y;
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11224,G__11225,G__11226) : f.call(null,G__11224,G__11225,G__11226));
+})());
+} else {
+return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$4(a,f,x,y);
+}
+});
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (a,f,x,y,more){
+if((a instanceof cljs.core.Atom)){
+return cljs.core.reset_BANG_(a,cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,a.state,x,y,more));
+} else {
+return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$5(a,f,x,y,more);
+}
+});
+
+/** @this {Function} */
+cljs.core.swap_BANG_.cljs$lang$applyTo = (function (seq11215){
+var G__11216 = cljs.core.first(seq11215);
+var seq11215__$1 = cljs.core.next(seq11215);
+var G__11217 = cljs.core.first(seq11215__$1);
+var seq11215__$2 = cljs.core.next(seq11215__$1);
+var G__11218 = cljs.core.first(seq11215__$2);
+var seq11215__$3 = cljs.core.next(seq11215__$2);
+var G__11219 = cljs.core.first(seq11215__$3);
+var seq11215__$4 = cljs.core.next(seq11215__$3);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11216,G__11217,G__11218,G__11219,seq11215__$4);
+});
+
+cljs.core.swap_BANG_.cljs$lang$maxFixedArity = (4);
+
+/**
+ * Atomically swaps the value of atom to be:
+ * (apply f current-value-of-atom args). Note that f may be called
+ * multiple times, and thus should be free of side effects.
+ * Returns [old new], the value of the atom before and after the swap.
+ */
+cljs.core.swap_vals_BANG_ = (function cljs$core$swap_vals_BANG_(var_args){
+var G__11237 = arguments.length;
+switch (G__11237) {
+case 2:
+return cljs.core.swap_vals_BANG_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.swap_vals_BANG_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.swap_vals_BANG_.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11245 = arguments.length;
+var i__9001__auto___11246 = (0);
+while(true){
+if((i__9001__auto___11246 < len__9000__auto___11245)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11246]));
+
+var G__11247 = (i__9001__auto___11246 + (1));
+i__9001__auto___11246 = G__11247;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((4)),(0),null));
+return cljs.core.swap_vals_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.swap_vals_BANG_.cljs$core$IFn$_invoke$arity$2 = (function (a,f){
+return cljs.core.reset_vals_BANG_(a,(function (){var G__11238 = a.state;
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11238) : f.call(null,G__11238));
+})());
+});
+
+cljs.core.swap_vals_BANG_.cljs$core$IFn$_invoke$arity$3 = (function (a,f,x){
+return cljs.core.reset_vals_BANG_(a,(function (){var G__11239 = a.state;
+var G__11240 = x;
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11239,G__11240) : f.call(null,G__11239,G__11240));
+})());
+});
+
+cljs.core.swap_vals_BANG_.cljs$core$IFn$_invoke$arity$4 = (function (a,f,x,y){
+return cljs.core.reset_vals_BANG_(a,(function (){var G__11241 = a.state;
+var G__11242 = x;
+var G__11243 = y;
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11241,G__11242,G__11243) : f.call(null,G__11241,G__11242,G__11243));
+})());
+});
+
+cljs.core.swap_vals_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (a,f,x,y,more){
+return cljs.core.reset_vals_BANG_(a,cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,a.state,x,y,more));
+});
+
+/** @this {Function} */
+cljs.core.swap_vals_BANG_.cljs$lang$applyTo = (function (seq11232){
+var G__11233 = cljs.core.first(seq11232);
+var seq11232__$1 = cljs.core.next(seq11232);
+var G__11234 = cljs.core.first(seq11232__$1);
+var seq11232__$2 = cljs.core.next(seq11232__$1);
+var G__11235 = cljs.core.first(seq11232__$2);
+var seq11232__$3 = cljs.core.next(seq11232__$2);
+var G__11236 = cljs.core.first(seq11232__$3);
+var seq11232__$4 = cljs.core.next(seq11232__$3);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11233,G__11234,G__11235,G__11236,seq11232__$4);
+});
+
+cljs.core.swap_vals_BANG_.cljs$lang$maxFixedArity = (4);
+
+/**
+ * Atomically sets the value of atom to newval if and only if the
+ * current value of the atom is equal to oldval. Returns true if
+ * set happened, else false.
+ */
+cljs.core.compare_and_set_BANG_ = (function cljs$core$compare_and_set_BANG_(a,oldval,newval){
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(a.cljs$core$IDeref$_deref$arity$1(null),oldval)){
+cljs.core.reset_BANG_(a,newval);
+
+return true;
+} else {
+return false;
+}
+});
+/**
+ * Sets the validator-fn for an atom. validator-fn must be nil or a
+ * side-effect-free fn of one argument, which will be passed the intended
+ * new state on any state change. If the new state is unacceptable, the
+ * validator-fn should return false or throw an Error. If the current state
+ * is not acceptable to the new validator, an Error will be thrown and the
+ * validator will not be changed.
+ */
+cljs.core.set_validator_BANG_ = (function cljs$core$set_validator_BANG_(iref,val){
+if((((!((val == null)))) && (cljs.core.not((function (){var G__11249 = cljs.core._deref(iref);
+return (val.cljs$core$IFn$_invoke$arity$1 ? val.cljs$core$IFn$_invoke$arity$1(G__11249) : val.call(null,G__11249));
+})())))){
+throw (new Error("Validator rejected reference state"));
+} else {
+}
+
+return iref.validator = val;
+});
+/**
+ * Gets the validator-fn for a var/ref/agent/atom.
+ */
+cljs.core.get_validator = (function cljs$core$get_validator(iref){
+return iref.validator;
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IVolatile}
+ * @implements {cljs.core.IDeref}
+*/
+cljs.core.Volatile = (function (state){
+this.state = state;
+this.cljs$lang$protocol_mask$partition0$ = 32768;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.Volatile.prototype.cljs$core$IVolatile$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Volatile.prototype.cljs$core$IVolatile$_vreset_BANG_$arity$2 = (function (_,new_state){
+var self__ = this;
+var ___$1 = this;
+return self__.state = new_state;
+});
+
+cljs.core.Volatile.prototype.cljs$core$IDeref$_deref$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return self__.state;
+});
+
+cljs.core.Volatile.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"state","state",-348086572,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Volatile.cljs$lang$type = true;
+
+cljs.core.Volatile.cljs$lang$ctorStr = "cljs.core/Volatile";
+
+cljs.core.Volatile.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Volatile");
+});
+
+/**
+ * Positional factory function for cljs.core/Volatile.
+ */
+cljs.core.__GT_Volatile = (function cljs$core$__GT_Volatile(state){
+return (new cljs.core.Volatile(state));
+});
+
+/**
+ * Creates and returns a Volatile with an initial value of val.
+ */
+cljs.core.volatile_BANG_ = (function cljs$core$volatile_BANG_(val){
+return (new cljs.core.Volatile(val));
+});
+/**
+ * Returns true if x is a volatile.
+ */
+cljs.core.volatile_QMARK_ = (function cljs$core$volatile_QMARK_(x){
+return (x instanceof cljs.core.Volatile);
+});
+/**
+ * Sets the value of volatile to newval without regard for the
+ * current value. Returns newval.
+ */
+cljs.core.vreset_BANG_ = (function cljs$core$vreset_BANG_(vol,newval){
+return cljs.core._vreset_BANG_(vol,newval);
+});
+/**
+ * Returns a lazy sequence of the non-nil results of (f index item). Note,
+ * this means false return values will be included. f must be free of
+ * side-effects. Returns a stateful transducer when no collection is
+ * provided.
+ */
+cljs.core.keep_indexed = (function cljs$core$keep_indexed(var_args){
+var G__11251 = arguments.length;
+switch (G__11251) {
+case 1:
+return cljs.core.keep_indexed.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.keep_indexed.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.keep_indexed.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return (function (rf){
+var ia = cljs.core.volatile_BANG_((-1));
+return ((function (ia){
+return (function() {
+var G__11261 = null;
+var G__11261__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__11261__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__11261__2 = (function (result,input){
+var i = ia.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,(ia.cljs$core$IDeref$_deref$arity$1(null) + (1)));
+var v = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(i,input) : f.call(null,i,input));
+if((v == null)){
+return result;
+} else {
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,v) : rf.call(null,result,v));
+}
+});
+G__11261 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__11261__0.call(this);
+case 1:
+return G__11261__1.call(this,result);
+case 2:
+return G__11261__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11261.cljs$core$IFn$_invoke$arity$0 = G__11261__0;
+G__11261.cljs$core$IFn$_invoke$arity$1 = G__11261__1;
+G__11261.cljs$core$IFn$_invoke$arity$2 = G__11261__2;
+return G__11261;
+})()
+;})(ia))
+});
+});
+
+cljs.core.keep_indexed.cljs$core$IFn$_invoke$arity$2 = (function (f,coll){
+var keepi = (function cljs$core$keepi(idx,coll__$1){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll__$1);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(s)){
+var c = cljs.core.chunk_first(s);
+var size = cljs.core.count(c);
+var b = cljs.core.chunk_buffer(size);
+var n__8769__auto___11262 = size;
+var i_11263 = (0);
+while(true){
+if((i_11263 < n__8769__auto___11262)){
+var x_11264 = (function (){var G__11256 = (idx + i_11263);
+var G__11257 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_11263);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11256,G__11257) : f.call(null,G__11256,G__11257));
+})();
+if((x_11264 == null)){
+} else {
+cljs.core.chunk_append(b,x_11264);
+}
+
+var G__11265 = (i_11263 + (1));
+i_11263 = G__11265;
+continue;
+} else {
+}
+break;
+}
+
+return cljs.core.chunk_cons(cljs.core.chunk(b),cljs$core$keepi((idx + size),cljs.core.chunk_rest(s)));
+} else {
+var x = (function (){var G__11258 = idx;
+var G__11259 = cljs.core.first(s);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11258,G__11259) : f.call(null,G__11258,G__11259));
+})();
+if((x == null)){
+return cljs$core$keepi((idx + (1)),cljs.core.rest(s));
+} else {
+return cljs.core.cons(x,cljs$core$keepi((idx + (1)),cljs.core.rest(s)));
+}
+}
+} else {
+return null;
+}
+}),null,null));
+});
+return keepi((0),coll);
+});
+
+cljs.core.keep_indexed.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Takes a set of predicates and returns a function f that returns true if all of its
+ * composing predicates return a logical true value against all of its arguments, else it returns
+ * false. Note that f is short-circuiting in that it will stop execution on the first
+ * argument that triggers a logical false result against the original predicates.
+ */
+cljs.core.every_pred = (function cljs$core$every_pred(var_args){
+var G__11277 = arguments.length;
+switch (G__11277) {
+case 1:
+return cljs.core.every_pred.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.every_pred.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.every_pred.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11279 = arguments.length;
+var i__9001__auto___11280 = (0);
+while(true){
+if((i__9001__auto___11280 < len__9000__auto___11279)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11280]));
+
+var G__11281 = (i__9001__auto___11280 + (1));
+i__9001__auto___11280 = G__11281;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.every_pred.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.every_pred.cljs$core$IFn$_invoke$arity$1 = (function (p){
+return (function() {
+var cljs$core$ep1 = null;
+var cljs$core$ep1__0 = (function (){
+return true;
+});
+var cljs$core$ep1__1 = (function (x){
+return cljs.core.boolean$((p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(x) : p.call(null,x)));
+});
+var cljs$core$ep1__2 = (function (x,y){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(x) : p.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(y) : p.call(null,y));
+} else {
+return and__7791__auto__;
+}
+})());
+});
+var cljs$core$ep1__3 = (function (x,y,z){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(x) : p.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+var and__7791__auto____$1 = (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(y) : p.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$1)){
+return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(z) : p.call(null,z));
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+})());
+});
+var cljs$core$ep1__4 = (function() {
+var G__11282__delegate = function (x,y,z,args){
+return cljs.core.boolean$((function (){var and__7791__auto__ = cljs$core$ep1.cljs$core$IFn$_invoke$arity$3(x,y,z);
+if(cljs.core.truth_(and__7791__auto__)){
+return cljs.core.every_QMARK_(p,args);
+} else {
+return and__7791__auto__;
+}
+})());
+};
+var G__11282 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11283__i = 0, G__11283__a = new Array(arguments.length - 3);
+while (G__11283__i < G__11283__a.length) {G__11283__a[G__11283__i] = arguments[G__11283__i + 3]; ++G__11283__i;}
+ args = new cljs.core.IndexedSeq(G__11283__a,0,null);
+}
+return G__11282__delegate.call(this,x,y,z,args);};
+G__11282.cljs$lang$maxFixedArity = 3;
+G__11282.cljs$lang$applyTo = (function (arglist__11284){
+var x = cljs.core.first(arglist__11284);
+arglist__11284 = cljs.core.next(arglist__11284);
+var y = cljs.core.first(arglist__11284);
+arglist__11284 = cljs.core.next(arglist__11284);
+var z = cljs.core.first(arglist__11284);
+var args = cljs.core.rest(arglist__11284);
+return G__11282__delegate(x,y,z,args);
+});
+G__11282.cljs$core$IFn$_invoke$arity$variadic = G__11282__delegate;
+return G__11282;
+})()
+;
+cljs$core$ep1 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return cljs$core$ep1__0.call(this);
+case 1:
+return cljs$core$ep1__1.call(this,x);
+case 2:
+return cljs$core$ep1__2.call(this,x,y);
+case 3:
+return cljs$core$ep1__3.call(this,x,y,z);
+default:
+var G__11285 = null;
+if (arguments.length > 3) {
+var G__11286__i = 0, G__11286__a = new Array(arguments.length - 3);
+while (G__11286__i < G__11286__a.length) {G__11286__a[G__11286__i] = arguments[G__11286__i + 3]; ++G__11286__i;}
+G__11285 = new cljs.core.IndexedSeq(G__11286__a,0,null);
+}
+return cljs$core$ep1__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11285);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+cljs$core$ep1.cljs$lang$maxFixedArity = 3;
+cljs$core$ep1.cljs$lang$applyTo = cljs$core$ep1__4.cljs$lang$applyTo;
+cljs$core$ep1.cljs$core$IFn$_invoke$arity$0 = cljs$core$ep1__0;
+cljs$core$ep1.cljs$core$IFn$_invoke$arity$1 = cljs$core$ep1__1;
+cljs$core$ep1.cljs$core$IFn$_invoke$arity$2 = cljs$core$ep1__2;
+cljs$core$ep1.cljs$core$IFn$_invoke$arity$3 = cljs$core$ep1__3;
+cljs$core$ep1.cljs$core$IFn$_invoke$arity$variadic = cljs$core$ep1__4.cljs$core$IFn$_invoke$arity$variadic;
+return cljs$core$ep1;
+})()
+});
+
+cljs.core.every_pred.cljs$core$IFn$_invoke$arity$2 = (function (p1,p2){
+return (function() {
+var cljs$core$ep2 = null;
+var cljs$core$ep2__0 = (function (){
+return true;
+});
+var cljs$core$ep2__1 = (function (x){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+} else {
+return and__7791__auto__;
+}
+})());
+});
+var cljs$core$ep2__2 = (function (x,y){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+var and__7791__auto____$1 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(y) : p1.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$1)){
+var and__7791__auto____$2 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(and__7791__auto____$2)){
+return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(y) : p2.call(null,y));
+} else {
+return and__7791__auto____$2;
+}
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+})());
+});
+var cljs$core$ep2__3 = (function (x,y,z){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+var and__7791__auto____$1 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(y) : p1.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$1)){
+var and__7791__auto____$2 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(z) : p1.call(null,z));
+if(cljs.core.truth_(and__7791__auto____$2)){
+var and__7791__auto____$3 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(and__7791__auto____$3)){
+var and__7791__auto____$4 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(y) : p2.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$4)){
+return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(z) : p2.call(null,z));
+} else {
+return and__7791__auto____$4;
+}
+} else {
+return and__7791__auto____$3;
+}
+} else {
+return and__7791__auto____$2;
+}
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+})());
+});
+var cljs$core$ep2__4 = (function() {
+var G__11287__delegate = function (x,y,z,args){
+return cljs.core.boolean$((function (){var and__7791__auto__ = cljs$core$ep2.cljs$core$IFn$_invoke$arity$3(x,y,z);
+if(cljs.core.truth_(and__7791__auto__)){
+return cljs.core.every_QMARK_(((function (and__7791__auto__){
+return (function (p1__11266_SHARP_){
+var and__7791__auto____$1 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(p1__11266_SHARP_) : p1.call(null,p1__11266_SHARP_));
+if(cljs.core.truth_(and__7791__auto____$1)){
+return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(p1__11266_SHARP_) : p2.call(null,p1__11266_SHARP_));
+} else {
+return and__7791__auto____$1;
+}
+});})(and__7791__auto__))
+,args);
+} else {
+return and__7791__auto__;
+}
+})());
+};
+var G__11287 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11288__i = 0, G__11288__a = new Array(arguments.length - 3);
+while (G__11288__i < G__11288__a.length) {G__11288__a[G__11288__i] = arguments[G__11288__i + 3]; ++G__11288__i;}
+ args = new cljs.core.IndexedSeq(G__11288__a,0,null);
+}
+return G__11287__delegate.call(this,x,y,z,args);};
+G__11287.cljs$lang$maxFixedArity = 3;
+G__11287.cljs$lang$applyTo = (function (arglist__11289){
+var x = cljs.core.first(arglist__11289);
+arglist__11289 = cljs.core.next(arglist__11289);
+var y = cljs.core.first(arglist__11289);
+arglist__11289 = cljs.core.next(arglist__11289);
+var z = cljs.core.first(arglist__11289);
+var args = cljs.core.rest(arglist__11289);
+return G__11287__delegate(x,y,z,args);
+});
+G__11287.cljs$core$IFn$_invoke$arity$variadic = G__11287__delegate;
+return G__11287;
+})()
+;
+cljs$core$ep2 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return cljs$core$ep2__0.call(this);
+case 1:
+return cljs$core$ep2__1.call(this,x);
+case 2:
+return cljs$core$ep2__2.call(this,x,y);
+case 3:
+return cljs$core$ep2__3.call(this,x,y,z);
+default:
+var G__11290 = null;
+if (arguments.length > 3) {
+var G__11291__i = 0, G__11291__a = new Array(arguments.length - 3);
+while (G__11291__i < G__11291__a.length) {G__11291__a[G__11291__i] = arguments[G__11291__i + 3]; ++G__11291__i;}
+G__11290 = new cljs.core.IndexedSeq(G__11291__a,0,null);
+}
+return cljs$core$ep2__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11290);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+cljs$core$ep2.cljs$lang$maxFixedArity = 3;
+cljs$core$ep2.cljs$lang$applyTo = cljs$core$ep2__4.cljs$lang$applyTo;
+cljs$core$ep2.cljs$core$IFn$_invoke$arity$0 = cljs$core$ep2__0;
+cljs$core$ep2.cljs$core$IFn$_invoke$arity$1 = cljs$core$ep2__1;
+cljs$core$ep2.cljs$core$IFn$_invoke$arity$2 = cljs$core$ep2__2;
+cljs$core$ep2.cljs$core$IFn$_invoke$arity$3 = cljs$core$ep2__3;
+cljs$core$ep2.cljs$core$IFn$_invoke$arity$variadic = cljs$core$ep2__4.cljs$core$IFn$_invoke$arity$variadic;
+return cljs$core$ep2;
+})()
+});
+
+cljs.core.every_pred.cljs$core$IFn$_invoke$arity$3 = (function (p1,p2,p3){
+return (function() {
+var cljs$core$ep3 = null;
+var cljs$core$ep3__0 = (function (){
+return true;
+});
+var cljs$core$ep3__1 = (function (x){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+var and__7791__auto____$1 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(and__7791__auto____$1)){
+return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(x) : p3.call(null,x));
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+})());
+});
+var cljs$core$ep3__2 = (function (x,y){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+var and__7791__auto____$1 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(and__7791__auto____$1)){
+var and__7791__auto____$2 = (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(x) : p3.call(null,x));
+if(cljs.core.truth_(and__7791__auto____$2)){
+var and__7791__auto____$3 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(y) : p1.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$3)){
+var and__7791__auto____$4 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(y) : p2.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$4)){
+return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(y) : p3.call(null,y));
+} else {
+return and__7791__auto____$4;
+}
+} else {
+return and__7791__auto____$3;
+}
+} else {
+return and__7791__auto____$2;
+}
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+})());
+});
+var cljs$core$ep3__3 = (function (x,y,z){
+return cljs.core.boolean$((function (){var and__7791__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+var and__7791__auto____$1 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(and__7791__auto____$1)){
+var and__7791__auto____$2 = (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(x) : p3.call(null,x));
+if(cljs.core.truth_(and__7791__auto____$2)){
+var and__7791__auto____$3 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(y) : p1.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$3)){
+var and__7791__auto____$4 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(y) : p2.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$4)){
+var and__7791__auto____$5 = (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(y) : p3.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$5)){
+var and__7791__auto____$6 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(z) : p1.call(null,z));
+if(cljs.core.truth_(and__7791__auto____$6)){
+var and__7791__auto____$7 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(z) : p2.call(null,z));
+if(cljs.core.truth_(and__7791__auto____$7)){
+return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(z) : p3.call(null,z));
+} else {
+return and__7791__auto____$7;
+}
+} else {
+return and__7791__auto____$6;
+}
+} else {
+return and__7791__auto____$5;
+}
+} else {
+return and__7791__auto____$4;
+}
+} else {
+return and__7791__auto____$3;
+}
+} else {
+return and__7791__auto____$2;
+}
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+})());
+});
+var cljs$core$ep3__4 = (function() {
+var G__11292__delegate = function (x,y,z,args){
+return cljs.core.boolean$((function (){var and__7791__auto__ = cljs$core$ep3.cljs$core$IFn$_invoke$arity$3(x,y,z);
+if(cljs.core.truth_(and__7791__auto__)){
+return cljs.core.every_QMARK_(((function (and__7791__auto__){
+return (function (p1__11267_SHARP_){
+var and__7791__auto____$1 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(p1__11267_SHARP_) : p1.call(null,p1__11267_SHARP_));
+if(cljs.core.truth_(and__7791__auto____$1)){
+var and__7791__auto____$2 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(p1__11267_SHARP_) : p2.call(null,p1__11267_SHARP_));
+if(cljs.core.truth_(and__7791__auto____$2)){
+return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(p1__11267_SHARP_) : p3.call(null,p1__11267_SHARP_));
+} else {
+return and__7791__auto____$2;
+}
+} else {
+return and__7791__auto____$1;
+}
+});})(and__7791__auto__))
+,args);
+} else {
+return and__7791__auto__;
+}
+})());
+};
+var G__11292 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11293__i = 0, G__11293__a = new Array(arguments.length - 3);
+while (G__11293__i < G__11293__a.length) {G__11293__a[G__11293__i] = arguments[G__11293__i + 3]; ++G__11293__i;}
+ args = new cljs.core.IndexedSeq(G__11293__a,0,null);
+}
+return G__11292__delegate.call(this,x,y,z,args);};
+G__11292.cljs$lang$maxFixedArity = 3;
+G__11292.cljs$lang$applyTo = (function (arglist__11294){
+var x = cljs.core.first(arglist__11294);
+arglist__11294 = cljs.core.next(arglist__11294);
+var y = cljs.core.first(arglist__11294);
+arglist__11294 = cljs.core.next(arglist__11294);
+var z = cljs.core.first(arglist__11294);
+var args = cljs.core.rest(arglist__11294);
+return G__11292__delegate(x,y,z,args);
+});
+G__11292.cljs$core$IFn$_invoke$arity$variadic = G__11292__delegate;
+return G__11292;
+})()
+;
+cljs$core$ep3 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return cljs$core$ep3__0.call(this);
+case 1:
+return cljs$core$ep3__1.call(this,x);
+case 2:
+return cljs$core$ep3__2.call(this,x,y);
+case 3:
+return cljs$core$ep3__3.call(this,x,y,z);
+default:
+var G__11295 = null;
+if (arguments.length > 3) {
+var G__11296__i = 0, G__11296__a = new Array(arguments.length - 3);
+while (G__11296__i < G__11296__a.length) {G__11296__a[G__11296__i] = arguments[G__11296__i + 3]; ++G__11296__i;}
+G__11295 = new cljs.core.IndexedSeq(G__11296__a,0,null);
+}
+return cljs$core$ep3__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11295);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+cljs$core$ep3.cljs$lang$maxFixedArity = 3;
+cljs$core$ep3.cljs$lang$applyTo = cljs$core$ep3__4.cljs$lang$applyTo;
+cljs$core$ep3.cljs$core$IFn$_invoke$arity$0 = cljs$core$ep3__0;
+cljs$core$ep3.cljs$core$IFn$_invoke$arity$1 = cljs$core$ep3__1;
+cljs$core$ep3.cljs$core$IFn$_invoke$arity$2 = cljs$core$ep3__2;
+cljs$core$ep3.cljs$core$IFn$_invoke$arity$3 = cljs$core$ep3__3;
+cljs$core$ep3.cljs$core$IFn$_invoke$arity$variadic = cljs$core$ep3__4.cljs$core$IFn$_invoke$arity$variadic;
+return cljs$core$ep3;
+})()
+});
+
+cljs.core.every_pred.cljs$core$IFn$_invoke$arity$variadic = (function (p1,p2,p3,ps){
+var ps__$1 = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(p1,p2,p3,ps);
+return ((function (ps__$1){
+return (function() {
+var cljs$core$epn = null;
+var cljs$core$epn__0 = (function (){
+return true;
+});
+var cljs$core$epn__1 = (function (x){
+return cljs.core.every_QMARK_(((function (ps__$1){
+return (function (p1__11268_SHARP_){
+return (p1__11268_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11268_SHARP_.cljs$core$IFn$_invoke$arity$1(x) : p1__11268_SHARP_.call(null,x));
+});})(ps__$1))
+,ps__$1);
+});
+var cljs$core$epn__2 = (function (x,y){
+return cljs.core.every_QMARK_(((function (ps__$1){
+return (function (p1__11269_SHARP_){
+var and__7791__auto__ = (p1__11269_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11269_SHARP_.cljs$core$IFn$_invoke$arity$1(x) : p1__11269_SHARP_.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+return (p1__11269_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11269_SHARP_.cljs$core$IFn$_invoke$arity$1(y) : p1__11269_SHARP_.call(null,y));
+} else {
+return and__7791__auto__;
+}
+});})(ps__$1))
+,ps__$1);
+});
+var cljs$core$epn__3 = (function (x,y,z){
+return cljs.core.every_QMARK_(((function (ps__$1){
+return (function (p1__11270_SHARP_){
+var and__7791__auto__ = (p1__11270_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11270_SHARP_.cljs$core$IFn$_invoke$arity$1(x) : p1__11270_SHARP_.call(null,x));
+if(cljs.core.truth_(and__7791__auto__)){
+var and__7791__auto____$1 = (p1__11270_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11270_SHARP_.cljs$core$IFn$_invoke$arity$1(y) : p1__11270_SHARP_.call(null,y));
+if(cljs.core.truth_(and__7791__auto____$1)){
+return (p1__11270_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11270_SHARP_.cljs$core$IFn$_invoke$arity$1(z) : p1__11270_SHARP_.call(null,z));
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+});})(ps__$1))
+,ps__$1);
+});
+var cljs$core$epn__4 = (function() {
+var G__11297__delegate = function (x,y,z,args){
+return cljs.core.boolean$((function (){var and__7791__auto__ = cljs$core$epn.cljs$core$IFn$_invoke$arity$3(x,y,z);
+if(cljs.core.truth_(and__7791__auto__)){
+return cljs.core.every_QMARK_(((function (and__7791__auto__,ps__$1){
+return (function (p1__11271_SHARP_){
+return cljs.core.every_QMARK_(p1__11271_SHARP_,args);
+});})(and__7791__auto__,ps__$1))
+,ps__$1);
+} else {
+return and__7791__auto__;
+}
+})());
+};
+var G__11297 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11298__i = 0, G__11298__a = new Array(arguments.length - 3);
+while (G__11298__i < G__11298__a.length) {G__11298__a[G__11298__i] = arguments[G__11298__i + 3]; ++G__11298__i;}
+ args = new cljs.core.IndexedSeq(G__11298__a,0,null);
+}
+return G__11297__delegate.call(this,x,y,z,args);};
+G__11297.cljs$lang$maxFixedArity = 3;
+G__11297.cljs$lang$applyTo = (function (arglist__11299){
+var x = cljs.core.first(arglist__11299);
+arglist__11299 = cljs.core.next(arglist__11299);
+var y = cljs.core.first(arglist__11299);
+arglist__11299 = cljs.core.next(arglist__11299);
+var z = cljs.core.first(arglist__11299);
+var args = cljs.core.rest(arglist__11299);
+return G__11297__delegate(x,y,z,args);
+});
+G__11297.cljs$core$IFn$_invoke$arity$variadic = G__11297__delegate;
+return G__11297;
+})()
+;
+cljs$core$epn = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return cljs$core$epn__0.call(this);
+case 1:
+return cljs$core$epn__1.call(this,x);
+case 2:
+return cljs$core$epn__2.call(this,x,y);
+case 3:
+return cljs$core$epn__3.call(this,x,y,z);
+default:
+var G__11300 = null;
+if (arguments.length > 3) {
+var G__11301__i = 0, G__11301__a = new Array(arguments.length - 3);
+while (G__11301__i < G__11301__a.length) {G__11301__a[G__11301__i] = arguments[G__11301__i + 3]; ++G__11301__i;}
+G__11300 = new cljs.core.IndexedSeq(G__11301__a,0,null);
+}
+return cljs$core$epn__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11300);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+cljs$core$epn.cljs$lang$maxFixedArity = 3;
+cljs$core$epn.cljs$lang$applyTo = cljs$core$epn__4.cljs$lang$applyTo;
+cljs$core$epn.cljs$core$IFn$_invoke$arity$0 = cljs$core$epn__0;
+cljs$core$epn.cljs$core$IFn$_invoke$arity$1 = cljs$core$epn__1;
+cljs$core$epn.cljs$core$IFn$_invoke$arity$2 = cljs$core$epn__2;
+cljs$core$epn.cljs$core$IFn$_invoke$arity$3 = cljs$core$epn__3;
+cljs$core$epn.cljs$core$IFn$_invoke$arity$variadic = cljs$core$epn__4.cljs$core$IFn$_invoke$arity$variadic;
+return cljs$core$epn;
+})()
+;})(ps__$1))
+});
+
+/** @this {Function} */
+cljs.core.every_pred.cljs$lang$applyTo = (function (seq11273){
+var G__11274 = cljs.core.first(seq11273);
+var seq11273__$1 = cljs.core.next(seq11273);
+var G__11275 = cljs.core.first(seq11273__$1);
+var seq11273__$2 = cljs.core.next(seq11273__$1);
+var G__11276 = cljs.core.first(seq11273__$2);
+var seq11273__$3 = cljs.core.next(seq11273__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11274,G__11275,G__11276,seq11273__$3);
+});
+
+cljs.core.every_pred.cljs$lang$maxFixedArity = (3);
+
+/**
+ * Takes a set of predicates and returns a function f that returns the first logical true value
+ * returned by one of its composing predicates against any of its arguments, else it returns
+ * logical false. Note that f is short-circuiting in that it will stop execution on the first
+ * argument that triggers a logical true result against the original predicates.
+ */
+cljs.core.some_fn = (function cljs$core$some_fn(var_args){
+var G__11313 = arguments.length;
+switch (G__11313) {
+case 1:
+return cljs.core.some_fn.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.some_fn.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.some_fn.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11315 = arguments.length;
+var i__9001__auto___11316 = (0);
+while(true){
+if((i__9001__auto___11316 < len__9000__auto___11315)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11316]));
+
+var G__11317 = (i__9001__auto___11316 + (1));
+i__9001__auto___11316 = G__11317;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.some_fn.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.some_fn.cljs$core$IFn$_invoke$arity$1 = (function (p){
+return (function() {
+var cljs$core$sp1 = null;
+var cljs$core$sp1__0 = (function (){
+return null;
+});
+var cljs$core$sp1__1 = (function (x){
+return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(x) : p.call(null,x));
+});
+var cljs$core$sp1__2 = (function (x,y){
+var or__7806__auto__ = (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(x) : p.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(y) : p.call(null,y));
+}
+});
+var cljs$core$sp1__3 = (function (x,y,z){
+var or__7806__auto__ = (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(x) : p.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(y) : p.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(z) : p.call(null,z));
+}
+}
+});
+var cljs$core$sp1__4 = (function() {
+var G__11318__delegate = function (x,y,z,args){
+var or__7806__auto__ = cljs$core$sp1.cljs$core$IFn$_invoke$arity$3(x,y,z);
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.some(p,args);
+}
+};
+var G__11318 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11319__i = 0, G__11319__a = new Array(arguments.length - 3);
+while (G__11319__i < G__11319__a.length) {G__11319__a[G__11319__i] = arguments[G__11319__i + 3]; ++G__11319__i;}
+ args = new cljs.core.IndexedSeq(G__11319__a,0,null);
+}
+return G__11318__delegate.call(this,x,y,z,args);};
+G__11318.cljs$lang$maxFixedArity = 3;
+G__11318.cljs$lang$applyTo = (function (arglist__11320){
+var x = cljs.core.first(arglist__11320);
+arglist__11320 = cljs.core.next(arglist__11320);
+var y = cljs.core.first(arglist__11320);
+arglist__11320 = cljs.core.next(arglist__11320);
+var z = cljs.core.first(arglist__11320);
+var args = cljs.core.rest(arglist__11320);
+return G__11318__delegate(x,y,z,args);
+});
+G__11318.cljs$core$IFn$_invoke$arity$variadic = G__11318__delegate;
+return G__11318;
+})()
+;
+cljs$core$sp1 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return cljs$core$sp1__0.call(this);
+case 1:
+return cljs$core$sp1__1.call(this,x);
+case 2:
+return cljs$core$sp1__2.call(this,x,y);
+case 3:
+return cljs$core$sp1__3.call(this,x,y,z);
+default:
+var G__11321 = null;
+if (arguments.length > 3) {
+var G__11322__i = 0, G__11322__a = new Array(arguments.length - 3);
+while (G__11322__i < G__11322__a.length) {G__11322__a[G__11322__i] = arguments[G__11322__i + 3]; ++G__11322__i;}
+G__11321 = new cljs.core.IndexedSeq(G__11322__a,0,null);
+}
+return cljs$core$sp1__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11321);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+cljs$core$sp1.cljs$lang$maxFixedArity = 3;
+cljs$core$sp1.cljs$lang$applyTo = cljs$core$sp1__4.cljs$lang$applyTo;
+cljs$core$sp1.cljs$core$IFn$_invoke$arity$0 = cljs$core$sp1__0;
+cljs$core$sp1.cljs$core$IFn$_invoke$arity$1 = cljs$core$sp1__1;
+cljs$core$sp1.cljs$core$IFn$_invoke$arity$2 = cljs$core$sp1__2;
+cljs$core$sp1.cljs$core$IFn$_invoke$arity$3 = cljs$core$sp1__3;
+cljs$core$sp1.cljs$core$IFn$_invoke$arity$variadic = cljs$core$sp1__4.cljs$core$IFn$_invoke$arity$variadic;
+return cljs$core$sp1;
+})()
+});
+
+cljs.core.some_fn.cljs$core$IFn$_invoke$arity$2 = (function (p1,p2){
+return (function() {
+var cljs$core$sp2 = null;
+var cljs$core$sp2__0 = (function (){
+return null;
+});
+var cljs$core$sp2__1 = (function (x){
+var or__7806__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+}
+});
+var cljs$core$sp2__2 = (function (x,y){
+var or__7806__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(y) : p1.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+var or__7806__auto____$2 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(or__7806__auto____$2)){
+return or__7806__auto____$2;
+} else {
+return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(y) : p2.call(null,y));
+}
+}
+}
+});
+var cljs$core$sp2__3 = (function (x,y,z){
+var or__7806__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(y) : p1.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+var or__7806__auto____$2 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(z) : p1.call(null,z));
+if(cljs.core.truth_(or__7806__auto____$2)){
+return or__7806__auto____$2;
+} else {
+var or__7806__auto____$3 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(or__7806__auto____$3)){
+return or__7806__auto____$3;
+} else {
+var or__7806__auto____$4 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(y) : p2.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$4)){
+return or__7806__auto____$4;
+} else {
+return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(z) : p2.call(null,z));
+}
+}
+}
+}
+}
+});
+var cljs$core$sp2__4 = (function() {
+var G__11323__delegate = function (x,y,z,args){
+var or__7806__auto__ = cljs$core$sp2.cljs$core$IFn$_invoke$arity$3(x,y,z);
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.some(((function (or__7806__auto__){
+return (function (p1__11302_SHARP_){
+var or__7806__auto____$1 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(p1__11302_SHARP_) : p1.call(null,p1__11302_SHARP_));
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(p1__11302_SHARP_) : p2.call(null,p1__11302_SHARP_));
+}
+});})(or__7806__auto__))
+,args);
+}
+};
+var G__11323 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11324__i = 0, G__11324__a = new Array(arguments.length - 3);
+while (G__11324__i < G__11324__a.length) {G__11324__a[G__11324__i] = arguments[G__11324__i + 3]; ++G__11324__i;}
+ args = new cljs.core.IndexedSeq(G__11324__a,0,null);
+}
+return G__11323__delegate.call(this,x,y,z,args);};
+G__11323.cljs$lang$maxFixedArity = 3;
+G__11323.cljs$lang$applyTo = (function (arglist__11325){
+var x = cljs.core.first(arglist__11325);
+arglist__11325 = cljs.core.next(arglist__11325);
+var y = cljs.core.first(arglist__11325);
+arglist__11325 = cljs.core.next(arglist__11325);
+var z = cljs.core.first(arglist__11325);
+var args = cljs.core.rest(arglist__11325);
+return G__11323__delegate(x,y,z,args);
+});
+G__11323.cljs$core$IFn$_invoke$arity$variadic = G__11323__delegate;
+return G__11323;
+})()
+;
+cljs$core$sp2 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return cljs$core$sp2__0.call(this);
+case 1:
+return cljs$core$sp2__1.call(this,x);
+case 2:
+return cljs$core$sp2__2.call(this,x,y);
+case 3:
+return cljs$core$sp2__3.call(this,x,y,z);
+default:
+var G__11326 = null;
+if (arguments.length > 3) {
+var G__11327__i = 0, G__11327__a = new Array(arguments.length - 3);
+while (G__11327__i < G__11327__a.length) {G__11327__a[G__11327__i] = arguments[G__11327__i + 3]; ++G__11327__i;}
+G__11326 = new cljs.core.IndexedSeq(G__11327__a,0,null);
+}
+return cljs$core$sp2__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11326);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+cljs$core$sp2.cljs$lang$maxFixedArity = 3;
+cljs$core$sp2.cljs$lang$applyTo = cljs$core$sp2__4.cljs$lang$applyTo;
+cljs$core$sp2.cljs$core$IFn$_invoke$arity$0 = cljs$core$sp2__0;
+cljs$core$sp2.cljs$core$IFn$_invoke$arity$1 = cljs$core$sp2__1;
+cljs$core$sp2.cljs$core$IFn$_invoke$arity$2 = cljs$core$sp2__2;
+cljs$core$sp2.cljs$core$IFn$_invoke$arity$3 = cljs$core$sp2__3;
+cljs$core$sp2.cljs$core$IFn$_invoke$arity$variadic = cljs$core$sp2__4.cljs$core$IFn$_invoke$arity$variadic;
+return cljs$core$sp2;
+})()
+});
+
+cljs.core.some_fn.cljs$core$IFn$_invoke$arity$3 = (function (p1,p2,p3){
+return (function() {
+var cljs$core$sp3 = null;
+var cljs$core$sp3__0 = (function (){
+return null;
+});
+var cljs$core$sp3__1 = (function (x){
+var or__7806__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(x) : p3.call(null,x));
+}
+}
+});
+var cljs$core$sp3__2 = (function (x,y){
+var or__7806__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+var or__7806__auto____$2 = (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(x) : p3.call(null,x));
+if(cljs.core.truth_(or__7806__auto____$2)){
+return or__7806__auto____$2;
+} else {
+var or__7806__auto____$3 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(y) : p1.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$3)){
+return or__7806__auto____$3;
+} else {
+var or__7806__auto____$4 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(y) : p2.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$4)){
+return or__7806__auto____$4;
+} else {
+return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(y) : p3.call(null,y));
+}
+}
+}
+}
+}
+});
+var cljs$core$sp3__3 = (function (x,y,z){
+var or__7806__auto__ = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(x) : p1.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(x) : p2.call(null,x));
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+var or__7806__auto____$2 = (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(x) : p3.call(null,x));
+if(cljs.core.truth_(or__7806__auto____$2)){
+return or__7806__auto____$2;
+} else {
+var or__7806__auto____$3 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(y) : p1.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$3)){
+return or__7806__auto____$3;
+} else {
+var or__7806__auto____$4 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(y) : p2.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$4)){
+return or__7806__auto____$4;
+} else {
+var or__7806__auto____$5 = (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(y) : p3.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$5)){
+return or__7806__auto____$5;
+} else {
+var or__7806__auto____$6 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(z) : p1.call(null,z));
+if(cljs.core.truth_(or__7806__auto____$6)){
+return or__7806__auto____$6;
+} else {
+var or__7806__auto____$7 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(z) : p2.call(null,z));
+if(cljs.core.truth_(or__7806__auto____$7)){
+return or__7806__auto____$7;
+} else {
+return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(z) : p3.call(null,z));
+}
+}
+}
+}
+}
+}
+}
+}
+});
+var cljs$core$sp3__4 = (function() {
+var G__11328__delegate = function (x,y,z,args){
+var or__7806__auto__ = cljs$core$sp3.cljs$core$IFn$_invoke$arity$3(x,y,z);
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.some(((function (or__7806__auto__){
+return (function (p1__11303_SHARP_){
+var or__7806__auto____$1 = (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(p1__11303_SHARP_) : p1.call(null,p1__11303_SHARP_));
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+var or__7806__auto____$2 = (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(p1__11303_SHARP_) : p2.call(null,p1__11303_SHARP_));
+if(cljs.core.truth_(or__7806__auto____$2)){
+return or__7806__auto____$2;
+} else {
+return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(p1__11303_SHARP_) : p3.call(null,p1__11303_SHARP_));
+}
+}
+});})(or__7806__auto__))
+,args);
+}
+};
+var G__11328 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11329__i = 0, G__11329__a = new Array(arguments.length - 3);
+while (G__11329__i < G__11329__a.length) {G__11329__a[G__11329__i] = arguments[G__11329__i + 3]; ++G__11329__i;}
+ args = new cljs.core.IndexedSeq(G__11329__a,0,null);
+}
+return G__11328__delegate.call(this,x,y,z,args);};
+G__11328.cljs$lang$maxFixedArity = 3;
+G__11328.cljs$lang$applyTo = (function (arglist__11330){
+var x = cljs.core.first(arglist__11330);
+arglist__11330 = cljs.core.next(arglist__11330);
+var y = cljs.core.first(arglist__11330);
+arglist__11330 = cljs.core.next(arglist__11330);
+var z = cljs.core.first(arglist__11330);
+var args = cljs.core.rest(arglist__11330);
+return G__11328__delegate(x,y,z,args);
+});
+G__11328.cljs$core$IFn$_invoke$arity$variadic = G__11328__delegate;
+return G__11328;
+})()
+;
+cljs$core$sp3 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return cljs$core$sp3__0.call(this);
+case 1:
+return cljs$core$sp3__1.call(this,x);
+case 2:
+return cljs$core$sp3__2.call(this,x,y);
+case 3:
+return cljs$core$sp3__3.call(this,x,y,z);
+default:
+var G__11331 = null;
+if (arguments.length > 3) {
+var G__11332__i = 0, G__11332__a = new Array(arguments.length - 3);
+while (G__11332__i < G__11332__a.length) {G__11332__a[G__11332__i] = arguments[G__11332__i + 3]; ++G__11332__i;}
+G__11331 = new cljs.core.IndexedSeq(G__11332__a,0,null);
+}
+return cljs$core$sp3__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11331);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+cljs$core$sp3.cljs$lang$maxFixedArity = 3;
+cljs$core$sp3.cljs$lang$applyTo = cljs$core$sp3__4.cljs$lang$applyTo;
+cljs$core$sp3.cljs$core$IFn$_invoke$arity$0 = cljs$core$sp3__0;
+cljs$core$sp3.cljs$core$IFn$_invoke$arity$1 = cljs$core$sp3__1;
+cljs$core$sp3.cljs$core$IFn$_invoke$arity$2 = cljs$core$sp3__2;
+cljs$core$sp3.cljs$core$IFn$_invoke$arity$3 = cljs$core$sp3__3;
+cljs$core$sp3.cljs$core$IFn$_invoke$arity$variadic = cljs$core$sp3__4.cljs$core$IFn$_invoke$arity$variadic;
+return cljs$core$sp3;
+})()
+});
+
+cljs.core.some_fn.cljs$core$IFn$_invoke$arity$variadic = (function (p1,p2,p3,ps){
+var ps__$1 = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(p1,p2,p3,ps);
+return ((function (ps__$1){
+return (function() {
+var cljs$core$spn = null;
+var cljs$core$spn__0 = (function (){
+return null;
+});
+var cljs$core$spn__1 = (function (x){
+return cljs.core.some(((function (ps__$1){
+return (function (p1__11304_SHARP_){
+return (p1__11304_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11304_SHARP_.cljs$core$IFn$_invoke$arity$1(x) : p1__11304_SHARP_.call(null,x));
+});})(ps__$1))
+,ps__$1);
+});
+var cljs$core$spn__2 = (function (x,y){
+return cljs.core.some(((function (ps__$1){
+return (function (p1__11305_SHARP_){
+var or__7806__auto__ = (p1__11305_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11305_SHARP_.cljs$core$IFn$_invoke$arity$1(x) : p1__11305_SHARP_.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return (p1__11305_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11305_SHARP_.cljs$core$IFn$_invoke$arity$1(y) : p1__11305_SHARP_.call(null,y));
+}
+});})(ps__$1))
+,ps__$1);
+});
+var cljs$core$spn__3 = (function (x,y,z){
+return cljs.core.some(((function (ps__$1){
+return (function (p1__11306_SHARP_){
+var or__7806__auto__ = (p1__11306_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11306_SHARP_.cljs$core$IFn$_invoke$arity$1(x) : p1__11306_SHARP_.call(null,x));
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (p1__11306_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11306_SHARP_.cljs$core$IFn$_invoke$arity$1(y) : p1__11306_SHARP_.call(null,y));
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+return (p1__11306_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11306_SHARP_.cljs$core$IFn$_invoke$arity$1(z) : p1__11306_SHARP_.call(null,z));
+}
+}
+});})(ps__$1))
+,ps__$1);
+});
+var cljs$core$spn__4 = (function() {
+var G__11333__delegate = function (x,y,z,args){
+var or__7806__auto__ = cljs$core$spn.cljs$core$IFn$_invoke$arity$3(x,y,z);
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.some(((function (or__7806__auto__,ps__$1){
+return (function (p1__11307_SHARP_){
+return cljs.core.some(p1__11307_SHARP_,args);
+});})(or__7806__auto__,ps__$1))
+,ps__$1);
+}
+};
+var G__11333 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__11334__i = 0, G__11334__a = new Array(arguments.length - 3);
+while (G__11334__i < G__11334__a.length) {G__11334__a[G__11334__i] = arguments[G__11334__i + 3]; ++G__11334__i;}
+ args = new cljs.core.IndexedSeq(G__11334__a,0,null);
+}
+return G__11333__delegate.call(this,x,y,z,args);};
+G__11333.cljs$lang$maxFixedArity = 3;
+G__11333.cljs$lang$applyTo = (function (arglist__11335){
+var x = cljs.core.first(arglist__11335);
+arglist__11335 = cljs.core.next(arglist__11335);
+var y = cljs.core.first(arglist__11335);
+arglist__11335 = cljs.core.next(arglist__11335);
+var z = cljs.core.first(arglist__11335);
+var args = cljs.core.rest(arglist__11335);
+return G__11333__delegate(x,y,z,args);
+});
+G__11333.cljs$core$IFn$_invoke$arity$variadic = G__11333__delegate;
+return G__11333;
+})()
+;
+cljs$core$spn = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return cljs$core$spn__0.call(this);
+case 1:
+return cljs$core$spn__1.call(this,x);
+case 2:
+return cljs$core$spn__2.call(this,x,y);
+case 3:
+return cljs$core$spn__3.call(this,x,y,z);
+default:
+var G__11336 = null;
+if (arguments.length > 3) {
+var G__11337__i = 0, G__11337__a = new Array(arguments.length - 3);
+while (G__11337__i < G__11337__a.length) {G__11337__a[G__11337__i] = arguments[G__11337__i + 3]; ++G__11337__i;}
+G__11336 = new cljs.core.IndexedSeq(G__11337__a,0,null);
+}
+return cljs$core$spn__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11336);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+cljs$core$spn.cljs$lang$maxFixedArity = 3;
+cljs$core$spn.cljs$lang$applyTo = cljs$core$spn__4.cljs$lang$applyTo;
+cljs$core$spn.cljs$core$IFn$_invoke$arity$0 = cljs$core$spn__0;
+cljs$core$spn.cljs$core$IFn$_invoke$arity$1 = cljs$core$spn__1;
+cljs$core$spn.cljs$core$IFn$_invoke$arity$2 = cljs$core$spn__2;
+cljs$core$spn.cljs$core$IFn$_invoke$arity$3 = cljs$core$spn__3;
+cljs$core$spn.cljs$core$IFn$_invoke$arity$variadic = cljs$core$spn__4.cljs$core$IFn$_invoke$arity$variadic;
+return cljs$core$spn;
+})()
+;})(ps__$1))
+});
+
+/** @this {Function} */
+cljs.core.some_fn.cljs$lang$applyTo = (function (seq11309){
+var G__11310 = cljs.core.first(seq11309);
+var seq11309__$1 = cljs.core.next(seq11309);
+var G__11311 = cljs.core.first(seq11309__$1);
+var seq11309__$2 = cljs.core.next(seq11309__$1);
+var G__11312 = cljs.core.first(seq11309__$2);
+var seq11309__$3 = cljs.core.next(seq11309__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11310,G__11311,G__11312,seq11309__$3);
+});
+
+cljs.core.some_fn.cljs$lang$maxFixedArity = (3);
+
+/**
+ * Returns a lazy sequence consisting of the result of applying f to
+ * the set of first items of each coll, followed by applying f to the
+ * set of second items in each coll, until any one of the colls is
+ * exhausted. Any remaining items in other colls are ignored. Function
+ * f should accept number-of-colls arguments. Returns a transducer when
+ * no collection is provided.
+ */
+cljs.core.map = (function cljs$core$map(var_args){
+var G__11345 = arguments.length;
+switch (G__11345) {
+case 1:
+return cljs.core.map.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.map.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.map.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.map.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11358 = arguments.length;
+var i__9001__auto___11359 = (0);
+while(true){
+if((i__9001__auto___11359 < len__9000__auto___11358)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11359]));
+
+var G__11360 = (i__9001__auto___11359 + (1));
+i__9001__auto___11359 = G__11360;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((4)),(0),null));
+return cljs.core.map.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.map.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return (function (rf){
+return (function() {
+var G__11361 = null;
+var G__11361__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__11361__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__11361__2 = (function (result,input){
+var G__11346 = result;
+var G__11347 = (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(input) : f.call(null,input));
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__11346,G__11347) : rf.call(null,G__11346,G__11347));
+});
+var G__11361__3 = (function() {
+var G__11362__delegate = function (result,input,inputs){
+var G__11348 = result;
+var G__11349 = cljs.core.apply.cljs$core$IFn$_invoke$arity$3(f,input,inputs);
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__11348,G__11349) : rf.call(null,G__11348,G__11349));
+};
+var G__11362 = function (result,input,var_args){
+var inputs = null;
+if (arguments.length > 2) {
+var G__11363__i = 0, G__11363__a = new Array(arguments.length - 2);
+while (G__11363__i < G__11363__a.length) {G__11363__a[G__11363__i] = arguments[G__11363__i + 2]; ++G__11363__i;}
+ inputs = new cljs.core.IndexedSeq(G__11363__a,0,null);
+}
+return G__11362__delegate.call(this,result,input,inputs);};
+G__11362.cljs$lang$maxFixedArity = 2;
+G__11362.cljs$lang$applyTo = (function (arglist__11364){
+var result = cljs.core.first(arglist__11364);
+arglist__11364 = cljs.core.next(arglist__11364);
+var input = cljs.core.first(arglist__11364);
+var inputs = cljs.core.rest(arglist__11364);
+return G__11362__delegate(result,input,inputs);
+});
+G__11362.cljs$core$IFn$_invoke$arity$variadic = G__11362__delegate;
+return G__11362;
+})()
+;
+G__11361 = function(result,input,var_args){
+var inputs = var_args;
+switch(arguments.length){
+case 0:
+return G__11361__0.call(this);
+case 1:
+return G__11361__1.call(this,result);
+case 2:
+return G__11361__2.call(this,result,input);
+default:
+var G__11365 = null;
+if (arguments.length > 2) {
+var G__11366__i = 0, G__11366__a = new Array(arguments.length - 2);
+while (G__11366__i < G__11366__a.length) {G__11366__a[G__11366__i] = arguments[G__11366__i + 2]; ++G__11366__i;}
+G__11365 = new cljs.core.IndexedSeq(G__11366__a,0,null);
+}
+return G__11361__3.cljs$core$IFn$_invoke$arity$variadic(result,input, G__11365);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11361.cljs$lang$maxFixedArity = 2;
+G__11361.cljs$lang$applyTo = G__11361__3.cljs$lang$applyTo;
+G__11361.cljs$core$IFn$_invoke$arity$0 = G__11361__0;
+G__11361.cljs$core$IFn$_invoke$arity$1 = G__11361__1;
+G__11361.cljs$core$IFn$_invoke$arity$2 = G__11361__2;
+G__11361.cljs$core$IFn$_invoke$arity$variadic = G__11361__3.cljs$core$IFn$_invoke$arity$variadic;
+return G__11361;
+})()
+});
+});
+
+cljs.core.map.cljs$core$IFn$_invoke$arity$2 = (function (f,coll){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(s)){
+var c = cljs.core.chunk_first(s);
+var size = cljs.core.count(c);
+var b = cljs.core.chunk_buffer(size);
+var n__8769__auto___11367 = size;
+var i_11368 = (0);
+while(true){
+if((i_11368 < n__8769__auto___11367)){
+cljs.core.chunk_append(b,(function (){var G__11350 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_11368);
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11350) : f.call(null,G__11350));
+})());
+
+var G__11369 = (i_11368 + (1));
+i_11368 = G__11369;
+continue;
+} else {
+}
+break;
+}
+
+return cljs.core.chunk_cons(cljs.core.chunk(b),cljs.core.map.cljs$core$IFn$_invoke$arity$2(f,cljs.core.chunk_rest(s)));
+} else {
+return cljs.core.cons((function (){var G__11351 = cljs.core.first(s);
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11351) : f.call(null,G__11351));
+})(),cljs.core.map.cljs$core$IFn$_invoke$arity$2(f,cljs.core.rest(s)));
+}
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.map.cljs$core$IFn$_invoke$arity$3 = (function (f,c1,c2){
+return (new cljs.core.LazySeq(null,(function (){
+var s1 = cljs.core.seq(c1);
+var s2 = cljs.core.seq(c2);
+if(((s1) && (s2))){
+return cljs.core.cons((function (){var G__11352 = cljs.core.first(s1);
+var G__11353 = cljs.core.first(s2);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11352,G__11353) : f.call(null,G__11352,G__11353));
+})(),cljs.core.map.cljs$core$IFn$_invoke$arity$3(f,cljs.core.rest(s1),cljs.core.rest(s2)));
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.map.cljs$core$IFn$_invoke$arity$4 = (function (f,c1,c2,c3){
+return (new cljs.core.LazySeq(null,(function (){
+var s1 = cljs.core.seq(c1);
+var s2 = cljs.core.seq(c2);
+var s3 = cljs.core.seq(c3);
+if(((s1) && (s2) && (s3))){
+return cljs.core.cons((function (){var G__11354 = cljs.core.first(s1);
+var G__11355 = cljs.core.first(s2);
+var G__11356 = cljs.core.first(s3);
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11354,G__11355,G__11356) : f.call(null,G__11354,G__11355,G__11356));
+})(),cljs.core.map.cljs$core$IFn$_invoke$arity$4(f,cljs.core.rest(s1),cljs.core.rest(s2),cljs.core.rest(s3)));
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.map.cljs$core$IFn$_invoke$arity$variadic = (function (f,c1,c2,c3,colls){
+var step = (function cljs$core$step(cs){
+return (new cljs.core.LazySeq(null,(function (){
+var ss = cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.seq,cs);
+if(cljs.core.every_QMARK_(cljs.core.identity,ss)){
+return cljs.core.cons(cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.first,ss),cljs$core$step(cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.rest,ss)));
+} else {
+return null;
+}
+}),null,null));
+});
+return cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (step){
+return (function (p1__11338_SHARP_){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,p1__11338_SHARP_);
+});})(step))
+,step(cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(colls,c3,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([c2,c1], 0))));
+});
+
+/** @this {Function} */
+cljs.core.map.cljs$lang$applyTo = (function (seq11340){
+var G__11341 = cljs.core.first(seq11340);
+var seq11340__$1 = cljs.core.next(seq11340);
+var G__11342 = cljs.core.first(seq11340__$1);
+var seq11340__$2 = cljs.core.next(seq11340__$1);
+var G__11343 = cljs.core.first(seq11340__$2);
+var seq11340__$3 = cljs.core.next(seq11340__$2);
+var G__11344 = cljs.core.first(seq11340__$3);
+var seq11340__$4 = cljs.core.next(seq11340__$3);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11341,G__11342,G__11343,G__11344,seq11340__$4);
+});
+
+cljs.core.map.cljs$lang$maxFixedArity = (4);
+
+/**
+ * Returns a lazy sequence of the first n items in coll, or all items if
+ * there are fewer than n. Returns a stateful transducer when
+ * no collection is provided.
+ */
+cljs.core.take = (function cljs$core$take(var_args){
+var G__11371 = arguments.length;
+switch (G__11371) {
+case 1:
+return cljs.core.take.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.take.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.take.cljs$core$IFn$_invoke$arity$1 = (function (n){
+if(typeof n === 'number'){
+} else {
+throw (new Error("Assert failed: (number? n)"));
+}
+
+return (function (rf){
+var na = cljs.core.volatile_BANG_(n);
+return ((function (na){
+return (function() {
+var G__11373 = null;
+var G__11373__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__11373__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__11373__2 = (function (result,input){
+var n__$1 = cljs.core.deref(na);
+var nn = na.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,(na.cljs$core$IDeref$_deref$arity$1(null) - (1)));
+var result__$1 = (((n__$1 > (0)))?(rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input)):result);
+if((!((nn > (0))))){
+return cljs.core.ensure_reduced(result__$1);
+} else {
+return result__$1;
+}
+});
+G__11373 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__11373__0.call(this);
+case 1:
+return G__11373__1.call(this,result);
+case 2:
+return G__11373__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11373.cljs$core$IFn$_invoke$arity$0 = G__11373__0;
+G__11373.cljs$core$IFn$_invoke$arity$1 = G__11373__1;
+G__11373.cljs$core$IFn$_invoke$arity$2 = G__11373__2;
+return G__11373;
+})()
+;})(na))
+});
+});
+
+cljs.core.take.cljs$core$IFn$_invoke$arity$2 = (function (n,coll){
+if(typeof n === 'number'){
+} else {
+throw (new Error("Assert failed: (number? n)"));
+}
+
+return (new cljs.core.LazySeq(null,(function (){
+if((n > (0))){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+return cljs.core.cons(cljs.core.first(s),cljs.core.take.cljs$core$IFn$_invoke$arity$2((n - (1)),cljs.core.rest(s)));
+} else {
+return null;
+}
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.take.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a lazy sequence of all but the first n items in coll.
+ * Returns a stateful transducer when no collection is provided.
+ */
+cljs.core.drop = (function cljs$core$drop(var_args){
+var G__11375 = arguments.length;
+switch (G__11375) {
+case 1:
+return cljs.core.drop.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.drop.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.drop.cljs$core$IFn$_invoke$arity$1 = (function (n){
+if(typeof n === 'number'){
+} else {
+throw (new Error("Assert failed: (number? n)"));
+}
+
+return (function (rf){
+var na = cljs.core.volatile_BANG_(n);
+return ((function (na){
+return (function() {
+var G__11377 = null;
+var G__11377__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__11377__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__11377__2 = (function (result,input){
+var n__$1 = cljs.core.deref(na);
+na.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,(na.cljs$core$IDeref$_deref$arity$1(null) - (1)));
+
+if((n__$1 > (0))){
+return result;
+} else {
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input));
+}
+});
+G__11377 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__11377__0.call(this);
+case 1:
+return G__11377__1.call(this,result);
+case 2:
+return G__11377__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11377.cljs$core$IFn$_invoke$arity$0 = G__11377__0;
+G__11377.cljs$core$IFn$_invoke$arity$1 = G__11377__1;
+G__11377.cljs$core$IFn$_invoke$arity$2 = G__11377__2;
+return G__11377;
+})()
+;})(na))
+});
+});
+
+cljs.core.drop.cljs$core$IFn$_invoke$arity$2 = (function (n,coll){
+if(typeof n === 'number'){
+} else {
+throw (new Error("Assert failed: (number? n)"));
+}
+
+var step = (function (n__$1,coll__$1){
+while(true){
+var s = cljs.core.seq(coll__$1);
+if((((n__$1 > (0))) && (s))){
+var G__11378 = (n__$1 - (1));
+var G__11379 = cljs.core.rest(s);
+n__$1 = G__11378;
+coll__$1 = G__11379;
+continue;
+} else {
+return s;
+}
+break;
+}
+});
+return (new cljs.core.LazySeq(null,((function (step){
+return (function (){
+return step(n,coll);
+});})(step))
+,null,null));
+});
+
+cljs.core.drop.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Return a lazy sequence of all but the last n (default 1) items in coll
+ */
+cljs.core.drop_last = (function cljs$core$drop_last(var_args){
+var G__11381 = arguments.length;
+switch (G__11381) {
+case 1:
+return cljs.core.drop_last.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.drop_last.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.drop_last.cljs$core$IFn$_invoke$arity$1 = (function (s){
+return cljs.core.drop_last.cljs$core$IFn$_invoke$arity$2((1),s);
+});
+
+cljs.core.drop_last.cljs$core$IFn$_invoke$arity$2 = (function (n,s){
+return cljs.core.map.cljs$core$IFn$_invoke$arity$3((function (x,_){
+return x;
+}),s,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(n,s));
+});
+
+cljs.core.drop_last.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a seq of the last n items in coll. Depending on the type
+ * of coll may be no better than linear time. For vectors, see also subvec.
+ */
+cljs.core.take_last = (function cljs$core$take_last(n,coll){
+var s = cljs.core.seq(coll);
+var lead = cljs.core.seq(cljs.core.drop.cljs$core$IFn$_invoke$arity$2(n,coll));
+while(true){
+if(lead){
+var G__11383 = cljs.core.next(s);
+var G__11384 = cljs.core.next(lead);
+s = G__11383;
+lead = G__11384;
+continue;
+} else {
+return s;
+}
+break;
+}
+});
+/**
+ * Returns a lazy sequence of the items in coll starting from the
+ * first item for which (pred item) returns logical false. Returns a
+ * stateful transducer when no collection is provided.
+ */
+cljs.core.drop_while = (function cljs$core$drop_while(var_args){
+var G__11386 = arguments.length;
+switch (G__11386) {
+case 1:
+return cljs.core.drop_while.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.drop_while.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.drop_while.cljs$core$IFn$_invoke$arity$1 = (function (pred){
+return (function (rf){
+var da = cljs.core.volatile_BANG_(true);
+return ((function (da){
+return (function() {
+var G__11390 = null;
+var G__11390__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__11390__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__11390__2 = (function (result,input){
+var drop_QMARK_ = cljs.core.deref(da);
+if(cljs.core.truth_((function (){var and__7791__auto__ = drop_QMARK_;
+if(cljs.core.truth_(and__7791__auto__)){
+return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(input) : pred.call(null,input));
+} else {
+return and__7791__auto__;
+}
+})())){
+return result;
+} else {
+cljs.core.vreset_BANG_(da,null);
+
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input));
+}
+});
+G__11390 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__11390__0.call(this);
+case 1:
+return G__11390__1.call(this,result);
+case 2:
+return G__11390__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11390.cljs$core$IFn$_invoke$arity$0 = G__11390__0;
+G__11390.cljs$core$IFn$_invoke$arity$1 = G__11390__1;
+G__11390.cljs$core$IFn$_invoke$arity$2 = G__11390__2;
+return G__11390;
+})()
+;})(da))
+});
+});
+
+cljs.core.drop_while.cljs$core$IFn$_invoke$arity$2 = (function (pred,coll){
+var step = (function (pred__$1,coll__$1){
+while(true){
+var s = cljs.core.seq(coll__$1);
+if(cljs.core.truth_((function (){var and__7791__auto__ = s;
+if(and__7791__auto__){
+var G__11388 = cljs.core.first(s);
+return (pred__$1.cljs$core$IFn$_invoke$arity$1 ? pred__$1.cljs$core$IFn$_invoke$arity$1(G__11388) : pred__$1.call(null,G__11388));
+} else {
+return and__7791__auto__;
+}
+})())){
+var G__11391 = pred__$1;
+var G__11392 = cljs.core.rest(s);
+pred__$1 = G__11391;
+coll__$1 = G__11392;
+continue;
+} else {
+return s;
+}
+break;
+}
+});
+return (new cljs.core.LazySeq(null,((function (step){
+return (function (){
+return step(pred,coll);
+});})(step))
+,null,null));
+});
+
+cljs.core.drop_while.cljs$lang$maxFixedArity = 2;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IPending}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.Cycle = (function (meta,all,prev,current,_next){
+this.meta = meta;
+this.all = all;
+this.prev = prev;
+this.current = current;
+this._next = _next;
+this.cljs$lang$protocol_mask$partition0$ = 26083532;
+this.cljs$lang$protocol_mask$partition1$ = 1;
+});
+cljs.core.Cycle.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.Cycle.prototype.currentval = (function (){
+var self__ = this;
+var coll = this;
+if(self__.current){
+} else {
+var temp__4655__auto___11397 = cljs.core.next(self__.prev);
+if(temp__4655__auto___11397){
+var c_11398 = temp__4655__auto___11397;
+self__.current = c_11398;
+} else {
+self__.current = self__.all;
+}
+}
+
+return self__.current;
+});
+
+cljs.core.Cycle.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.Cycle.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ISeq$_rest$arity$1(null);
+});
+
+cljs.core.Cycle.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.Cycle.prototype.cljs$core$IPending$_realized_QMARK_$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (!((self__.current == null)));
+});
+
+cljs.core.Cycle.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+var s = coll__$1.currentval();
+var ret = cljs.core.first(s);
+while(true){
+var s__$1 = (function (){var or__7806__auto__ = cljs.core.next(s);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return self__.all;
+}
+})();
+var ret__$1 = (function (){var G__11393 = ret;
+var G__11394 = cljs.core.first(s__$1);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11393,G__11394) : f.call(null,G__11393,G__11394));
+})();
+if(cljs.core.reduced_QMARK_(ret__$1)){
+return cljs.core.deref(ret__$1);
+} else {
+var G__11399 = s__$1;
+var G__11400 = ret__$1;
+s = G__11399;
+ret = G__11400;
+continue;
+}
+break;
+}
+});
+
+cljs.core.Cycle.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+var s = coll__$1.currentval();
+var ret = start;
+while(true){
+var ret__$1 = (function (){var G__11395 = ret;
+var G__11396 = cljs.core.first(s);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11395,G__11396) : f.call(null,G__11395,G__11396));
+})();
+if(cljs.core.reduced_QMARK_(ret__$1)){
+return cljs.core.deref(ret__$1);
+} else {
+var G__11401 = (function (){var or__7806__auto__ = cljs.core.next(s);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return self__.all;
+}
+})();
+var G__11402 = ret__$1;
+s = G__11401;
+ret = G__11402;
+continue;
+}
+break;
+}
+});
+
+cljs.core.Cycle.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.first(coll__$1.currentval());
+});
+
+cljs.core.Cycle.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__._next == null)){
+self__._next = (new cljs.core.Cycle(null,self__.all,coll__$1.currentval(),null,null));
+} else {
+}
+
+return self__._next;
+});
+
+cljs.core.Cycle.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.Cycle.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.Cycle(meta__$1,self__.all,self__.prev,self__.current,self__._next));
+});
+
+cljs.core.Cycle.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.Cycle.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"all","all",-1762306027,null),new cljs.core.Symbol(null,"prev","prev",43462301,null),cljs.core.with_meta(new cljs.core.Symbol(null,"current","current",552492924,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"_next","_next",101877036,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Cycle.cljs$lang$type = true;
+
+cljs.core.Cycle.cljs$lang$ctorStr = "cljs.core/Cycle";
+
+cljs.core.Cycle.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Cycle");
+});
+
+/**
+ * Positional factory function for cljs.core/Cycle.
+ */
+cljs.core.__GT_Cycle = (function cljs$core$__GT_Cycle(meta,all,prev,current,_next){
+return (new cljs.core.Cycle(meta,all,prev,current,_next));
+});
+
+/**
+ * Returns a lazy (infinite!) sequence of repetitions of the items in coll.
+ */
+cljs.core.cycle = (function cljs$core$cycle(coll){
+var temp__4655__auto__ = cljs.core.seq(coll);
+if(temp__4655__auto__){
+var vals = temp__4655__auto__;
+return (new cljs.core.Cycle(null,vals,null,vals,null));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+/**
+ * Returns a vector of [(take n coll) (drop n coll)]
+ */
+cljs.core.split_at = (function cljs$core$split_at(n,coll){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,coll),cljs.core.drop.cljs$core$IFn$_invoke$arity$2(n,coll)], null);
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IPending}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.Repeat = (function (meta,count,val,next,__hash){
+this.meta = meta;
+this.count = count;
+this.val = val;
+this.next = next;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 32374988;
+this.cljs$lang$protocol_mask$partition1$ = 1;
+});
+cljs.core.Repeat.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.Repeat.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.Repeat.prototype.indexOf = (function() {
+var G__11403 = null;
+var G__11403__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11403__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11403 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11403__1.call(this,x);
+case 2:
+return G__11403__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11403.cljs$core$IFn$_invoke$arity$1 = G__11403__1;
+G__11403.cljs$core$IFn$_invoke$arity$2 = G__11403__2;
+return G__11403;
+})()
+;
+
+cljs.core.Repeat.prototype.lastIndexOf = (function() {
+var G__11404 = null;
+var G__11404__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,self__.count);
+});
+var G__11404__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11404 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11404__1.call(this,x);
+case 2:
+return G__11404__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11404.cljs$core$IFn$_invoke$arity$1 = G__11404__1;
+G__11404.cljs$core$IFn$_invoke$arity$2 = G__11404__2;
+return G__11404;
+})()
+;
+
+cljs.core.Repeat.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.Repeat.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.next == null)){
+if((self__.count > (1))){
+self__.next = (new cljs.core.Repeat(null,(self__.count - (1)),self__.val,null,null));
+
+return self__.next;
+} else {
+if(((-1) === self__.count)){
+return coll__$1;
+} else {
+return null;
+}
+}
+} else {
+return self__.next;
+}
+});
+
+cljs.core.Repeat.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.Repeat.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.Repeat.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.Repeat.prototype.cljs$core$IPending$_realized_QMARK_$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return false;
+});
+
+cljs.core.Repeat.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+if((self__.count === (-1))){
+var ret = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(self__.val,self__.val) : f.call(null,self__.val,self__.val));
+while(true){
+if(cljs.core.reduced_QMARK_(ret)){
+return cljs.core.deref(ret);
+} else {
+var G__11405 = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(ret,self__.val) : f.call(null,ret,self__.val));
+ret = G__11405;
+continue;
+}
+break;
+}
+} else {
+var i = (1);
+var ret = self__.val;
+while(true){
+if((i < self__.count)){
+var ret__$1 = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(ret,self__.val) : f.call(null,ret,self__.val));
+if(cljs.core.reduced_QMARK_(ret__$1)){
+return cljs.core.deref(ret__$1);
+} else {
+var G__11406 = (i + (1));
+var G__11407 = ret__$1;
+i = G__11406;
+ret = G__11407;
+continue;
+}
+} else {
+return ret;
+}
+break;
+}
+}
+});
+
+cljs.core.Repeat.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+if((self__.count === (-1))){
+var ret = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(start,self__.val) : f.call(null,start,self__.val));
+while(true){
+if(cljs.core.reduced_QMARK_(ret)){
+return cljs.core.deref(ret);
+} else {
+var G__11408 = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(ret,self__.val) : f.call(null,ret,self__.val));
+ret = G__11408;
+continue;
+}
+break;
+}
+} else {
+var i = (0);
+var ret = start;
+while(true){
+if((i < self__.count)){
+var ret__$1 = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(ret,self__.val) : f.call(null,ret,self__.val));
+if(cljs.core.reduced_QMARK_(ret__$1)){
+return cljs.core.deref(ret__$1);
+} else {
+var G__11409 = (i + (1));
+var G__11410 = ret__$1;
+i = G__11409;
+ret = G__11410;
+continue;
+}
+} else {
+return ret;
+}
+break;
+}
+}
+});
+
+cljs.core.Repeat.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.val;
+});
+
+cljs.core.Repeat.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.next == null)){
+if((self__.count > (1))){
+self__.next = (new cljs.core.Repeat(null,(self__.count - (1)),self__.val,null,null));
+
+return self__.next;
+} else {
+if(((-1) === self__.count)){
+return coll__$1;
+} else {
+return cljs.core.List.EMPTY;
+}
+}
+} else {
+return self__.next;
+}
+});
+
+cljs.core.Repeat.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.Repeat.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.Repeat(meta__$1,self__.count,self__.val,self__.next,null));
+});
+
+cljs.core.Repeat.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.Repeat.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"count","count",-514511684,null),new cljs.core.Symbol(null,"val","val",1769233139,null),cljs.core.with_meta(new cljs.core.Symbol(null,"next","next",1522830042,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Repeat.cljs$lang$type = true;
+
+cljs.core.Repeat.cljs$lang$ctorStr = "cljs.core/Repeat";
+
+cljs.core.Repeat.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Repeat");
+});
+
+/**
+ * Positional factory function for cljs.core/Repeat.
+ */
+cljs.core.__GT_Repeat = (function cljs$core$__GT_Repeat(meta,count,val,next,__hash){
+return (new cljs.core.Repeat(meta,count,val,next,__hash));
+});
+
+/**
+ * Returns a lazy (infinite!, or length n if supplied) sequence of xs.
+ */
+cljs.core.repeat = (function cljs$core$repeat(var_args){
+var G__11412 = arguments.length;
+switch (G__11412) {
+case 1:
+return cljs.core.repeat.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.repeat.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.repeat.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return (new cljs.core.Repeat(null,(-1),x,null,null));
+});
+
+cljs.core.repeat.cljs$core$IFn$_invoke$arity$2 = (function (n,x){
+if((n > (0))){
+return (new cljs.core.Repeat(null,n,x,null,null));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.repeat.cljs$lang$maxFixedArity = 2;
+
+/**
+ * DEPRECATED: Use 'repeat' instead.
+ * Returns a lazy seq of n xs.
+ */
+cljs.core.replicate = (function cljs$core$replicate(n,x){
+return cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,cljs.core.repeat.cljs$core$IFn$_invoke$arity$1(x));
+});
+/**
+ * Takes a function of no args, presumably with side effects, and
+ * returns an infinite (or length n if supplied) lazy sequence of calls
+ * to it
+ */
+cljs.core.repeatedly = (function cljs$core$repeatedly(var_args){
+var G__11415 = arguments.length;
+switch (G__11415) {
+case 1:
+return cljs.core.repeatedly.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.repeatedly.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.repeatedly.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return (new cljs.core.LazySeq(null,(function (){
+return cljs.core.cons((f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null)),cljs.core.repeatedly.cljs$core$IFn$_invoke$arity$1(f));
+}),null,null));
+});
+
+cljs.core.repeatedly.cljs$core$IFn$_invoke$arity$2 = (function (n,f){
+return cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,cljs.core.repeatedly.cljs$core$IFn$_invoke$arity$1(f));
+});
+
+cljs.core.repeatedly.cljs$lang$maxFixedArity = 2;
+
+cljs.core.UNREALIZED_SEED = ({});
+
+/**
+* @constructor
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IPending}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.Iterate = (function (meta,f,prev_seed,seed,next){
+this.meta = meta;
+this.f = f;
+this.prev_seed = prev_seed;
+this.seed = seed;
+this.next = next;
+this.cljs$lang$protocol_mask$partition0$ = 26083532;
+this.cljs$lang$protocol_mask$partition1$ = 1;
+});
+cljs.core.Iterate.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.Iterate.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.Iterate.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ISeq$_rest$arity$1(null);
+});
+
+cljs.core.Iterate.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.Iterate.prototype.cljs$core$IPending$_realized_QMARK_$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (!((self__.seed === cljs.core.UNREALIZED_SEED)));
+});
+
+cljs.core.Iterate.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,rf){
+var self__ = this;
+var coll__$1 = this;
+var first = coll__$1.cljs$core$ISeq$_first$arity$1(null);
+var v = (self__.f.cljs$core$IFn$_invoke$arity$1 ? self__.f.cljs$core$IFn$_invoke$arity$1(first) : self__.f.call(null,first));
+var ret = (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(first,v) : rf.call(null,first,v));
+var v__$1 = v;
+while(true){
+if(cljs.core.reduced_QMARK_(ret)){
+return cljs.core.deref(ret);
+} else {
+var v__$2 = (self__.f.cljs$core$IFn$_invoke$arity$1 ? self__.f.cljs$core$IFn$_invoke$arity$1(v__$1) : self__.f.call(null,v__$1));
+var G__11417 = (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(ret,v__$2) : rf.call(null,ret,v__$2));
+var G__11418 = v__$2;
+ret = G__11417;
+v__$1 = G__11418;
+continue;
+}
+break;
+}
+});
+
+cljs.core.Iterate.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,rf,start){
+var self__ = this;
+var coll__$1 = this;
+var v = coll__$1.cljs$core$ISeq$_first$arity$1(null);
+var ret = (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(start,v) : rf.call(null,start,v));
+var v__$1 = v;
+while(true){
+if(cljs.core.reduced_QMARK_(ret)){
+return cljs.core.deref(ret);
+} else {
+var v__$2 = (self__.f.cljs$core$IFn$_invoke$arity$1 ? self__.f.cljs$core$IFn$_invoke$arity$1(v__$1) : self__.f.call(null,v__$1));
+var G__11419 = (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(ret,v__$2) : rf.call(null,ret,v__$2));
+var G__11420 = v__$2;
+ret = G__11419;
+v__$1 = G__11420;
+continue;
+}
+break;
+}
+});
+
+cljs.core.Iterate.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((cljs.core.UNREALIZED_SEED === self__.seed)){
+self__.seed = (self__.f.cljs$core$IFn$_invoke$arity$1 ? self__.f.cljs$core$IFn$_invoke$arity$1(self__.prev_seed) : self__.f.call(null,self__.prev_seed));
+} else {
+}
+
+return self__.seed;
+});
+
+cljs.core.Iterate.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.next == null)){
+self__.next = (new cljs.core.Iterate(null,self__.f,coll__$1.cljs$core$ISeq$_first$arity$1(null),cljs.core.UNREALIZED_SEED,null));
+} else {
+}
+
+return self__.next;
+});
+
+cljs.core.Iterate.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.Iterate.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.Iterate(meta__$1,self__.f,self__.prev_seed,self__.seed,self__.next));
+});
+
+cljs.core.Iterate.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.Iterate.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"f","f",43394975,null),new cljs.core.Symbol(null,"prev-seed","prev-seed",2126381367,null),cljs.core.with_meta(new cljs.core.Symbol(null,"seed","seed",1709144854,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"next","next",1522830042,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Iterate.cljs$lang$type = true;
+
+cljs.core.Iterate.cljs$lang$ctorStr = "cljs.core/Iterate";
+
+cljs.core.Iterate.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Iterate");
+});
+
+/**
+ * Positional factory function for cljs.core/Iterate.
+ */
+cljs.core.__GT_Iterate = (function cljs$core$__GT_Iterate(meta,f,prev_seed,seed,next){
+return (new cljs.core.Iterate(meta,f,prev_seed,seed,next));
+});
+
+/**
+ * Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of side-effects
+ */
+cljs.core.iterate = (function cljs$core$iterate(f,x){
+return (new cljs.core.Iterate(null,f,null,x,null));
+});
+/**
+ * Returns a lazy seq of the first item in each coll, then the second etc.
+ */
+cljs.core.interleave = (function cljs$core$interleave(var_args){
+var G__11425 = arguments.length;
+switch (G__11425) {
+case 0:
+return cljs.core.interleave.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.interleave.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.interleave.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11427 = arguments.length;
+var i__9001__auto___11428 = (0);
+while(true){
+if((i__9001__auto___11428 < len__9000__auto___11427)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11428]));
+
+var G__11429 = (i__9001__auto___11428 + (1));
+i__9001__auto___11428 = G__11429;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((2)),(0),null));
+return cljs.core.interleave.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.interleave.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.List.EMPTY;
+});
+
+cljs.core.interleave.cljs$core$IFn$_invoke$arity$1 = (function (c1){
+return (new cljs.core.LazySeq(null,(function (){
+return c1;
+}),null,null));
+});
+
+cljs.core.interleave.cljs$core$IFn$_invoke$arity$2 = (function (c1,c2){
+return (new cljs.core.LazySeq(null,(function (){
+var s1 = cljs.core.seq(c1);
+var s2 = cljs.core.seq(c2);
+if(((s1) && (s2))){
+return cljs.core.cons(cljs.core.first(s1),cljs.core.cons(cljs.core.first(s2),cljs.core.interleave.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(s1),cljs.core.rest(s2))));
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.interleave.cljs$core$IFn$_invoke$arity$variadic = (function (c1,c2,colls){
+return (new cljs.core.LazySeq(null,(function (){
+var ss = cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.seq,cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(colls,c2,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([c1], 0)));
+if(cljs.core.every_QMARK_(cljs.core.identity,ss)){
+return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.first,ss),cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.interleave,cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.rest,ss)));
+} else {
+return null;
+}
+}),null,null));
+});
+
+/** @this {Function} */
+cljs.core.interleave.cljs$lang$applyTo = (function (seq11422){
+var G__11423 = cljs.core.first(seq11422);
+var seq11422__$1 = cljs.core.next(seq11422);
+var G__11424 = cljs.core.first(seq11422__$1);
+var seq11422__$2 = cljs.core.next(seq11422__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11423,G__11424,seq11422__$2);
+});
+
+cljs.core.interleave.cljs$lang$maxFixedArity = (2);
+
+/**
+ * Returns a lazy seq of the elements of coll separated by sep.
+ * Returns a stateful transducer when no collection is provided.
+ */
+cljs.core.interpose = (function cljs$core$interpose(var_args){
+var G__11431 = arguments.length;
+switch (G__11431) {
+case 1:
+return cljs.core.interpose.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.interpose.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.interpose.cljs$core$IFn$_invoke$arity$1 = (function (sep){
+return (function (rf){
+var started = cljs.core.volatile_BANG_(false);
+return ((function (started){
+return (function() {
+var G__11433 = null;
+var G__11433__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__11433__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__11433__2 = (function (result,input){
+if(cljs.core.truth_(cljs.core.deref(started))){
+var sepr = (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,sep) : rf.call(null,result,sep));
+if(cljs.core.reduced_QMARK_(sepr)){
+return sepr;
+} else {
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(sepr,input) : rf.call(null,sepr,input));
+}
+} else {
+cljs.core.vreset_BANG_(started,true);
+
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input));
+}
+});
+G__11433 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__11433__0.call(this);
+case 1:
+return G__11433__1.call(this,result);
+case 2:
+return G__11433__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11433.cljs$core$IFn$_invoke$arity$0 = G__11433__0;
+G__11433.cljs$core$IFn$_invoke$arity$1 = G__11433__1;
+G__11433.cljs$core$IFn$_invoke$arity$2 = G__11433__2;
+return G__11433;
+})()
+;})(started))
+});
+});
+
+cljs.core.interpose.cljs$core$IFn$_invoke$arity$2 = (function (sep,coll){
+return cljs.core.drop.cljs$core$IFn$_invoke$arity$2((1),cljs.core.interleave.cljs$core$IFn$_invoke$arity$2(cljs.core.repeat.cljs$core$IFn$_invoke$arity$1(sep),coll));
+});
+
+cljs.core.interpose.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Take a collection of collections, and return a lazy seq
+ * of items from the inner collection
+ */
+cljs.core.flatten1 = (function cljs$core$flatten1(colls){
+var cat = (function cljs$core$flatten1_$_cat(coll,colls__$1){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4655__auto__ = cljs.core.seq(coll);
+if(temp__4655__auto__){
+var coll__$1 = temp__4655__auto__;
+return cljs.core.cons(cljs.core.first(coll__$1),cljs$core$flatten1_$_cat(cljs.core.rest(coll__$1),colls__$1));
+} else {
+if(cljs.core.seq(colls__$1)){
+return cljs$core$flatten1_$_cat(cljs.core.first(colls__$1),cljs.core.rest(colls__$1));
+} else {
+return null;
+}
+}
+}),null,null));
+});
+return cat(null,colls);
+});
+/**
+ * Returns the result of applying concat to the result of applying map
+ * to f and colls. Thus function f should return a collection. Returns
+ * a transducer when no collections are provided
+ */
+cljs.core.mapcat = (function cljs$core$mapcat(var_args){
+var G__11437 = arguments.length;
+switch (G__11437) {
+case 1:
+return cljs.core.mapcat.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11439 = arguments.length;
+var i__9001__auto___11440 = (0);
+while(true){
+if((i__9001__auto___11440 < len__9000__auto___11439)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11440]));
+
+var G__11441 = (i__9001__auto___11440 + (1));
+i__9001__auto___11440 = G__11441;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((1)),(0),null));
+return cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.mapcat.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return cljs.core.comp.cljs$core$IFn$_invoke$arity$2(cljs.core.map.cljs$core$IFn$_invoke$arity$1(f),cljs.core.cat);
+});
+
+cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic = (function (f,colls){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.concat,cljs.core.apply.cljs$core$IFn$_invoke$arity$3(cljs.core.map,f,colls));
+});
+
+/** @this {Function} */
+cljs.core.mapcat.cljs$lang$applyTo = (function (seq11435){
+var G__11436 = cljs.core.first(seq11435);
+var seq11435__$1 = cljs.core.next(seq11435);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11436,seq11435__$1);
+});
+
+cljs.core.mapcat.cljs$lang$maxFixedArity = (1);
+
+/**
+ * Returns a lazy sequence of the items in coll for which
+ * (pred item) returns logical true. pred must be free of side-effects.
+ * Returns a transducer when no collection is provided.
+ */
+cljs.core.filter = (function cljs$core$filter(var_args){
+var G__11443 = arguments.length;
+switch (G__11443) {
+case 1:
+return cljs.core.filter.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.filter.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.filter.cljs$core$IFn$_invoke$arity$1 = (function (pred){
+return (function (rf){
+return (function() {
+var G__11446 = null;
+var G__11446__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__11446__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__11446__2 = (function (result,input){
+if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(input) : pred.call(null,input)))){
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input));
+} else {
+return result;
+}
+});
+G__11446 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__11446__0.call(this);
+case 1:
+return G__11446__1.call(this,result);
+case 2:
+return G__11446__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11446.cljs$core$IFn$_invoke$arity$0 = G__11446__0;
+G__11446.cljs$core$IFn$_invoke$arity$1 = G__11446__1;
+G__11446.cljs$core$IFn$_invoke$arity$2 = G__11446__2;
+return G__11446;
+})()
+});
+});
+
+cljs.core.filter.cljs$core$IFn$_invoke$arity$2 = (function (pred,coll){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(s)){
+var c = cljs.core.chunk_first(s);
+var size = cljs.core.count(c);
+var b = cljs.core.chunk_buffer(size);
+var n__8769__auto___11447 = size;
+var i_11448 = (0);
+while(true){
+if((i_11448 < n__8769__auto___11447)){
+if(cljs.core.truth_((function (){var G__11444 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_11448);
+return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__11444) : pred.call(null,G__11444));
+})())){
+cljs.core.chunk_append(b,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_11448));
+} else {
+}
+
+var G__11449 = (i_11448 + (1));
+i_11448 = G__11449;
+continue;
+} else {
+}
+break;
+}
+
+return cljs.core.chunk_cons(cljs.core.chunk(b),cljs.core.filter.cljs$core$IFn$_invoke$arity$2(pred,cljs.core.chunk_rest(s)));
+} else {
+var f = cljs.core.first(s);
+var r = cljs.core.rest(s);
+if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(f) : pred.call(null,f)))){
+return cljs.core.cons(f,cljs.core.filter.cljs$core$IFn$_invoke$arity$2(pred,r));
+} else {
+return cljs.core.filter.cljs$core$IFn$_invoke$arity$2(pred,r);
+}
+}
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.filter.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a lazy sequence of the items in coll for which
+ * (pred item) returns logical false. pred must be free of side-effects.
+ * Returns a transducer when no collection is provided.
+ */
+cljs.core.remove = (function cljs$core$remove(var_args){
+var G__11451 = arguments.length;
+switch (G__11451) {
+case 1:
+return cljs.core.remove.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.remove.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.remove.cljs$core$IFn$_invoke$arity$1 = (function (pred){
+return cljs.core.filter.cljs$core$IFn$_invoke$arity$1(cljs.core.complement(pred));
+});
+
+cljs.core.remove.cljs$core$IFn$_invoke$arity$2 = (function (pred,coll){
+return cljs.core.filter.cljs$core$IFn$_invoke$arity$2(cljs.core.complement(pred),coll);
+});
+
+cljs.core.remove.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a lazy sequence of the nodes in a tree, via a depth-first walk.
+ * branch? must be a fn of one arg that returns true if passed a node
+ * that can have children (but may not). children must be a fn of one
+ * arg that returns a sequence of the children. Will only be called on
+ * nodes for which branch? returns true. Root is the root node of the
+ * tree.
+ */
+cljs.core.tree_seq = (function cljs$core$tree_seq(branch_QMARK_,children,root){
+var walk = (function cljs$core$tree_seq_$_walk(node){
+return (new cljs.core.LazySeq(null,(function (){
+return cljs.core.cons(node,(cljs.core.truth_((branch_QMARK_.cljs$core$IFn$_invoke$arity$1 ? branch_QMARK_.cljs$core$IFn$_invoke$arity$1(node) : branch_QMARK_.call(null,node)))?cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic(cljs$core$tree_seq_$_walk,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([(children.cljs$core$IFn$_invoke$arity$1 ? children.cljs$core$IFn$_invoke$arity$1(node) : children.call(null,node))], 0)):null));
+}),null,null));
+});
+return walk(root);
+});
+/**
+ * Takes any nested combination of sequential things (lists, vectors,
+ * etc.) and returns their contents as a single, flat sequence.
+ * (flatten nil) returns nil.
+ */
+cljs.core.flatten = (function cljs$core$flatten(x){
+return cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p1__11453_SHARP_){
+return (!(cljs.core.sequential_QMARK_(p1__11453_SHARP_)));
+}),cljs.core.rest(cljs.core.tree_seq(cljs.core.sequential_QMARK_,cljs.core.seq,x)));
+});
+/**
+ * Returns a new coll consisting of to-coll with all of the items of
+ * from-coll conjoined. A transducer may be supplied.
+ */
+cljs.core.into = (function cljs$core$into(var_args){
+var G__11455 = arguments.length;
+switch (G__11455) {
+case 0:
+return cljs.core.into.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.into.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.into.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.into.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.into.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.PersistentVector.EMPTY;
+});
+
+cljs.core.into.cljs$core$IFn$_invoke$arity$1 = (function (to){
+return to;
+});
+
+cljs.core.into.cljs$core$IFn$_invoke$arity$2 = (function (to,from){
+if((!((to == null)))){
+if((((!((to == null))))?(((((to.cljs$lang$protocol_mask$partition1$ & (4))) || ((cljs.core.PROTOCOL_SENTINEL === to.cljs$core$IEditableCollection$))))?true:false):false)){
+return cljs.core._with_meta(cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj_BANG_,cljs.core.transient$(to),from)),cljs.core.meta(to));
+} else {
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,to,from);
+}
+} else {
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.conj,cljs.core.List.EMPTY,from);
+}
+});
+
+cljs.core.into.cljs$core$IFn$_invoke$arity$3 = (function (to,xform,from){
+if((((!((to == null))))?(((((to.cljs$lang$protocol_mask$partition1$ & (4))) || ((cljs.core.PROTOCOL_SENTINEL === to.cljs$core$IEditableCollection$))))?true:false):false)){
+return cljs.core._with_meta(cljs.core.persistent_BANG_(cljs.core.transduce.cljs$core$IFn$_invoke$arity$4(xform,cljs.core.conj_BANG_,cljs.core.transient$(to),from)),cljs.core.meta(to));
+} else {
+return cljs.core.transduce.cljs$core$IFn$_invoke$arity$4(xform,cljs.core.conj,to,from);
+}
+});
+
+cljs.core.into.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Returns a vector consisting of the result of applying f to the
+ * set of first items of each coll, followed by applying f to the set
+ * of second items in each coll, until any one of the colls is
+ * exhausted. Any remaining items in other colls are ignored. Function
+ * f should accept number-of-colls arguments.
+ */
+cljs.core.mapv = (function cljs$core$mapv(var_args){
+var G__11465 = arguments.length;
+switch (G__11465) {
+case 2:
+return cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.mapv.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.mapv.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11467 = arguments.length;
+var i__9001__auto___11468 = (0);
+while(true){
+if((i__9001__auto___11468 < len__9000__auto___11467)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11468]));
+
+var G__11469 = (i__9001__auto___11468 + (1));
+i__9001__auto___11468 = G__11469;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((4)),(0),null));
+return cljs.core.mapv.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.mapv.cljs$core$IFn$_invoke$arity$2 = (function (f,coll){
+return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (v,o){
+return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(v,(f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(o) : f.call(null,o)));
+}),cljs.core.transient$(cljs.core.PersistentVector.EMPTY),coll));
+});
+
+cljs.core.mapv.cljs$core$IFn$_invoke$arity$3 = (function (f,c1,c2){
+return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$3(f,c1,c2));
+});
+
+cljs.core.mapv.cljs$core$IFn$_invoke$arity$4 = (function (f,c1,c2,c3){
+return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$4(f,c1,c2,c3));
+});
+
+cljs.core.mapv.cljs$core$IFn$_invoke$arity$variadic = (function (f,c1,c2,c3,colls){
+return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentVector.EMPTY,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(cljs.core.map,f,c1,c2,c3,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([colls], 0)));
+});
+
+/** @this {Function} */
+cljs.core.mapv.cljs$lang$applyTo = (function (seq11460){
+var G__11461 = cljs.core.first(seq11460);
+var seq11460__$1 = cljs.core.next(seq11460);
+var G__11462 = cljs.core.first(seq11460__$1);
+var seq11460__$2 = cljs.core.next(seq11460__$1);
+var G__11463 = cljs.core.first(seq11460__$2);
+var seq11460__$3 = cljs.core.next(seq11460__$2);
+var G__11464 = cljs.core.first(seq11460__$3);
+var seq11460__$4 = cljs.core.next(seq11460__$3);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11461,G__11462,G__11463,G__11464,seq11460__$4);
+});
+
+cljs.core.mapv.cljs$lang$maxFixedArity = (4);
+
+/**
+ * Returns a vector of the items in coll for which
+ * (pred item) returns logical true. pred must be free of side-effects.
+ */
+cljs.core.filterv = (function cljs$core$filterv(pred,coll){
+return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (v,o){
+if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(o) : pred.call(null,o)))){
+return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(v,o);
+} else {
+return v;
+}
+}),cljs.core.transient$(cljs.core.PersistentVector.EMPTY),coll));
+});
+/**
+ * Returns a lazy sequence of lists of n items each, at offsets step
+ * apart. If step is not supplied, defaults to n, i.e. the partitions
+ * do not overlap. If a pad collection is supplied, use its elements as
+ * necessary to complete last partition up to n items. In case there are
+ * not enough padding elements, return a partition with less than n items.
+ */
+cljs.core.partition = (function cljs$core$partition(var_args){
+var G__11471 = arguments.length;
+switch (G__11471) {
+case 2:
+return cljs.core.partition.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.partition.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.partition.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.partition.cljs$core$IFn$_invoke$arity$2 = (function (n,coll){
+return cljs.core.partition.cljs$core$IFn$_invoke$arity$3(n,n,coll);
+});
+
+cljs.core.partition.cljs$core$IFn$_invoke$arity$3 = (function (n,step,coll){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+var p = cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,s);
+if((n === cljs.core.count(p))){
+return cljs.core.cons(p,cljs.core.partition.cljs$core$IFn$_invoke$arity$3(n,step,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(step,s)));
+} else {
+return null;
+}
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.partition.cljs$core$IFn$_invoke$arity$4 = (function (n,step,pad,coll){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+var p = cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,s);
+if((n === cljs.core.count(p))){
+return cljs.core.cons(p,cljs.core.partition.cljs$core$IFn$_invoke$arity$4(n,step,pad,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(step,s)));
+} else {
+return (new cljs.core.List(null,cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(p,pad)),null,(1),null));
+}
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.partition.cljs$lang$maxFixedArity = 4;
+
+/**
+ * Returns the value in a nested associative structure,
+ * where ks is a sequence of keys. Returns nil if the key is not present,
+ * or the not-found value if supplied.
+ */
+cljs.core.get_in = (function cljs$core$get_in(var_args){
+var G__11474 = arguments.length;
+switch (G__11474) {
+case 2:
+return cljs.core.get_in.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.get_in.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.get_in.cljs$core$IFn$_invoke$arity$2 = (function (m,ks){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.get,m,ks);
+});
+
+cljs.core.get_in.cljs$core$IFn$_invoke$arity$3 = (function (m,ks,not_found){
+var sentinel = cljs.core.lookup_sentinel;
+var m__$1 = m;
+var ks__$1 = cljs.core.seq(ks);
+while(true){
+if((!((ks__$1 == null)))){
+var m__$2 = cljs.core.get.cljs$core$IFn$_invoke$arity$3(m__$1,cljs.core.first(ks__$1),sentinel);
+if((sentinel === m__$2)){
+return not_found;
+} else {
+var G__11476 = sentinel;
+var G__11477 = m__$2;
+var G__11478 = cljs.core.next(ks__$1);
+sentinel = G__11476;
+m__$1 = G__11477;
+ks__$1 = G__11478;
+continue;
+}
+} else {
+return m__$1;
+}
+break;
+}
+});
+
+cljs.core.get_in.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Associates a value in a nested associative structure, where ks is a
+ * sequence of keys and v is the new value and returns a new nested structure.
+ * If any levels do not exist, hash-maps will be created.
+ */
+cljs.core.assoc_in = (function cljs$core$assoc_in(m,p__11479,v){
+var vec__11480 = p__11479;
+var seq__11481 = cljs.core.seq(vec__11480);
+var first__11482 = cljs.core.first(seq__11481);
+var seq__11481__$1 = cljs.core.next(seq__11481);
+var k = first__11482;
+var ks = seq__11481__$1;
+if(ks){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__11483 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+var G__11484 = ks;
+var G__11485 = v;
+return (cljs.core.assoc_in.cljs$core$IFn$_invoke$arity$3 ? cljs.core.assoc_in.cljs$core$IFn$_invoke$arity$3(G__11483,G__11484,G__11485) : cljs.core.assoc_in.call(null,G__11483,G__11484,G__11485));
+})());
+} else {
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,v);
+}
+});
+/**
+ * 'Updates' a value in a nested associative structure, where ks is a
+ * sequence of keys and f is a function that will take the old value
+ * and any supplied args and return the new value, and returns a new
+ * nested structure. If any levels do not exist, hash-maps will be
+ * created.
+ */
+cljs.core.update_in = (function cljs$core$update_in(var_args){
+var G__11494 = arguments.length;
+switch (G__11494) {
+case 3:
+return cljs.core.update_in.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.update_in.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 5:
+return cljs.core.update_in.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+case 6:
+return cljs.core.update_in.cljs$core$IFn$_invoke$arity$6((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11526 = arguments.length;
+var i__9001__auto___11527 = (0);
+while(true){
+if((i__9001__auto___11527 < len__9000__auto___11526)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11527]));
+
+var G__11528 = (i__9001__auto___11527 + (1));
+i__9001__auto___11527 = G__11528;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((6)),(0),null));
+return cljs.core.update_in.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.update_in.cljs$core$IFn$_invoke$arity$3 = (function (m,p__11495,f){
+var vec__11496 = p__11495;
+var seq__11497 = cljs.core.seq(vec__11496);
+var first__11498 = cljs.core.first(seq__11497);
+var seq__11497__$1 = cljs.core.next(seq__11497);
+var k = first__11498;
+var ks = seq__11497__$1;
+if(ks){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.update_in.cljs$core$IFn$_invoke$arity$3(cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f));
+} else {
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__11499 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11499) : f.call(null,G__11499));
+})());
+}
+});
+
+cljs.core.update_in.cljs$core$IFn$_invoke$arity$4 = (function (m,p__11500,f,a){
+var vec__11501 = p__11500;
+var seq__11502 = cljs.core.seq(vec__11501);
+var first__11503 = cljs.core.first(seq__11502);
+var seq__11502__$1 = cljs.core.next(seq__11502);
+var k = first__11503;
+var ks = seq__11502__$1;
+if(ks){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.update_in.cljs$core$IFn$_invoke$arity$4(cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f,a));
+} else {
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__11504 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+var G__11505 = a;
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11504,G__11505) : f.call(null,G__11504,G__11505));
+})());
+}
+});
+
+cljs.core.update_in.cljs$core$IFn$_invoke$arity$5 = (function (m,p__11506,f,a,b){
+var vec__11507 = p__11506;
+var seq__11508 = cljs.core.seq(vec__11507);
+var first__11509 = cljs.core.first(seq__11508);
+var seq__11508__$1 = cljs.core.next(seq__11508);
+var k = first__11509;
+var ks = seq__11508__$1;
+if(ks){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.update_in.cljs$core$IFn$_invoke$arity$5(cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f,a,b));
+} else {
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__11510 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+var G__11511 = a;
+var G__11512 = b;
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11510,G__11511,G__11512) : f.call(null,G__11510,G__11511,G__11512));
+})());
+}
+});
+
+cljs.core.update_in.cljs$core$IFn$_invoke$arity$6 = (function (m,p__11513,f,a,b,c){
+var vec__11514 = p__11513;
+var seq__11515 = cljs.core.seq(vec__11514);
+var first__11516 = cljs.core.first(seq__11515);
+var seq__11515__$1 = cljs.core.next(seq__11515);
+var k = first__11516;
+var ks = seq__11515__$1;
+if(ks){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.update_in.cljs$core$IFn$_invoke$arity$6(cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f,a,b,c));
+} else {
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__11517 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+var G__11518 = a;
+var G__11519 = b;
+var G__11520 = c;
+return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__11517,G__11518,G__11519,G__11520) : f.call(null,G__11517,G__11518,G__11519,G__11520));
+})());
+}
+});
+
+cljs.core.update_in.cljs$core$IFn$_invoke$arity$variadic = (function (m,p__11521,f,a,b,c,args){
+var vec__11522 = p__11521;
+var seq__11523 = cljs.core.seq(vec__11522);
+var first__11524 = cljs.core.first(seq__11523);
+var seq__11523__$1 = cljs.core.next(seq__11523);
+var k = first__11524;
+var ks = seq__11523__$1;
+if(ks){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(cljs.core.update_in,cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f,a,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([b,c,args], 0)));
+} else {
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),a,b,c,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([args], 0)));
+}
+});
+
+/** @this {Function} */
+cljs.core.update_in.cljs$lang$applyTo = (function (seq11487){
+var G__11488 = cljs.core.first(seq11487);
+var seq11487__$1 = cljs.core.next(seq11487);
+var G__11489 = cljs.core.first(seq11487__$1);
+var seq11487__$2 = cljs.core.next(seq11487__$1);
+var G__11490 = cljs.core.first(seq11487__$2);
+var seq11487__$3 = cljs.core.next(seq11487__$2);
+var G__11491 = cljs.core.first(seq11487__$3);
+var seq11487__$4 = cljs.core.next(seq11487__$3);
+var G__11492 = cljs.core.first(seq11487__$4);
+var seq11487__$5 = cljs.core.next(seq11487__$4);
+var G__11493 = cljs.core.first(seq11487__$5);
+var seq11487__$6 = cljs.core.next(seq11487__$5);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11488,G__11489,G__11490,G__11491,G__11492,G__11493,seq11487__$6);
+});
+
+cljs.core.update_in.cljs$lang$maxFixedArity = (6);
+
+/**
+ * 'Updates' a value in an associative structure, where k is a
+ * key and f is a function that will take the old value
+ * and any supplied args and return the new value, and returns a new
+ * structure. If the key does not exist, nil is passed as the old value.
+ */
+cljs.core.update = (function cljs$core$update(var_args){
+var G__11537 = arguments.length;
+switch (G__11537) {
+case 3:
+return cljs.core.update.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.update.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 5:
+return cljs.core.update.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+case 6:
+return cljs.core.update.cljs$core$IFn$_invoke$arity$6((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___11549 = arguments.length;
+var i__9001__auto___11550 = (0);
+while(true){
+if((i__9001__auto___11550 < len__9000__auto___11549)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___11550]));
+
+var G__11551 = (i__9001__auto___11550 + (1));
+i__9001__auto___11550 = G__11551;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((6)),(0),null));
+return cljs.core.update.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.update.cljs$core$IFn$_invoke$arity$3 = (function (m,k,f){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__11538 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11538) : f.call(null,G__11538));
+})());
+});
+
+cljs.core.update.cljs$core$IFn$_invoke$arity$4 = (function (m,k,f,x){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__11539 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+var G__11540 = x;
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11539,G__11540) : f.call(null,G__11539,G__11540));
+})());
+});
+
+cljs.core.update.cljs$core$IFn$_invoke$arity$5 = (function (m,k,f,x,y){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__11541 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+var G__11542 = x;
+var G__11543 = y;
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11541,G__11542,G__11543) : f.call(null,G__11541,G__11542,G__11543));
+})());
+});
+
+cljs.core.update.cljs$core$IFn$_invoke$arity$6 = (function (m,k,f,x,y,z){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__11544 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+var G__11545 = x;
+var G__11546 = y;
+var G__11547 = z;
+return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__11544,G__11545,G__11546,G__11547) : f.call(null,G__11544,G__11545,G__11546,G__11547));
+})());
+});
+
+cljs.core.update.cljs$core$IFn$_invoke$arity$variadic = (function (m,k,f,x,y,z,more){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),x,y,z,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([more], 0)));
+});
+
+/** @this {Function} */
+cljs.core.update.cljs$lang$applyTo = (function (seq11530){
+var G__11531 = cljs.core.first(seq11530);
+var seq11530__$1 = cljs.core.next(seq11530);
+var G__11532 = cljs.core.first(seq11530__$1);
+var seq11530__$2 = cljs.core.next(seq11530__$1);
+var G__11533 = cljs.core.first(seq11530__$2);
+var seq11530__$3 = cljs.core.next(seq11530__$2);
+var G__11534 = cljs.core.first(seq11530__$3);
+var seq11530__$4 = cljs.core.next(seq11530__$3);
+var G__11535 = cljs.core.first(seq11530__$4);
+var seq11530__$5 = cljs.core.next(seq11530__$4);
+var G__11536 = cljs.core.first(seq11530__$5);
+var seq11530__$6 = cljs.core.next(seq11530__$5);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__11531,G__11532,G__11533,G__11534,G__11535,G__11536,seq11530__$6);
+});
+
+cljs.core.update.cljs$lang$maxFixedArity = (6);
+
+
+/**
+* @constructor
+*/
+cljs.core.VectorNode = (function (edit,arr){
+this.edit = edit;
+this.arr = arr;
+});
+
+cljs.core.VectorNode.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"edit","edit",-1302639,null),new cljs.core.Symbol(null,"arr","arr",2115492975,null)], null);
+});
+
+cljs.core.VectorNode.cljs$lang$type = true;
+
+cljs.core.VectorNode.cljs$lang$ctorStr = "cljs.core/VectorNode";
+
+cljs.core.VectorNode.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/VectorNode");
+});
+
+/**
+ * Positional factory function for cljs.core/VectorNode.
+ */
+cljs.core.__GT_VectorNode = (function cljs$core$__GT_VectorNode(edit,arr){
+return (new cljs.core.VectorNode(edit,arr));
+});
+
+cljs.core.pv_fresh_node = (function cljs$core$pv_fresh_node(edit){
+return (new cljs.core.VectorNode(edit,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]));
+});
+cljs.core.pv_aget = (function cljs$core$pv_aget(node,idx){
+return (node.arr[idx]);
+});
+cljs.core.pv_aset = (function cljs$core$pv_aset(node,idx,val){
+return (node.arr[idx] = val);
+});
+cljs.core.pv_clone_node = (function cljs$core$pv_clone_node(node){
+return (new cljs.core.VectorNode(node.edit,cljs.core.aclone(node.arr)));
+});
+cljs.core.tail_off = (function cljs$core$tail_off(pv){
+var cnt = pv.cnt;
+if((cnt < (32))){
+return (0);
+} else {
+return (((cnt - (1)) >>> (5)) << (5));
+}
+});
+cljs.core.new_path = (function cljs$core$new_path(edit,level,node){
+var ll = level;
+var ret = node;
+while(true){
+if((ll === (0))){
+return ret;
+} else {
+var embed = ret;
+var r = cljs.core.pv_fresh_node(edit);
+var _ = cljs.core.pv_aset(r,(0),embed);
+var G__11552 = (ll - (5));
+var G__11553 = r;
+ll = G__11552;
+ret = G__11553;
+continue;
+}
+break;
+}
+});
+cljs.core.push_tail = (function cljs$core$push_tail(pv,level,parent,tailnode){
+var ret = cljs.core.pv_clone_node(parent);
+var subidx = (((pv.cnt - (1)) >>> level) & (31));
+if(((5) === level)){
+cljs.core.pv_aset(ret,subidx,tailnode);
+
+return ret;
+} else {
+var child = cljs.core.pv_aget(parent,subidx);
+if((!((child == null)))){
+var node_to_insert = (function (){var G__11554 = pv;
+var G__11555 = (level - (5));
+var G__11556 = child;
+var G__11557 = tailnode;
+return (cljs.core.push_tail.cljs$core$IFn$_invoke$arity$4 ? cljs.core.push_tail.cljs$core$IFn$_invoke$arity$4(G__11554,G__11555,G__11556,G__11557) : cljs.core.push_tail.call(null,G__11554,G__11555,G__11556,G__11557));
+})();
+cljs.core.pv_aset(ret,subidx,node_to_insert);
+
+return ret;
+} else {
+var node_to_insert = cljs.core.new_path(null,(level - (5)),tailnode);
+cljs.core.pv_aset(ret,subidx,node_to_insert);
+
+return ret;
+}
+}
+});
+cljs.core.vector_index_out_of_bounds = (function cljs$core$vector_index_out_of_bounds(i,cnt){
+throw (new Error(["No item ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(i)," in vector of length ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cnt)].join('')));
+});
+cljs.core.first_array_for_longvec = (function cljs$core$first_array_for_longvec(pv){
+var node = pv.root;
+var level = pv.shift;
+while(true){
+if((level > (0))){
+var G__11558 = cljs.core.pv_aget(node,(0));
+var G__11559 = (level - (5));
+node = G__11558;
+level = G__11559;
+continue;
+} else {
+return node.arr;
+}
+break;
+}
+});
+cljs.core.unchecked_array_for = (function cljs$core$unchecked_array_for(pv,i){
+if((i >= cljs.core.tail_off(pv))){
+return pv.tail;
+} else {
+var node = pv.root;
+var level = pv.shift;
+while(true){
+if((level > (0))){
+var G__11560 = cljs.core.pv_aget(node,((i >>> level) & (31)));
+var G__11561 = (level - (5));
+node = G__11560;
+level = G__11561;
+continue;
+} else {
+return node.arr;
+}
+break;
+}
+}
+});
+cljs.core.array_for = (function cljs$core$array_for(pv,i){
+if(((((0) <= i)) && ((i < pv.cnt)))){
+return cljs.core.unchecked_array_for(pv,i);
+} else {
+return cljs.core.vector_index_out_of_bounds(i,pv.cnt);
+}
+});
+cljs.core.do_assoc = (function cljs$core$do_assoc(pv,level,node,i,val){
+var ret = cljs.core.pv_clone_node(node);
+if((level === (0))){
+cljs.core.pv_aset(ret,(i & (31)),val);
+
+return ret;
+} else {
+var subidx = ((i >>> level) & (31));
+cljs.core.pv_aset(ret,subidx,(function (){var G__11562 = pv;
+var G__11563 = (level - (5));
+var G__11564 = cljs.core.pv_aget(node,subidx);
+var G__11565 = i;
+var G__11566 = val;
+return (cljs.core.do_assoc.cljs$core$IFn$_invoke$arity$5 ? cljs.core.do_assoc.cljs$core$IFn$_invoke$arity$5(G__11562,G__11563,G__11564,G__11565,G__11566) : cljs.core.do_assoc.call(null,G__11562,G__11563,G__11564,G__11565,G__11566));
+})());
+
+return ret;
+}
+});
+cljs.core.pop_tail = (function cljs$core$pop_tail(pv,level,node){
+var subidx = (((pv.cnt - (2)) >>> level) & (31));
+if((level > (5))){
+var new_child = (function (){var G__11567 = pv;
+var G__11568 = (level - (5));
+var G__11569 = cljs.core.pv_aget(node,subidx);
+return (cljs.core.pop_tail.cljs$core$IFn$_invoke$arity$3 ? cljs.core.pop_tail.cljs$core$IFn$_invoke$arity$3(G__11567,G__11568,G__11569) : cljs.core.pop_tail.call(null,G__11567,G__11568,G__11569));
+})();
+if((((new_child == null)) && ((subidx === (0))))){
+return null;
+} else {
+var ret = cljs.core.pv_clone_node(node);
+cljs.core.pv_aset(ret,subidx,new_child);
+
+return ret;
+}
+} else {
+if((subidx === (0))){
+return null;
+} else {
+var ret = cljs.core.pv_clone_node(node);
+cljs.core.pv_aset(ret,subidx,null);
+
+return ret;
+
+}
+}
+});
+
+/**
+* @constructor
+*/
+cljs.core.RangedIterator = (function (i,base,arr,v,start,end){
+this.i = i;
+this.base = base;
+this.arr = arr;
+this.v = v;
+this.start = start;
+this.end = end;
+});
+cljs.core.RangedIterator.prototype.hasNext = (function (){
+var self__ = this;
+var this$ = this;
+return (self__.i < self__.end);
+});
+
+cljs.core.RangedIterator.prototype.next = (function (){
+var self__ = this;
+var this$ = this;
+if(((self__.i - self__.base) === (32))){
+self__.arr = cljs.core.unchecked_array_for(self__.v,self__.i);
+
+self__.base = (self__.base + (32));
+} else {
+}
+
+var ret = (self__.arr[(self__.i & (31))]);
+self__.i = (self__.i + (1));
+
+return ret;
+});
+
+cljs.core.RangedIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"base","base",1825810849,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"arr","arr",2115492975,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"v","v",1661996586,null),new cljs.core.Symbol(null,"start","start",1285322546,null),new cljs.core.Symbol(null,"end","end",1372345569,null)], null);
+});
+
+cljs.core.RangedIterator.cljs$lang$type = true;
+
+cljs.core.RangedIterator.cljs$lang$ctorStr = "cljs.core/RangedIterator";
+
+cljs.core.RangedIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/RangedIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/RangedIterator.
+ */
+cljs.core.__GT_RangedIterator = (function cljs$core$__GT_RangedIterator(i,base,arr,v,start,end){
+return (new cljs.core.RangedIterator(i,base,arr,v,start,end));
+});
+
+cljs.core.ranged_iterator = (function cljs$core$ranged_iterator(v,start,end){
+var i = start;
+return (new cljs.core.RangedIterator(i,(i - (i % (32))),(((start < cljs.core.count(v)))?cljs.core.unchecked_array_for(v,i):null),v,start,end));
+});
+cljs.core.pv_reduce = (function cljs$core$pv_reduce(var_args){
+var G__11571 = arguments.length;
+switch (G__11571) {
+case 4:
+return cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 5:
+return cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$4 = (function (pv,f,start,end){
+if((start < end)){
+return cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$5(pv,f,cljs.core.nth.cljs$core$IFn$_invoke$arity$2(pv,start),(start + (1)),end);
+} else {
+return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
+}
+});
+
+cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$5 = (function (pv,f,init,start,end){
+var acc = init;
+var i = start;
+var arr = cljs.core.unchecked_array_for(pv,start);
+while(true){
+if((i < end)){
+var j = (i & (31));
+var arr__$1 = (((j === (0)))?cljs.core.unchecked_array_for(pv,i):arr);
+var nacc = (function (){var G__11572 = acc;
+var G__11573 = (arr__$1[j]);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11572,G__11573) : f.call(null,G__11572,G__11573));
+})();
+if(cljs.core.reduced_QMARK_(nacc)){
+return cljs.core.deref(nacc);
+} else {
+var G__11575 = nacc;
+var G__11576 = (i + (1));
+var G__11577 = arr__$1;
+acc = G__11575;
+i = G__11576;
+arr = G__11577;
+continue;
+}
+} else {
+return acc;
+}
+break;
+}
+});
+
+cljs.core.pv_reduce.cljs$lang$maxFixedArity = 5;
+
+
+
+
+
+
+
+
+/**
+ * Marker protocol
+ * @interface
+ */
+cljs.core.APersistentVector = function(){};
+
+
+/**
+* @constructor
+ * @implements {cljs.core.APersistentVector}
+ * @implements {cljs.core.IIndexed}
+ * @implements {cljs.core.IVector}
+ * @implements {cljs.core.IReversible}
+ * @implements {cljs.core.IKVReduce}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEditableCollection}
+ * @implements {cljs.core.IFind}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IStack}
+ * @implements {cljs.core.IIterable}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IAssociative}
+ * @implements {cljs.core.ILookup}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.PersistentVector = (function (meta,cnt,shift,root,tail,__hash){
+this.meta = meta;
+this.cnt = cnt;
+this.shift = shift;
+this.root = root;
+this.tail = tail;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 167666463;
+this.cljs$lang$protocol_mask$partition1$ = 139268;
+});
+cljs.core.PersistentVector.prototype.cljs$core$IFind$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentVector.prototype.cljs$core$IFind$_find$arity$2 = (function (coll,n){
+var self__ = this;
+var coll__$1 = this;
+if(((((0) <= n)) && ((n < self__.cnt)))){
+return (new cljs.core.MapEntry(n,(cljs.core.unchecked_array_for(coll__$1,n)[(n & (31))]),null));
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentVector.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentVector.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentVector.prototype.indexOf = (function() {
+var G__11584 = null;
+var G__11584__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11584__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11584 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11584__1.call(this,x);
+case 2:
+return G__11584__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11584.cljs$core$IFn$_invoke$arity$1 = G__11584__1;
+G__11584.cljs$core$IFn$_invoke$arity$2 = G__11584__2;
+return G__11584;
+})()
+;
+
+cljs.core.PersistentVector.prototype.lastIndexOf = (function() {
+var G__11585 = null;
+var G__11585__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11585__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11585 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11585__1.call(this,x);
+case 2:
+return G__11585__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11585.cljs$core$IFn$_invoke$arity$1 = G__11585__1;
+G__11585.cljs$core$IFn$_invoke$arity$2 = G__11585__2;
+return G__11585;
+})()
+;
+
+cljs.core.PersistentVector.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ILookup$_lookup$arity$3(null,k,null);
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
+var self__ = this;
+var coll__$1 = this;
+if(typeof k === 'number'){
+return coll__$1.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+} else {
+return not_found;
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (v,f,init){
+var self__ = this;
+var v__$1 = this;
+var i = (0);
+var init__$1 = init;
+while(true){
+if((i < self__.cnt)){
+var arr = cljs.core.unchecked_array_for(v__$1,i);
+var len = arr.length;
+var init__$2 = (function (){var j = (0);
+var init__$2 = init__$1;
+while(true){
+if((j < len)){
+var init__$3 = (function (){var G__11579 = init__$2;
+var G__11580 = (j + i);
+var G__11581 = (arr[j]);
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11579,G__11580,G__11581) : f.call(null,G__11579,G__11580,G__11581));
+})();
+if(cljs.core.reduced_QMARK_(init__$3)){
+return init__$3;
+} else {
+var G__11586 = (j + (1));
+var G__11587 = init__$3;
+j = G__11586;
+init__$2 = G__11587;
+continue;
+}
+} else {
+return init__$2;
+}
+break;
+}
+})();
+if(cljs.core.reduced_QMARK_(init__$2)){
+return cljs.core.deref(init__$2);
+} else {
+var G__11588 = (i + len);
+var G__11589 = init__$2;
+i = G__11588;
+init__$1 = G__11589;
+continue;
+}
+} else {
+return init__$1;
+}
+break;
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$APersistentVector$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentVector.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,n){
+var self__ = this;
+var coll__$1 = this;
+return (cljs.core.array_for(coll__$1,n)[(n & (31))]);
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,n,not_found){
+var self__ = this;
+var coll__$1 = this;
+if(((((0) <= n)) && ((n < self__.cnt)))){
+return (cljs.core.unchecked_array_for(coll__$1,n)[(n & (31))]);
+} else {
+return not_found;
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (coll,n,val){
+var self__ = this;
+var coll__$1 = this;
+if(((((0) <= n)) && ((n < self__.cnt)))){
+if((cljs.core.tail_off(coll__$1) <= n)){
+var new_tail = cljs.core.aclone(self__.tail);
+(new_tail[(n & (31))] = val);
+
+return (new cljs.core.PersistentVector(self__.meta,self__.cnt,self__.shift,self__.root,new_tail,null));
+} else {
+return (new cljs.core.PersistentVector(self__.meta,self__.cnt,self__.shift,cljs.core.do_assoc(coll__$1,self__.shift,self__.root,n,val),self__.tail,null));
+}
+} else {
+if((n === self__.cnt)){
+return coll__$1.cljs$core$ICollection$_conj$arity$2(null,val);
+} else {
+throw (new Error(["Index ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(n)," out of bounds [0,",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.cnt),"]"].join('')));
+
+}
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return cljs.core.ranged_iterator(this$__$1,(0),self__.cnt);
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.PersistentVector(self__.meta,self__.cnt,self__.shift,self__.root,self__.tail,self__.__hash));
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.cnt;
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt > (0))){
+return coll__$1.cljs$core$IIndexed$_nth$arity$2(null,(self__.cnt - (1)));
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt === (0))){
+throw (new Error("Can't pop empty vector"));
+} else {
+if(((1) === self__.cnt)){
+return cljs.core._with_meta(cljs.core.PersistentVector.EMPTY,self__.meta);
+} else {
+if(((1) < (self__.cnt - cljs.core.tail_off(coll__$1)))){
+return (new cljs.core.PersistentVector(self__.meta,(self__.cnt - (1)),self__.shift,self__.root,self__.tail.slice((0),(-1)),null));
+} else {
+var new_tail = cljs.core.unchecked_array_for(coll__$1,(self__.cnt - (2)));
+var nr = cljs.core.pop_tail(coll__$1,self__.shift,self__.root);
+var new_root = (((nr == null))?cljs.core.PersistentVector.EMPTY_NODE:nr);
+var cnt_1 = (self__.cnt - (1));
+if(((((5) < self__.shift)) && ((cljs.core.pv_aget(new_root,(1)) == null)))){
+return (new cljs.core.PersistentVector(self__.meta,cnt_1,(self__.shift - (5)),cljs.core.pv_aget(new_root,(0)),new_tail,null));
+} else {
+return (new cljs.core.PersistentVector(self__.meta,cnt_1,self__.shift,new_root,new_tail,null));
+}
+
+}
+}
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt > (0))){
+return (new cljs.core.RSeq(coll__$1,(self__.cnt - (1)),null));
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+if((other instanceof cljs.core.PersistentVector)){
+if((self__.cnt === cljs.core.count(other))){
+var me_iter = coll__$1.cljs$core$IIterable$_iterator$arity$1(null);
+var you_iter = cljs.core._iterator(other);
+while(true){
+if(me_iter.hasNext()){
+var x = me_iter.next();
+var y = you_iter.next();
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y)){
+continue;
+} else {
+return false;
+}
+} else {
+return true;
+}
+break;
+}
+} else {
+return false;
+}
+} else {
+return cljs.core.equiv_sequential(coll__$1,other);
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.TransientVector(self__.cnt,self__.shift,cljs.core.tv_editable_root(self__.root),cljs.core.tv_editable_tail(self__.tail)));
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.PersistentVector.EMPTY,self__.meta);
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (v,f){
+var self__ = this;
+var v__$1 = this;
+return cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$4(v__$1,f,(0),self__.cnt);
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (v,f,init){
+var self__ = this;
+var v__$1 = this;
+var i = (0);
+var init__$1 = init;
+while(true){
+if((i < self__.cnt)){
+var arr = cljs.core.unchecked_array_for(v__$1,i);
+var len = arr.length;
+var init__$2 = (function (){var j = (0);
+var init__$2 = init__$1;
+while(true){
+if((j < len)){
+var init__$3 = (function (){var G__11582 = init__$2;
+var G__11583 = (arr[j]);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11582,G__11583) : f.call(null,G__11582,G__11583));
+})();
+if(cljs.core.reduced_QMARK_(init__$3)){
+return init__$3;
+} else {
+var G__11590 = (j + (1));
+var G__11591 = init__$3;
+j = G__11590;
+init__$2 = G__11591;
+continue;
+}
+} else {
+return init__$2;
+}
+break;
+}
+})();
+if(cljs.core.reduced_QMARK_(init__$2)){
+return cljs.core.deref(init__$2);
+} else {
+var G__11592 = (i + len);
+var G__11593 = init__$2;
+i = G__11592;
+init__$1 = G__11593;
+continue;
+}
+} else {
+return init__$1;
+}
+break;
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
+var self__ = this;
+var coll__$1 = this;
+if(typeof k === 'number'){
+return coll__$1.cljs$core$IVector$_assoc_n$arity$3(null,k,v);
+} else {
+throw (new Error("Vector's key for assoc must be a number."));
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+if(cljs.core.integer_QMARK_(k)){
+return ((((0) <= k)) && ((k < self__.cnt)));
+} else {
+return false;
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt === (0))){
+return null;
+} else {
+if((self__.cnt <= (32))){
+return (new cljs.core.IndexedSeq(self__.tail,(0),null));
+} else {
+return cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(coll__$1,cljs.core.first_array_for_longvec(coll__$1),(0),(0));
+
+}
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentVector(meta__$1,self__.cnt,self__.shift,self__.root,self__.tail,self__.__hash));
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+if(((self__.cnt - cljs.core.tail_off(coll__$1)) < (32))){
+var len = self__.tail.length;
+var new_tail = (new Array((len + (1))));
+var n__8769__auto___11594 = len;
+var i_11595 = (0);
+while(true){
+if((i_11595 < n__8769__auto___11594)){
+(new_tail[i_11595] = (self__.tail[i_11595]));
+
+var G__11596 = (i_11595 + (1));
+i_11595 = G__11596;
+continue;
+} else {
+}
+break;
+}
+
+(new_tail[len] = o);
+
+return (new cljs.core.PersistentVector(self__.meta,(self__.cnt + (1)),self__.shift,self__.root,new_tail,null));
+} else {
+var root_overflow_QMARK_ = ((self__.cnt >>> (5)) > ((1) << self__.shift));
+var new_shift = ((root_overflow_QMARK_)?(self__.shift + (5)):self__.shift);
+var new_root = ((root_overflow_QMARK_)?(function (){var n_r = cljs.core.pv_fresh_node(null);
+cljs.core.pv_aset(n_r,(0),self__.root);
+
+cljs.core.pv_aset(n_r,(1),cljs.core.new_path(null,self__.shift,(new cljs.core.VectorNode(null,self__.tail))));
+
+return n_r;
+})():cljs.core.push_tail(coll__$1,self__.shift,self__.root,(new cljs.core.VectorNode(null,self__.tail))));
+return (new cljs.core.PersistentVector(self__.meta,(self__.cnt + (1)),new_shift,new_root,[o],null));
+}
+});
+
+cljs.core.PersistentVector.prototype.call = (function() {
+var G__11597 = null;
+var G__11597__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+var G__11597__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+G__11597 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__11597__2.call(this,self__,k);
+case 3:
+return G__11597__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11597.cljs$core$IFn$_invoke$arity$2 = G__11597__2;
+G__11597.cljs$core$IFn$_invoke$arity$3 = G__11597__3;
+return G__11597;
+})()
+;
+
+cljs.core.PersistentVector.prototype.apply = (function (self__,args11578){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11578)));
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+
+cljs.core.PersistentVector.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"cnt","cnt",1924510325,null),new cljs.core.Symbol(null,"shift","shift",-1657295705,null),new cljs.core.Symbol(null,"root","root",1191874074,null),new cljs.core.Symbol(null,"tail","tail",494507963,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.PersistentVector.cljs$lang$type = true;
+
+cljs.core.PersistentVector.cljs$lang$ctorStr = "cljs.core/PersistentVector";
+
+cljs.core.PersistentVector.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentVector");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentVector.
+ */
+cljs.core.__GT_PersistentVector = (function cljs$core$__GT_PersistentVector(meta,cnt,shift,root,tail,__hash){
+return (new cljs.core.PersistentVector(meta,cnt,shift,root,tail,__hash));
+});
+
+cljs.core.PersistentVector.EMPTY_NODE = (new cljs.core.VectorNode(null,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]));
+cljs.core.PersistentVector.EMPTY = (new cljs.core.PersistentVector(null,(0),(5),cljs.core.PersistentVector.EMPTY_NODE,[],cljs.core.empty_ordered_hash));
+cljs.core.PersistentVector.fromArray = (function (xs,no_clone){
+var l = xs.length;
+var xs__$1 = ((no_clone)?xs:cljs.core.aclone(xs));
+if((l < (32))){
+return (new cljs.core.PersistentVector(null,l,(5),cljs.core.PersistentVector.EMPTY_NODE,xs__$1,null));
+} else {
+var node = xs__$1.slice((0),(32));
+var v = (new cljs.core.PersistentVector(null,(32),(5),cljs.core.PersistentVector.EMPTY_NODE,node,null));
+var i = (32);
+var out = v.cljs$core$IEditableCollection$_as_transient$arity$1(null);
+while(true){
+if((i < l)){
+var G__11598 = (i + (1));
+var G__11599 = cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(out,(xs__$1[i]));
+i = G__11598;
+out = G__11599;
+continue;
+} else {
+return cljs.core.persistent_BANG_(out);
+}
+break;
+}
+}
+});
+var G__11600_11603 = cljs.core.PersistentVector.prototype;
+var G__11601_11604 = cljs.core.ITER_SYMBOL;
+var G__11602_11605 = ((function (G__11600_11603,G__11601_11604){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11600_11603,G__11601_11604))
+;
+goog.object.set(G__11600_11603,G__11601_11604,G__11602_11605);
+/**
+ * Creates a new vector containing the contents of coll. JavaScript arrays
+ * will be aliased and should not be modified.
+ */
+cljs.core.vec = (function cljs$core$vec(coll){
+if(cljs.core.map_entry_QMARK_(coll)){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.key(coll),cljs.core.val(coll)], null);
+} else {
+if(cljs.core.vector_QMARK_(coll)){
+return cljs.core.with_meta(coll,null);
+} else {
+if(cljs.core.array_QMARK_(coll)){
+return cljs.core.PersistentVector.fromArray(coll,true);
+} else {
+return cljs.core._persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj_BANG_,cljs.core._as_transient(cljs.core.PersistentVector.EMPTY),coll));
+
+}
+}
+}
+});
+/**
+ * Creates a new vector containing the args.
+ */
+cljs.core.vector = (function cljs$core$vector(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___11607 = arguments.length;
+var i__9001__auto___11608 = (0);
+while(true){
+if((i__9001__auto___11608 < len__9000__auto___11607)){
+args__9010__auto__.push((arguments[i__9001__auto___11608]));
+
+var G__11609 = (i__9001__auto___11608 + (1));
+i__9001__auto___11608 = G__11609;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.vector.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.vector.cljs$core$IFn$_invoke$arity$variadic = (function (args){
+if((((args instanceof cljs.core.IndexedSeq)) && ((args.i === (0))))){
+return cljs.core.PersistentVector.fromArray(args.arr,true);
+} else {
+return cljs.core.vec(args);
+}
+});
+
+cljs.core.vector.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.vector.cljs$lang$applyTo = (function (seq11606){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq11606));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ASeq}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IChunkedNext}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.IChunkedSeq}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.ChunkedSeq = (function (vec,node,i,off,meta,__hash){
+this.vec = vec;
+this.node = node;
+this.i = i;
+this.off = off;
+this.meta = meta;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 32375020;
+this.cljs$lang$protocol_mask$partition1$ = 1536;
+});
+cljs.core.ChunkedSeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.ChunkedSeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.ChunkedSeq.prototype.indexOf = (function() {
+var G__11610 = null;
+var G__11610__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11610__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11610 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11610__1.call(this,x);
+case 2:
+return G__11610__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11610.cljs$core$IFn$_invoke$arity$1 = G__11610__1;
+G__11610.cljs$core$IFn$_invoke$arity$2 = G__11610__2;
+return G__11610;
+})()
+;
+
+cljs.core.ChunkedSeq.prototype.lastIndexOf = (function() {
+var G__11611 = null;
+var G__11611__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11611__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11611 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11611__1.call(this,x);
+case 2:
+return G__11611__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11611.cljs$core$IFn$_invoke$arity$1 = G__11611__1;
+G__11611.cljs$core$IFn$_invoke$arity$2 = G__11611__2;
+return G__11611;
+})()
+;
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if(((self__.off + (1)) < self__.node.length)){
+var s = cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(self__.vec,self__.node,self__.i,(self__.off + (1)));
+if((s == null)){
+return null;
+} else {
+return s;
+}
+} else {
+return coll__$1.cljs$core$IChunkedNext$_chunked_next$arity$1(null);
+}
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.List.EMPTY;
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$4(self__.vec,f,(self__.i + self__.off),cljs.core.count(self__.vec));
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$5(self__.vec,f,start,(self__.i + self__.off),cljs.core.count(self__.vec));
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (self__.node[self__.off]);
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if(((self__.off + (1)) < self__.node.length)){
+var s = cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(self__.vec,self__.node,self__.i,(self__.off + (1)));
+if((s == null)){
+return cljs.core.List.EMPTY;
+} else {
+return s;
+}
+} else {
+return coll__$1.cljs$core$IChunkedSeq$_chunked_rest$arity$1(null);
+}
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IChunkedSeq$_chunked_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.array_chunk.cljs$core$IFn$_invoke$arity$2(self__.node,self__.off);
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IChunkedSeq$_chunked_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var end = (self__.i + self__.node.length);
+if((end < cljs.core._count(self__.vec))){
+return cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(self__.vec,cljs.core.unchecked_array_for(self__.vec,end),end,(0));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,m){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$5(self__.vec,self__.node,self__.i,self__.off,m);
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IChunkedNext$_chunked_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var end = (self__.i + self__.node.length);
+if((end < cljs.core._count(self__.vec))){
+return cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(self__.vec,cljs.core.unchecked_array_for(self__.vec,end),end,(0));
+} else {
+return null;
+}
+});
+
+cljs.core.ChunkedSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"vec","vec",982683596,null),new cljs.core.Symbol(null,"node","node",-2073234571,null),new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.Symbol(null,"off","off",-2047994980,null),new cljs.core.Symbol(null,"meta","meta",-1154898805,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ChunkedSeq.cljs$lang$type = true;
+
+cljs.core.ChunkedSeq.cljs$lang$ctorStr = "cljs.core/ChunkedSeq";
+
+cljs.core.ChunkedSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ChunkedSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/ChunkedSeq.
+ */
+cljs.core.__GT_ChunkedSeq = (function cljs$core$__GT_ChunkedSeq(vec,node,i,off,meta,__hash){
+return (new cljs.core.ChunkedSeq(vec,node,i,off,meta,__hash));
+});
+
+var G__11612_11615 = cljs.core.ChunkedSeq.prototype;
+var G__11613_11616 = cljs.core.ITER_SYMBOL;
+var G__11614_11617 = ((function (G__11612_11615,G__11613_11616){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11612_11615,G__11613_11616))
+;
+goog.object.set(G__11612_11615,G__11613_11616,G__11614_11617);
+cljs.core.chunked_seq = (function cljs$core$chunked_seq(var_args){
+var G__11619 = arguments.length;
+switch (G__11619) {
+case 3:
+return cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 4:
+return cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 5:
+return cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$3 = (function (vec,i,off){
+return (new cljs.core.ChunkedSeq(vec,cljs.core.array_for(vec,i),i,off,null,null));
+});
+
+cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4 = (function (vec,node,i,off){
+return (new cljs.core.ChunkedSeq(vec,node,i,off,null,null));
+});
+
+cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$5 = (function (vec,node,i,off,meta){
+return (new cljs.core.ChunkedSeq(vec,node,i,off,meta,null));
+});
+
+cljs.core.chunked_seq.cljs$lang$maxFixedArity = 5;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IIndexed}
+ * @implements {cljs.core.IVector}
+ * @implements {cljs.core.IReversible}
+ * @implements {cljs.core.IKVReduce}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IFind}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IStack}
+ * @implements {cljs.core.IIterable}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IAssociative}
+ * @implements {cljs.core.ILookup}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.Subvec = (function (meta,v,start,end,__hash){
+this.meta = meta;
+this.v = v;
+this.start = start;
+this.end = end;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 167666463;
+this.cljs$lang$protocol_mask$partition1$ = 139264;
+});
+cljs.core.Subvec.prototype.cljs$core$IFind$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Subvec.prototype.cljs$core$IFind$_find$arity$2 = (function (coll,n){
+var self__ = this;
+var coll__$1 = this;
+if((n < (0))){
+return null;
+} else {
+var idx = (self__.start + n);
+if((idx < self__.end)){
+return (new cljs.core.MapEntry(n,cljs.core._lookup.cljs$core$IFn$_invoke$arity$2(self__.v,idx),null));
+} else {
+return null;
+}
+}
+});
+
+cljs.core.Subvec.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.Subvec.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.Subvec.prototype.indexOf = (function() {
+var G__11628 = null;
+var G__11628__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11628__2 = (function (x,start__$1){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start__$1);
+});
+G__11628 = function(x,start__$1){
+switch(arguments.length){
+case 1:
+return G__11628__1.call(this,x);
+case 2:
+return G__11628__2.call(this,x,start__$1);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11628.cljs$core$IFn$_invoke$arity$1 = G__11628__1;
+G__11628.cljs$core$IFn$_invoke$arity$2 = G__11628__2;
+return G__11628;
+})()
+;
+
+cljs.core.Subvec.prototype.lastIndexOf = (function() {
+var G__11629 = null;
+var G__11629__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11629__2 = (function (x,start__$1){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start__$1);
+});
+G__11629 = function(x,start__$1){
+switch(arguments.length){
+case 1:
+return G__11629__1.call(this,x);
+case 2:
+return G__11629__2.call(this,x,start__$1);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11629.cljs$core$IFn$_invoke$arity$1 = G__11629__1;
+G__11629.cljs$core$IFn$_invoke$arity$2 = G__11629__2;
+return G__11629;
+})()
+;
+
+cljs.core.Subvec.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ILookup$_lookup$arity$3(null,k,null);
+});
+
+cljs.core.Subvec.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
+var self__ = this;
+var coll__$1 = this;
+if(typeof k === 'number'){
+return coll__$1.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+} else {
+return not_found;
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (coll,f,init){
+var self__ = this;
+var coll__$1 = this;
+var i = self__.start;
+var j = (0);
+var init__$1 = init;
+while(true){
+if((i < self__.end)){
+var init__$2 = (function (){var G__11622 = init__$1;
+var G__11623 = j;
+var G__11624 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.v,i);
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11622,G__11623,G__11624) : f.call(null,G__11622,G__11623,G__11624));
+})();
+if(cljs.core.reduced_QMARK_(init__$2)){
+return cljs.core.deref(init__$2);
+} else {
+var G__11630 = (i + (1));
+var G__11631 = (j + (1));
+var G__11632 = init__$2;
+i = G__11630;
+j = G__11631;
+init__$1 = G__11632;
+continue;
+}
+} else {
+return init__$1;
+}
+break;
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,n){
+var self__ = this;
+var coll__$1 = this;
+if((((n < (0))) || ((self__.end <= (self__.start + n))))){
+return cljs.core.vector_index_out_of_bounds(n,(self__.end - self__.start));
+} else {
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.v,(self__.start + n));
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,n,not_found){
+var self__ = this;
+var coll__$1 = this;
+if((((n < (0))) || ((self__.end <= (self__.start + n))))){
+return not_found;
+} else {
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(self__.v,(self__.start + n),not_found);
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (coll,n,val){
+var self__ = this;
+var coll__$1 = this;
+var v_pos = (self__.start + n);
+if((((n < (0))) || (((self__.end + (1)) <= v_pos)))){
+throw (new Error(["Index ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(n)," out of bounds [0,",cljs.core.str.cljs$core$IFn$_invoke$arity$1(coll__$1.cljs$core$ICounted$_count$arity$1(null)),"]"].join('')));
+} else {
+return cljs.core.build_subvec(self__.meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.v,v_pos,val),self__.start,(function (){var x__8162__auto__ = self__.end;
+var y__8163__auto__ = (v_pos + (1));
+return ((x__8162__auto__ > y__8163__auto__) ? x__8162__auto__ : y__8163__auto__);
+})(),null);
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((((!((self__.v == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === self__.v.cljs$core$APersistentVector$))))?true:false):false)){
+return cljs.core.ranged_iterator(self__.v,self__.start,self__.end);
+} else {
+return cljs.core.seq_iter(coll__$1);
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.Subvec.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.Subvec(self__.meta,self__.v,self__.start,self__.end,self__.__hash));
+});
+
+cljs.core.Subvec.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (self__.end - self__.start);
+});
+
+cljs.core.Subvec.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.v,(self__.end - (1)));
+});
+
+cljs.core.Subvec.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.start === self__.end)){
+throw (new Error("Can't pop empty vector"));
+} else {
+return cljs.core.build_subvec(self__.meta,self__.v,self__.start,(self__.end - (1)),null);
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((!((self__.start === self__.end)))){
+return (new cljs.core.RSeq(coll__$1,((self__.end - self__.start) - (1)),null));
+} else {
+return null;
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.Subvec.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.PersistentVector.EMPTY,self__.meta);
+});
+
+cljs.core.Subvec.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+if((((!((self__.v == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === self__.v.cljs$core$APersistentVector$))))?true:false):false)){
+return cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$4(self__.v,f,self__.start,self__.end);
+} else {
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(coll__$1,f);
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,init){
+var self__ = this;
+var coll__$1 = this;
+if((((!((self__.v == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === self__.v.cljs$core$APersistentVector$))))?true:false):false)){
+return cljs.core.pv_reduce.cljs$core$IFn$_invoke$arity$5(self__.v,f,init,self__.start,self__.end);
+} else {
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3(coll__$1,f,init);
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,key,val){
+var self__ = this;
+var coll__$1 = this;
+if(typeof key === 'number'){
+return coll__$1.cljs$core$IVector$_assoc_n$arity$3(null,key,val);
+} else {
+throw (new Error("Subvec's key for assoc must be a number."));
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var subvec_seq = ((function (coll__$1){
+return (function cljs$core$subvec_seq(i){
+if((i === self__.end)){
+return null;
+} else {
+return cljs.core.cons(cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.v,i),(new cljs.core.LazySeq(null,((function (coll__$1){
+return (function (){
+return cljs$core$subvec_seq((i + (1)));
+});})(coll__$1))
+,null,null)));
+}
+});})(coll__$1))
+;
+return subvec_seq(self__.start);
+});
+
+cljs.core.Subvec.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.build_subvec(meta__$1,self__.v,self__.start,self__.end,self__.__hash);
+});
+
+cljs.core.Subvec.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.build_subvec(self__.meta,cljs.core._assoc_n(self__.v,self__.end,o),self__.start,(self__.end + (1)),null);
+});
+
+cljs.core.Subvec.prototype.call = (function() {
+var G__11633 = null;
+var G__11633__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+var G__11633__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+G__11633 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__11633__2.call(this,self__,k);
+case 3:
+return G__11633__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11633.cljs$core$IFn$_invoke$arity$2 = G__11633__2;
+G__11633.cljs$core$IFn$_invoke$arity$3 = G__11633__3;
+return G__11633;
+})()
+;
+
+cljs.core.Subvec.prototype.apply = (function (self__,args11621){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11621)));
+});
+
+cljs.core.Subvec.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+
+cljs.core.Subvec.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+
+cljs.core.Subvec.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"v","v",1661996586,null),new cljs.core.Symbol(null,"start","start",1285322546,null),new cljs.core.Symbol(null,"end","end",1372345569,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Subvec.cljs$lang$type = true;
+
+cljs.core.Subvec.cljs$lang$ctorStr = "cljs.core/Subvec";
+
+cljs.core.Subvec.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Subvec");
+});
+
+/**
+ * Positional factory function for cljs.core/Subvec.
+ */
+cljs.core.__GT_Subvec = (function cljs$core$__GT_Subvec(meta,v,start,end,__hash){
+return (new cljs.core.Subvec(meta,v,start,end,__hash));
+});
+
+var G__11634_11637 = cljs.core.Subvec.prototype;
+var G__11635_11638 = cljs.core.ITER_SYMBOL;
+var G__11636_11639 = ((function (G__11634_11637,G__11635_11638){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11634_11637,G__11635_11638))
+;
+goog.object.set(G__11634_11637,G__11635_11638,G__11636_11639);
+cljs.core.build_subvec = (function cljs$core$build_subvec(meta,v,start,end,__hash){
+while(true){
+if((v instanceof cljs.core.Subvec)){
+var G__11640 = meta;
+var G__11641 = v.v;
+var G__11642 = (v.start + start);
+var G__11643 = (v.start + end);
+var G__11644 = __hash;
+meta = G__11640;
+v = G__11641;
+start = G__11642;
+end = G__11643;
+__hash = G__11644;
+continue;
+} else {
+if(cljs.core.vector_QMARK_(v)){
+} else {
+throw (new Error("v must satisfy IVector"));
+}
+
+var c_11645 = cljs.core.count(v);
+if((((start < (0))) || ((end < (0))) || ((start > c_11645)) || ((end > c_11645)))){
+throw (new Error("Index out of bounds"));
+} else {
+}
+
+return (new cljs.core.Subvec(meta,v,start,end,__hash));
+}
+break;
+}
+});
+/**
+ * Returns a persistent vector of the items in vector from
+ * start (inclusive) to end (exclusive). If end is not supplied,
+ * defaults to (count vector). This operation is O(1) and very fast, as
+ * the resulting vector shares structure with the original and no
+ * trimming is done.
+ */
+cljs.core.subvec = (function cljs$core$subvec(var_args){
+var G__11647 = arguments.length;
+switch (G__11647) {
+case 2:
+return cljs.core.subvec.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.subvec.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.subvec.cljs$core$IFn$_invoke$arity$2 = (function (v,start){
+return cljs.core.subvec.cljs$core$IFn$_invoke$arity$3(v,start,cljs.core.count(v));
+});
+
+cljs.core.subvec.cljs$core$IFn$_invoke$arity$3 = (function (v,start,end){
+if((((!((start == null)))) && ((!((end == null)))))){
+} else {
+throw (new Error("Assert failed: (and (not (nil? start)) (not (nil? end)))"));
+}
+
+return cljs.core.build_subvec(null,v,(start | (0)),(end | (0)),null);
+});
+
+cljs.core.subvec.cljs$lang$maxFixedArity = 3;
+
+cljs.core.tv_ensure_editable = (function cljs$core$tv_ensure_editable(edit,node){
+if((edit === node.edit)){
+return node;
+} else {
+return (new cljs.core.VectorNode(edit,cljs.core.aclone(node.arr)));
+}
+});
+cljs.core.tv_editable_root = (function cljs$core$tv_editable_root(node){
+return (new cljs.core.VectorNode({},cljs.core.aclone(node.arr)));
+});
+cljs.core.tv_editable_tail = (function cljs$core$tv_editable_tail(tl){
+var ret = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
+cljs.core.array_copy(tl,(0),ret,(0),tl.length);
+
+return ret;
+});
+cljs.core.tv_push_tail = (function cljs$core$tv_push_tail(tv,level,parent,tail_node){
+var ret = cljs.core.tv_ensure_editable(tv.root.edit,parent);
+var subidx = (((tv.cnt - (1)) >>> level) & (31));
+cljs.core.pv_aset(ret,subidx,(((level === (5)))?tail_node:(function (){var child = cljs.core.pv_aget(ret,subidx);
+if((!((child == null)))){
+var G__11651 = tv;
+var G__11652 = (level - (5));
+var G__11653 = child;
+var G__11654 = tail_node;
+return (cljs.core.tv_push_tail.cljs$core$IFn$_invoke$arity$4 ? cljs.core.tv_push_tail.cljs$core$IFn$_invoke$arity$4(G__11651,G__11652,G__11653,G__11654) : cljs.core.tv_push_tail.call(null,G__11651,G__11652,G__11653,G__11654));
+} else {
+return cljs.core.new_path(tv.root.edit,(level - (5)),tail_node);
+}
+})()));
+
+return ret;
+});
+cljs.core.tv_pop_tail = (function cljs$core$tv_pop_tail(tv,level,node){
+var node__$1 = cljs.core.tv_ensure_editable(tv.root.edit,node);
+var subidx = (((tv.cnt - (2)) >>> level) & (31));
+if((level > (5))){
+var new_child = (function (){var G__11655 = tv;
+var G__11656 = (level - (5));
+var G__11657 = cljs.core.pv_aget(node__$1,subidx);
+return (cljs.core.tv_pop_tail.cljs$core$IFn$_invoke$arity$3 ? cljs.core.tv_pop_tail.cljs$core$IFn$_invoke$arity$3(G__11655,G__11656,G__11657) : cljs.core.tv_pop_tail.call(null,G__11655,G__11656,G__11657));
+})();
+if((((new_child == null)) && ((subidx === (0))))){
+return null;
+} else {
+cljs.core.pv_aset(node__$1,subidx,new_child);
+
+return node__$1;
+}
+} else {
+if((subidx === (0))){
+return null;
+} else {
+cljs.core.pv_aset(node__$1,subidx,null);
+
+return node__$1;
+
+}
+}
+});
+cljs.core.unchecked_editable_array_for = (function cljs$core$unchecked_editable_array_for(tv,i){
+if((i >= cljs.core.tail_off(tv))){
+return tv.tail;
+} else {
+var root = tv.root;
+var node = root;
+var level = tv.shift;
+while(true){
+if((level > (0))){
+var G__11658 = cljs.core.tv_ensure_editable(root.edit,cljs.core.pv_aget(node,((i >>> level) & (31))));
+var G__11659 = (level - (5));
+node = G__11658;
+level = G__11659;
+continue;
+} else {
+return node.arr;
+}
+break;
+}
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IIndexed}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ITransientCollection}
+ * @implements {cljs.core.ITransientVector}
+ * @implements {cljs.core.ITransientAssociative}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.TransientVector = (function (cnt,shift,root,tail){
+this.cnt = cnt;
+this.shift = shift;
+this.root = root;
+this.tail = tail;
+this.cljs$lang$protocol_mask$partition1$ = 88;
+this.cljs$lang$protocol_mask$partition0$ = 275;
+});
+cljs.core.TransientVector.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = (function (tcoll,o){
+var self__ = this;
+var tcoll__$1 = this;
+if(self__.root.edit){
+if(((self__.cnt - cljs.core.tail_off(tcoll__$1)) < (32))){
+(self__.tail[(self__.cnt & (31))] = o);
+
+self__.cnt = (self__.cnt + (1));
+
+return tcoll__$1;
+} else {
+var tail_node = (new cljs.core.VectorNode(self__.root.edit,self__.tail));
+var new_tail = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
+(new_tail[(0)] = o);
+
+self__.tail = new_tail;
+
+if(((self__.cnt >>> (5)) > ((1) << self__.shift))){
+var new_root_array = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
+var new_shift = (self__.shift + (5));
+(new_root_array[(0)] = self__.root);
+
+(new_root_array[(1)] = cljs.core.new_path(self__.root.edit,self__.shift,tail_node));
+
+self__.root = (new cljs.core.VectorNode(self__.root.edit,new_root_array));
+
+self__.shift = new_shift;
+
+self__.cnt = (self__.cnt + (1));
+
+return tcoll__$1;
+} else {
+var new_root = cljs.core.tv_push_tail(tcoll__$1,self__.shift,self__.root,tail_node);
+self__.root = new_root;
+
+self__.cnt = (self__.cnt + (1));
+
+return tcoll__$1;
+}
+}
+} else {
+throw (new Error("conj! after persistent!"));
+}
+});
+
+cljs.core.TransientVector.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = (function (tcoll){
+var self__ = this;
+var tcoll__$1 = this;
+if(self__.root.edit){
+self__.root.edit = null;
+
+var len = (self__.cnt - cljs.core.tail_off(tcoll__$1));
+var trimmed_tail = (new Array(len));
+cljs.core.array_copy(self__.tail,(0),trimmed_tail,(0),len);
+
+return (new cljs.core.PersistentVector(null,self__.cnt,self__.shift,self__.root,trimmed_tail,null));
+} else {
+throw (new Error("persistent! called twice"));
+}
+});
+
+cljs.core.TransientVector.prototype.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 = (function (tcoll,key,val){
+var self__ = this;
+var tcoll__$1 = this;
+if(typeof key === 'number'){
+return tcoll__$1.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3(null,key,val);
+} else {
+throw (new Error("TransientVector's key for assoc! must be a number."));
+}
+});
+
+cljs.core.TransientVector.prototype.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3 = (function (tcoll,n,val){
+var self__ = this;
+var tcoll__$1 = this;
+if(self__.root.edit){
+if(((((0) <= n)) && ((n < self__.cnt)))){
+if((cljs.core.tail_off(tcoll__$1) <= n)){
+(self__.tail[(n & (31))] = val);
+
+return tcoll__$1;
+} else {
+var new_root = (function (){var fexpr__11661 = ((function (tcoll__$1){
+return (function cljs$core$go(level,node){
+var node__$1 = cljs.core.tv_ensure_editable(self__.root.edit,node);
+if((level === (0))){
+cljs.core.pv_aset(node__$1,(n & (31)),val);
+
+return node__$1;
+} else {
+var subidx = ((n >>> level) & (31));
+cljs.core.pv_aset(node__$1,subidx,cljs$core$go((level - (5)),cljs.core.pv_aget(node__$1,subidx)));
+
+return node__$1;
+}
+});})(tcoll__$1))
+;
+return fexpr__11661(self__.shift,self__.root);
+})();
+self__.root = new_root;
+
+return tcoll__$1;
+}
+} else {
+if((n === self__.cnt)){
+return tcoll__$1.cljs$core$ITransientCollection$_conj_BANG_$arity$2(null,val);
+} else {
+throw (new Error(["Index ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(n)," out of bounds for TransientVector of length",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.cnt)].join('')));
+
+}
+}
+} else {
+throw (new Error("assoc! after persistent!"));
+}
+});
+
+cljs.core.TransientVector.prototype.cljs$core$ITransientVector$_pop_BANG_$arity$1 = (function (tcoll){
+var self__ = this;
+var tcoll__$1 = this;
+if(self__.root.edit){
+if((self__.cnt === (0))){
+throw (new Error("Can't pop empty vector"));
+} else {
+if(((1) === self__.cnt)){
+self__.cnt = (0);
+
+return tcoll__$1;
+} else {
+if((((self__.cnt - (1)) & (31)) > (0))){
+self__.cnt = (self__.cnt - (1));
+
+return tcoll__$1;
+} else {
+var new_tail = cljs.core.unchecked_editable_array_for(tcoll__$1,(self__.cnt - (2)));
+var new_root = (function (){var nr = cljs.core.tv_pop_tail(tcoll__$1,self__.shift,self__.root);
+if((!((nr == null)))){
+return nr;
+} else {
+return (new cljs.core.VectorNode(self__.root.edit,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]));
+}
+})();
+if(((((5) < self__.shift)) && ((cljs.core.pv_aget(new_root,(1)) == null)))){
+var new_root__$1 = cljs.core.tv_ensure_editable(self__.root.edit,cljs.core.pv_aget(new_root,(0)));
+self__.root = new_root__$1;
+
+self__.shift = (self__.shift - (5));
+
+self__.cnt = (self__.cnt - (1));
+
+self__.tail = new_tail;
+
+return tcoll__$1;
+} else {
+self__.root = new_root;
+
+self__.cnt = (self__.cnt - (1));
+
+self__.tail = new_tail;
+
+return tcoll__$1;
+}
+
+}
+}
+}
+} else {
+throw (new Error("pop! after persistent!"));
+}
+});
+
+cljs.core.TransientVector.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if(self__.root.edit){
+return self__.cnt;
+} else {
+throw (new Error("count after persistent!"));
+}
+});
+
+cljs.core.TransientVector.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,n){
+var self__ = this;
+var coll__$1 = this;
+if(self__.root.edit){
+return (cljs.core.array_for(coll__$1,n)[(n & (31))]);
+} else {
+throw (new Error("nth after persistent!"));
+}
+});
+
+cljs.core.TransientVector.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,n,not_found){
+var self__ = this;
+var coll__$1 = this;
+if(((((0) <= n)) && ((n < self__.cnt)))){
+return coll__$1.cljs$core$IIndexed$_nth$arity$2(null,n);
+} else {
+return not_found;
+}
+});
+
+cljs.core.TransientVector.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ILookup$_lookup$arity$3(null,k,null);
+});
+
+cljs.core.TransientVector.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
+var self__ = this;
+var coll__$1 = this;
+if(typeof k === 'number'){
+return coll__$1.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+} else {
+return not_found;
+}
+});
+
+cljs.core.TransientVector.prototype.call = (function() {
+var G__11662 = null;
+var G__11662__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+var G__11662__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+G__11662 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__11662__2.call(this,self__,k);
+case 3:
+return G__11662__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11662.cljs$core$IFn$_invoke$arity$2 = G__11662__2;
+G__11662.cljs$core$IFn$_invoke$arity$3 = G__11662__3;
+return G__11662;
+})()
+;
+
+cljs.core.TransientVector.prototype.apply = (function (self__,args11660){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11660)));
+});
+
+cljs.core.TransientVector.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+
+cljs.core.TransientVector.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.TransientVector.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"cnt","cnt",1924510325,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"shift","shift",-1657295705,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"root","root",1191874074,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"tail","tail",494507963,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.TransientVector.cljs$lang$type = true;
+
+cljs.core.TransientVector.cljs$lang$ctorStr = "cljs.core/TransientVector";
+
+cljs.core.TransientVector.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/TransientVector");
+});
+
+/**
+ * Positional factory function for cljs.core/TransientVector.
+ */
+cljs.core.__GT_TransientVector = (function cljs$core$__GT_TransientVector(cnt,shift,root,tail){
+return (new cljs.core.TransientVector(cnt,shift,root,tail));
+});
+
+
+/**
+* @constructor
+*/
+cljs.core.PersistentQueueIter = (function (fseq,riter){
+this.fseq = fseq;
+this.riter = riter;
+});
+cljs.core.PersistentQueueIter.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+var or__7806__auto__ = (((!((self__.fseq == null)))) && (cljs.core.seq(self__.fseq)));
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+var and__7791__auto__ = (!((self__.riter == null)));
+if(and__7791__auto__){
+return self__.riter.hasNext();
+} else {
+return and__7791__auto__;
+}
+}
+});
+
+cljs.core.PersistentQueueIter.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+if((!((self__.fseq == null)))){
+var ret = cljs.core.first(self__.fseq);
+self__.fseq = cljs.core.next(self__.fseq);
+
+return ret;
+} else {
+if((((!((self__.riter == null)))) && (self__.riter.hasNext()))){
+return self__.riter.next();
+} else {
+throw (new Error("No such element"));
+
+}
+}
+});
+
+cljs.core.PersistentQueueIter.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.PersistentQueueIter.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"fseq","fseq",-1466412450,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"riter","riter",-237834262,null)], null);
+});
+
+cljs.core.PersistentQueueIter.cljs$lang$type = true;
+
+cljs.core.PersistentQueueIter.cljs$lang$ctorStr = "cljs.core/PersistentQueueIter";
+
+cljs.core.PersistentQueueIter.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentQueueIter");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentQueueIter.
+ */
+cljs.core.__GT_PersistentQueueIter = (function cljs$core$__GT_PersistentQueueIter(fseq,riter){
+return (new cljs.core.PersistentQueueIter(fseq,riter));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+*/
+cljs.core.PersistentQueueSeq = (function (meta,front,rear,__hash){
+this.meta = meta;
+this.front = front;
+this.rear = rear;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 31850700;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.PersistentQueueSeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentQueueSeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentQueueSeq.prototype.indexOf = (function() {
+var G__11663 = null;
+var G__11663__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11663__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11663 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11663__1.call(this,x);
+case 2:
+return G__11663__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11663.cljs$core$IFn$_invoke$arity$1 = G__11663__1;
+G__11663.cljs$core$IFn$_invoke$arity$2 = G__11663__2;
+return G__11663;
+})()
+;
+
+cljs.core.PersistentQueueSeq.prototype.lastIndexOf = (function() {
+var G__11664 = null;
+var G__11664__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11664__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11664 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11664__1.call(this,x);
+case 2:
+return G__11664__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11664.cljs$core$IFn$_invoke$arity$1 = G__11664__1;
+G__11664.cljs$core$IFn$_invoke$arity$2 = G__11664__2;
+return G__11664;
+})()
+;
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var temp__4655__auto__ = cljs.core.next(self__.front);
+if(temp__4655__auto__){
+var f1 = temp__4655__auto__;
+return (new cljs.core.PersistentQueueSeq(self__.meta,f1,self__.rear,null));
+} else {
+if((!((self__.rear == null)))){
+return (new cljs.core.PersistentQueueSeq(self__.meta,self__.rear,null,null));
+} else {
+return null;
+}
+}
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.first(self__.front);
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var temp__4655__auto__ = cljs.core.next(self__.front);
+if(temp__4655__auto__){
+var f1 = temp__4655__auto__;
+return (new cljs.core.PersistentQueueSeq(self__.meta,f1,self__.rear,null));
+} else {
+if((self__.rear == null)){
+return coll__$1.cljs$core$IEmptyableCollection$_empty$arity$1(null);
+} else {
+return (new cljs.core.PersistentQueueSeq(self__.meta,self__.rear,null,null));
+}
+}
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentQueueSeq(meta__$1,self__.front,self__.rear,self__.__hash));
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.PersistentQueueSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"front","front",117022539,null),new cljs.core.Symbol(null,"rear","rear",-900164830,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.PersistentQueueSeq.cljs$lang$type = true;
+
+cljs.core.PersistentQueueSeq.cljs$lang$ctorStr = "cljs.core/PersistentQueueSeq";
+
+cljs.core.PersistentQueueSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentQueueSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentQueueSeq.
+ */
+cljs.core.__GT_PersistentQueueSeq = (function cljs$core$__GT_PersistentQueueSeq(meta,front,rear,__hash){
+return (new cljs.core.PersistentQueueSeq(meta,front,rear,__hash));
+});
+
+var G__11665_11668 = cljs.core.PersistentQueueSeq.prototype;
+var G__11666_11669 = cljs.core.ITER_SYMBOL;
+var G__11667_11670 = ((function (G__11665_11668,G__11666_11669){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11665_11668,G__11666_11669))
+;
+goog.object.set(G__11665_11668,G__11666_11669,G__11667_11670);
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IStack}
+ * @implements {cljs.core.IIterable}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+*/
+cljs.core.PersistentQueue = (function (meta,count,front,rear,__hash){
+this.meta = meta;
+this.count = count;
+this.front = front;
+this.rear = rear;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition1$ = 139264;
+this.cljs$lang$protocol_mask$partition0$ = 31858766;
+});
+cljs.core.PersistentQueue.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentQueue.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentQueue.prototype.indexOf = (function() {
+var G__11671 = null;
+var G__11671__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11671__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11671 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11671__1.call(this,x);
+case 2:
+return G__11671__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11671.cljs$core$IFn$_invoke$arity$1 = G__11671__1;
+G__11671.cljs$core$IFn$_invoke$arity$2 = G__11671__2;
+return G__11671;
+})()
+;
+
+cljs.core.PersistentQueue.prototype.lastIndexOf = (function() {
+var G__11672 = null;
+var G__11672__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(self__.count.cljs$core$IFn$_invoke$arity$1 ? self__.count.cljs$core$IFn$_invoke$arity$1(coll) : self__.count.call(null,coll)));
+});
+var G__11672__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11672 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11672__1.call(this,x);
+case 2:
+return G__11672__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11672.cljs$core$IFn$_invoke$arity$1 = G__11672__1;
+G__11672.cljs$core$IFn$_invoke$arity$2 = G__11672__2;
+return G__11672;
+})()
+;
+
+cljs.core.PersistentQueue.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentQueueIter(self__.front,cljs.core._iterator(self__.rear)));
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentQueue(self__.meta,self__.count,self__.front,self__.rear,self__.__hash));
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.count;
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.first(self__.front);
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if(cljs.core.truth_(self__.front)){
+var temp__4655__auto__ = cljs.core.next(self__.front);
+if(temp__4655__auto__){
+var f1 = temp__4655__auto__;
+return (new cljs.core.PersistentQueue(self__.meta,(self__.count - (1)),f1,self__.rear,null));
+} else {
+return (new cljs.core.PersistentQueue(self__.meta,(self__.count - (1)),cljs.core.seq(self__.rear),cljs.core.PersistentVector.EMPTY,null));
+}
+} else {
+return coll__$1;
+}
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.PersistentQueue.EMPTY,self__.meta);
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.first(self__.front);
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.rest(cljs.core.seq(coll__$1));
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var rear__$1 = cljs.core.seq(self__.rear);
+if(cljs.core.truth_((function (){var or__7806__auto__ = self__.front;
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return rear__$1;
+}
+})())){
+return (new cljs.core.PersistentQueueSeq(null,self__.front,cljs.core.seq(rear__$1),null));
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentQueue(meta__$1,self__.count,self__.front,self__.rear,self__.__hash));
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+if(cljs.core.truth_(self__.front)){
+return (new cljs.core.PersistentQueue(self__.meta,(self__.count + (1)),self__.front,cljs.core.conj.cljs$core$IFn$_invoke$arity$2((function (){var or__7806__auto__ = self__.rear;
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.PersistentVector.EMPTY;
+}
+})(),o),null));
+} else {
+return (new cljs.core.PersistentQueue(self__.meta,(self__.count + (1)),cljs.core.conj.cljs$core$IFn$_invoke$arity$2(self__.front,o),cljs.core.PersistentVector.EMPTY,null));
+}
+});
+
+cljs.core.PersistentQueue.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"count","count",-514511684,null),new cljs.core.Symbol(null,"front","front",117022539,null),new cljs.core.Symbol(null,"rear","rear",-900164830,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.PersistentQueue.cljs$lang$type = true;
+
+cljs.core.PersistentQueue.cljs$lang$ctorStr = "cljs.core/PersistentQueue";
+
+cljs.core.PersistentQueue.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentQueue");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentQueue.
+ */
+cljs.core.__GT_PersistentQueue = (function cljs$core$__GT_PersistentQueue(meta,count,front,rear,__hash){
+return (new cljs.core.PersistentQueue(meta,count,front,rear,__hash));
+});
+
+cljs.core.PersistentQueue.EMPTY = (new cljs.core.PersistentQueue(null,(0),null,cljs.core.PersistentVector.EMPTY,cljs.core.empty_ordered_hash));
+var G__11673_11676 = cljs.core.PersistentQueue.prototype;
+var G__11674_11677 = cljs.core.ITER_SYMBOL;
+var G__11675_11678 = ((function (G__11673_11676,G__11674_11677){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11673_11676,G__11674_11677))
+;
+goog.object.set(G__11673_11676,G__11674_11677,G__11675_11678);
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+*/
+cljs.core.NeverEquiv = (function (){
+this.cljs$lang$protocol_mask$partition0$ = 2097152;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.NeverEquiv.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.NeverEquiv.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (o,other){
+var self__ = this;
+var o__$1 = this;
+return false;
+});
+
+cljs.core.NeverEquiv.getBasis = (function (){
+return cljs.core.PersistentVector.EMPTY;
+});
+
+cljs.core.NeverEquiv.cljs$lang$type = true;
+
+cljs.core.NeverEquiv.cljs$lang$ctorStr = "cljs.core/NeverEquiv";
+
+cljs.core.NeverEquiv.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/NeverEquiv");
+});
+
+/**
+ * Positional factory function for cljs.core/NeverEquiv.
+ */
+cljs.core.__GT_NeverEquiv = (function cljs$core$__GT_NeverEquiv(){
+return (new cljs.core.NeverEquiv());
+});
+
+cljs.core.never_equiv = (new cljs.core.NeverEquiv());
+/**
+ * Test map equivalence. Returns true if x equals y, otherwise returns false.
+ */
+cljs.core.equiv_map = (function cljs$core$equiv_map(x,y){
+return cljs.core.boolean$(((((cljs.core.map_QMARK_(y)) && ((!(cljs.core.record_QMARK_(y))))))?(((cljs.core.count(x) === cljs.core.count(y)))?(((((!((x == null))))?(((((x.cljs$lang$protocol_mask$partition0$ & (1048576))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IKVReduce$))))?true:(((!x.cljs$lang$protocol_mask$partition0$))?cljs.core.native_satisfies_QMARK_(cljs.core.IKVReduce,x):false)):cljs.core.native_satisfies_QMARK_(cljs.core.IKVReduce,x)))?cljs.core.reduce_kv((function (_,k,v){
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(y,k,cljs.core.never_equiv),v)){
+return true;
+} else {
+return cljs.core.reduced(false);
+}
+}),true,x):cljs.core.every_QMARK_((function (xkv){
+return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(y,cljs.core.first(xkv),cljs.core.never_equiv),cljs.core.second(xkv));
+}),x)):null):null));
+});
+cljs.core.scan_array = (function cljs$core$scan_array(incr,k,array){
+var len = array.length;
+var i = (0);
+while(true){
+if((i < len)){
+if((k === (array[i]))){
+return i;
+} else {
+var G__11680 = (i + incr);
+i = G__11680;
+continue;
+}
+} else {
+return null;
+}
+break;
+}
+});
+cljs.core.obj_map_compare_keys = (function cljs$core$obj_map_compare_keys(a,b){
+var a__$1 = cljs.core.hash(a);
+var b__$1 = cljs.core.hash(b);
+if((a__$1 < b__$1)){
+return (-1);
+} else {
+if((a__$1 > b__$1)){
+return (1);
+} else {
+return (0);
+
+}
+}
+});
+cljs.core.obj_map__GT_hash_map = (function cljs$core$obj_map__GT_hash_map(m,k,v){
+var ks = m.keys;
+var len = ks.length;
+var so = m.strobj;
+var mm = cljs.core.meta(m);
+var i = (0);
+var out = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
+while(true){
+if((i < len)){
+var k__$1 = (ks[i]);
+var G__11681 = (i + (1));
+var G__11682 = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(out,k__$1,goog.object.get(so,k__$1));
+i = G__11681;
+out = G__11682;
+continue;
+} else {
+return cljs.core._with_meta(cljs.core.persistent_BANG_(cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(out,k,v)),mm);
+}
+break;
+}
+});
+cljs.core.obj_clone = (function cljs$core$obj_clone(obj,ks){
+var new_obj = {};
+var l = ks.length;
+var i_11688 = (0);
+while(true){
+if((i_11688 < l)){
+var k_11689 = (ks[i_11688]);
+var G__11685_11690 = new_obj;
+var G__11686_11691 = k_11689;
+var G__11687_11692 = goog.object.get(obj,k_11689);
+goog.object.set(G__11685_11690,G__11686_11691,G__11687_11692);
+
+var G__11693 = (i_11688 + (1));
+i_11688 = G__11693;
+continue;
+} else {
+}
+break;
+}
+
+return new_obj;
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IKVReduce}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEditableCollection}
+ * @implements {cljs.core.IFind}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IAssociative}
+ * @implements {cljs.core.IMap}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.ObjMap = (function (meta,keys,strobj,update_count,__hash){
+this.meta = meta;
+this.keys = keys;
+this.strobj = strobj;
+this.update_count = update_count;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 16123663;
+this.cljs$lang$protocol_mask$partition1$ = 4;
+});
+cljs.core.ObjMap.prototype.cljs$core$IFind$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.ObjMap.prototype.cljs$core$IFind$_find$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+if(((goog.isString(k)) && ((!((cljs.core.scan_array((1),k,self__.keys) == null)))))){
+return (new cljs.core.MapEntry(k,(self__.strobj[k]),null));
+} else {
+return null;
+}
+});
+
+cljs.core.ObjMap.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.ObjMap.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.ObjMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ILookup$_lookup$arity$3(null,k,null);
+});
+
+cljs.core.ObjMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
+var self__ = this;
+var coll__$1 = this;
+if(((goog.isString(k)) && ((!((cljs.core.scan_array((1),k,self__.keys) == null)))))){
+return (self__.strobj[k]);
+} else {
+return not_found;
+}
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (coll,f,init){
+var self__ = this;
+var coll__$1 = this;
+var len = self__.keys.length;
+var keys__$1 = self__.keys.sort(cljs.core.obj_map_compare_keys);
+var init__$1 = init;
+while(true){
+if(cljs.core.seq(keys__$1)){
+var k = cljs.core.first(keys__$1);
+var init__$2 = (function (){var G__11696 = init__$1;
+var G__11697 = k;
+var G__11698 = (self__.strobj[k]);
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11696,G__11697,G__11698) : f.call(null,G__11696,G__11697,G__11698));
+})();
+if(cljs.core.reduced_QMARK_(init__$2)){
+return cljs.core.deref(init__$2);
+} else {
+var G__11699 = cljs.core.rest(keys__$1);
+var G__11700 = init__$2;
+keys__$1 = G__11699;
+init__$1 = G__11700;
+continue;
+}
+} else {
+return init__$1;
+}
+break;
+}
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.ObjMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.keys.length;
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_map(coll__$1,other);
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.transient$(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentHashMap.EMPTY,coll__$1));
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.ObjMap.EMPTY,self__.meta);
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+if(((goog.isString(k)) && ((!((cljs.core.scan_array((1),k,self__.keys) == null)))))){
+var new_keys = cljs.core.aclone(self__.keys);
+var new_strobj = cljs.core.obj_clone(self__.strobj,self__.keys);
+new_keys.splice(cljs.core.scan_array((1),k,new_keys),(1));
+
+delete new_strobj[k];
+
+return (new cljs.core.ObjMap(self__.meta,new_keys,new_strobj,(self__.update_count + (1)),null));
+} else {
+return coll__$1;
+}
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
+var self__ = this;
+var coll__$1 = this;
+if(goog.isString(k)){
+if((((self__.update_count > cljs.core.ObjMap.HASHMAP_THRESHOLD)) || ((self__.keys.length >= cljs.core.ObjMap.HASHMAP_THRESHOLD)))){
+return cljs.core.obj_map__GT_hash_map(coll__$1,k,v);
+} else {
+if((!((cljs.core.scan_array((1),k,self__.keys) == null)))){
+var new_strobj = cljs.core.obj_clone(self__.strobj,self__.keys);
+goog.object.set(new_strobj,k,v);
+
+return (new cljs.core.ObjMap(self__.meta,self__.keys,new_strobj,(self__.update_count + (1)),null));
+} else {
+var new_strobj = cljs.core.obj_clone(self__.strobj,self__.keys);
+var new_keys = cljs.core.aclone(self__.keys);
+goog.object.set(new_strobj,k,v);
+
+new_keys.push(k);
+
+return (new cljs.core.ObjMap(self__.meta,new_keys,new_strobj,(self__.update_count + (1)),null));
+}
+}
+} else {
+return cljs.core.obj_map__GT_hash_map(coll__$1,k,v);
+}
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+if(((goog.isString(k)) && ((!((cljs.core.scan_array((1),k,self__.keys) == null)))))){
+return true;
+} else {
+return false;
+}
+});
+
+cljs.core.ObjMap.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.keys.length > (0))){
+return cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (coll__$1){
+return (function (p1__11694_SHARP_){
+return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[p1__11694_SHARP_,(self__.strobj[p1__11694_SHARP_])],null));
+});})(coll__$1))
+,self__.keys.sort(cljs.core.obj_map_compare_keys));
+} else {
+return null;
+}
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.ObjMap(meta__$1,self__.keys,self__.strobj,self__.update_count,self__.__hash));
+});
+
+cljs.core.ObjMap.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,entry){
+var self__ = this;
+var coll__$1 = this;
+if(cljs.core.vector_QMARK_(entry)){
+return coll__$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(1)));
+} else {
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,coll__$1,entry);
+}
+});
+
+cljs.core.ObjMap.prototype.call = (function() {
+var G__11701 = null;
+var G__11701__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+var G__11701__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+G__11701 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__11701__2.call(this,self__,k);
+case 3:
+return G__11701__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11701.cljs$core$IFn$_invoke$arity$2 = G__11701__2;
+G__11701.cljs$core$IFn$_invoke$arity$3 = G__11701__3;
+return G__11701;
+})()
+;
+
+cljs.core.ObjMap.prototype.apply = (function (self__,args11695){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11695)));
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.ObjMap.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"keys","keys",-1586012071,null),new cljs.core.Symbol(null,"strobj","strobj",1088091283,null),new cljs.core.Symbol(null,"update-count","update-count",-411982269,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ObjMap.cljs$lang$type = true;
+
+cljs.core.ObjMap.cljs$lang$ctorStr = "cljs.core/ObjMap";
+
+cljs.core.ObjMap.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ObjMap");
+});
+
+/**
+ * Positional factory function for cljs.core/ObjMap.
+ */
+cljs.core.__GT_ObjMap = (function cljs$core$__GT_ObjMap(meta,keys,strobj,update_count,__hash){
+return (new cljs.core.ObjMap(meta,keys,strobj,update_count,__hash));
+});
+
+cljs.core.ObjMap.EMPTY = (new cljs.core.ObjMap(null,[],{},(0),cljs.core.empty_unordered_hash));
+cljs.core.ObjMap.HASHMAP_THRESHOLD = (8);
+cljs.core.ObjMap.fromObject = (function (ks,obj){
+return (new cljs.core.ObjMap(null,ks,obj,(0),null));
+});
+
+/**
+* @constructor
+*/
+cljs.core.RecordIter = (function (i,record,base_count,fields,ext_map_iter){
+this.i = i;
+this.record = record;
+this.base_count = base_count;
+this.fields = fields;
+this.ext_map_iter = ext_map_iter;
+});
+cljs.core.RecordIter.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+var or__7806__auto__ = (self__.i < self__.base_count);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return self__.ext_map_iter.hasNext();
+}
+});
+
+cljs.core.RecordIter.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+if((self__.i < self__.base_count)){
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$2(self__.fields,self__.i);
+self__.i = (self__.i + (1));
+
+return (new cljs.core.MapEntry(k,cljs.core._lookup.cljs$core$IFn$_invoke$arity$2(self__.record,k),null));
+} else {
+return self__.ext_map_iter.next();
+}
+});
+
+cljs.core.RecordIter.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.RecordIter.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"record","record",861424668,null),new cljs.core.Symbol(null,"base-count","base-count",-1180647182,null),new cljs.core.Symbol(null,"fields","fields",-291534703,null),new cljs.core.Symbol(null,"ext-map-iter","ext-map-iter",-1215982757,null)], null);
+});
+
+cljs.core.RecordIter.cljs$lang$type = true;
+
+cljs.core.RecordIter.cljs$lang$ctorStr = "cljs.core/RecordIter";
+
+cljs.core.RecordIter.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/RecordIter");
+});
+
+/**
+ * Positional factory function for cljs.core/RecordIter.
+ */
+cljs.core.__GT_RecordIter = (function cljs$core$__GT_RecordIter(i,record,base_count,fields,ext_map_iter){
+return (new cljs.core.RecordIter(i,record,base_count,fields,ext_map_iter));
+});
+
+
+/**
+* @constructor
+*/
+cljs.core.ES6EntriesIterator = (function (s){
+this.s = s;
+});
+cljs.core.ES6EntriesIterator.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+if((!((self__.s == null)))){
+var vec__11704 = cljs.core.first(self__.s);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11704,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11704,(1),null);
+self__.s = cljs.core.next(self__.s);
+
+return ({"value": [k,v], "done": false});
+} else {
+return ({"value": null, "done": true});
+}
+});
+
+cljs.core.ES6EntriesIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"s","s",-948495851,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ES6EntriesIterator.cljs$lang$type = true;
+
+cljs.core.ES6EntriesIterator.cljs$lang$ctorStr = "cljs.core/ES6EntriesIterator";
+
+cljs.core.ES6EntriesIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ES6EntriesIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/ES6EntriesIterator.
+ */
+cljs.core.__GT_ES6EntriesIterator = (function cljs$core$__GT_ES6EntriesIterator(s){
+return (new cljs.core.ES6EntriesIterator(s));
+});
+
+cljs.core.es6_entries_iterator = (function cljs$core$es6_entries_iterator(coll){
+return (new cljs.core.ES6EntriesIterator(cljs.core.seq(coll)));
+});
+
+/**
+* @constructor
+*/
+cljs.core.ES6SetEntriesIterator = (function (s){
+this.s = s;
+});
+cljs.core.ES6SetEntriesIterator.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+if((!((self__.s == null)))){
+var x = cljs.core.first(self__.s);
+self__.s = cljs.core.next(self__.s);
+
+return ({"value": [x,x], "done": false});
+} else {
+return ({"value": null, "done": true});
+}
+});
+
+cljs.core.ES6SetEntriesIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"s","s",-948495851,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ES6SetEntriesIterator.cljs$lang$type = true;
+
+cljs.core.ES6SetEntriesIterator.cljs$lang$ctorStr = "cljs.core/ES6SetEntriesIterator";
+
+cljs.core.ES6SetEntriesIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ES6SetEntriesIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/ES6SetEntriesIterator.
+ */
+cljs.core.__GT_ES6SetEntriesIterator = (function cljs$core$__GT_ES6SetEntriesIterator(s){
+return (new cljs.core.ES6SetEntriesIterator(s));
+});
+
+cljs.core.es6_set_entries_iterator = (function cljs$core$es6_set_entries_iterator(coll){
+return (new cljs.core.ES6SetEntriesIterator(cljs.core.seq(coll)));
+});
+cljs.core.array_index_of_nil_QMARK_ = (function cljs$core$array_index_of_nil_QMARK_(arr){
+var len = arr.length;
+var i = (0);
+while(true){
+if((len <= i)){
+return (-1);
+} else {
+if(((arr[i]) == null)){
+return i;
+} else {
+var G__11707 = (i + (2));
+i = G__11707;
+continue;
+
+}
+}
+break;
+}
+});
+cljs.core.array_index_of_keyword_QMARK_ = (function cljs$core$array_index_of_keyword_QMARK_(arr,k){
+var len = arr.length;
+var kstr = k.fqn;
+var i = (0);
+while(true){
+if((len <= i)){
+return (-1);
+} else {
+if(((((arr[i]) instanceof cljs.core.Keyword)) && ((kstr === (arr[i]).fqn)))){
+return i;
+} else {
+var G__11708 = (i + (2));
+i = G__11708;
+continue;
+
+}
+}
+break;
+}
+});
+cljs.core.array_index_of_symbol_QMARK_ = (function cljs$core$array_index_of_symbol_QMARK_(arr,k){
+var len = arr.length;
+var kstr = k.str;
+var i = (0);
+while(true){
+if((len <= i)){
+return (-1);
+} else {
+if(((((arr[i]) instanceof cljs.core.Symbol)) && ((kstr === (arr[i]).str)))){
+return i;
+} else {
+var G__11709 = (i + (2));
+i = G__11709;
+continue;
+
+}
+}
+break;
+}
+});
+cljs.core.array_index_of_identical_QMARK_ = (function cljs$core$array_index_of_identical_QMARK_(arr,k){
+var len = arr.length;
+var i = (0);
+while(true){
+if((len <= i)){
+return (-1);
+} else {
+if((k === (arr[i]))){
+return i;
+} else {
+var G__11710 = (i + (2));
+i = G__11710;
+continue;
+
+}
+}
+break;
+}
+});
+cljs.core.array_index_of_equiv_QMARK_ = (function cljs$core$array_index_of_equiv_QMARK_(arr,k){
+var len = arr.length;
+var i = (0);
+while(true){
+if((len <= i)){
+return (-1);
+} else {
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(k,(arr[i]))){
+return i;
+} else {
+var G__11711 = (i + (2));
+i = G__11711;
+continue;
+
+}
+}
+break;
+}
+});
+cljs.core.array_index_of = (function cljs$core$array_index_of(arr,k){
+if((k instanceof cljs.core.Keyword)){
+return cljs.core.array_index_of_keyword_QMARK_(arr,k);
+} else {
+if(((goog.isString(k)) || (typeof k === 'number'))){
+return cljs.core.array_index_of_identical_QMARK_(arr,k);
+} else {
+if((k instanceof cljs.core.Symbol)){
+return cljs.core.array_index_of_symbol_QMARK_(arr,k);
+} else {
+if((k == null)){
+return cljs.core.array_index_of_nil_QMARK_(arr);
+} else {
+return cljs.core.array_index_of_equiv_QMARK_(arr,k);
+
+}
+}
+}
+}
+});
+cljs.core.array_map_index_of = (function cljs$core$array_map_index_of(m,k){
+return cljs.core.array_index_of(m.arr,k);
+});
+cljs.core.array_extend_kv = (function cljs$core$array_extend_kv(arr,k,v){
+var l = arr.length;
+var narr = (new Array((l + (2))));
+var i_11712 = (0);
+while(true){
+if((i_11712 < l)){
+(narr[i_11712] = (arr[i_11712]));
+
+var G__11713 = (i_11712 + (1));
+i_11712 = G__11713;
+continue;
+} else {
+}
+break;
+}
+
+(narr[l] = k);
+
+(narr[(l + (1))] = v);
+
+return narr;
+});
+cljs.core.array_map_extend_kv = (function cljs$core$array_map_extend_kv(m,k,v){
+return cljs.core.array_extend_kv(m.arr,k,v);
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IIndexed}
+ * @implements {cljs.core.IVector}
+ * @implements {cljs.core.IReversible}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IFind}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.IStack}
+ * @implements {cljs.core.IMapEntry}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IAssociative}
+ * @implements {cljs.core.ILookup}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.MapEntry = (function (key,val,__hash){
+this.key = key;
+this.val = val;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 166619935;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.MapEntry.prototype.cljs$core$IFind$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.MapEntry.prototype.cljs$core$IFind$_find$arity$2 = (function (node,k){
+var self__ = this;
+var node__$1 = this;
+var G__11715 = k;
+switch (G__11715) {
+case (0):
+return (new cljs.core.MapEntry((0),self__.key,null));
+
+break;
+case (1):
+return (new cljs.core.MapEntry((1),self__.val,null));
+
+break;
+default:
+return null;
+
+}
+});
+
+cljs.core.MapEntry.prototype.indexOf = (function() {
+var G__11717 = null;
+var G__11717__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11717__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11717 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11717__1.call(this,x);
+case 2:
+return G__11717__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11717.cljs$core$IFn$_invoke$arity$1 = G__11717__1;
+G__11717.cljs$core$IFn$_invoke$arity$2 = G__11717__2;
+return G__11717;
+})()
+;
+
+cljs.core.MapEntry.prototype.lastIndexOf = (function() {
+var G__11718 = null;
+var G__11718__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11718__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11718 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11718__1.call(this,x);
+case 2:
+return G__11718__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11718.cljs$core$IFn$_invoke$arity$1 = G__11718__1;
+G__11718.cljs$core$IFn$_invoke$arity$2 = G__11718__2;
+return G__11718;
+})()
+;
+
+cljs.core.MapEntry.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (node,k){
+var self__ = this;
+var node__$1 = this;
+return node__$1.cljs$core$IIndexed$_nth$arity$3(null,k,null);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (node,k,not_found){
+var self__ = this;
+var node__$1 = this;
+return node__$1.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (node,n){
+var self__ = this;
+var node__$1 = this;
+if((n === (0))){
+return self__.key;
+} else {
+if((n === (1))){
+return self__.val;
+} else {
+throw (new Error("Index out of bounds"));
+
+}
+}
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (node,n,not_found){
+var self__ = this;
+var node__$1 = this;
+if((n === (0))){
+return self__.key;
+} else {
+if((n === (1))){
+return self__.val;
+} else {
+return not_found;
+
+}
+}
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (node,n,v){
+var self__ = this;
+var node__$1 = this;
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null).cljs$core$IVector$_assoc_n$arity$3(null,n,v);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IMeta$_meta$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return null;
+});
+
+cljs.core.MapEntry.prototype.cljs$core$ICounted$_count$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return (2);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IMapEntry$_key$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return self__.key;
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IMapEntry$_val$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return self__.val;
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IStack$_peek$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return self__.val;
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IStack$_pop$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key], null);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return (new cljs.core.IndexedSeq([self__.val,self__.key],(0),null));
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return null;
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (node,f){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(node__$1,f);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (node,f,start){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3(node__$1,f,start);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (node,k,v){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),k,v);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (node,k){
+var self__ = this;
+var node__$1 = this;
+return (((k === (0))) || ((k === (1))));
+});
+
+cljs.core.MapEntry.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return (new cljs.core.IndexedSeq([self__.key,self__.val],(0),null));
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (node,meta){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.with_meta(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),meta);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$ICollection$_conj$arity$2 = (function (node,o){
+var self__ = this;
+var node__$1 = this;
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val,o], null);
+});
+
+cljs.core.MapEntry.prototype.call = (function() {
+var G__11719 = null;
+var G__11719__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var node = self____$1;
+return node.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+var G__11719__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var node = self____$1;
+return node.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+G__11719 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__11719__2.call(this,self__,k);
+case 3:
+return G__11719__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11719.cljs$core$IFn$_invoke$arity$2 = G__11719__2;
+G__11719.cljs$core$IFn$_invoke$arity$3 = G__11719__3;
+return G__11719;
+})()
+;
+
+cljs.core.MapEntry.prototype.apply = (function (self__,args11714){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11714)));
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var node = this;
+return node.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var node = this;
+return node.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+
+cljs.core.MapEntry.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"key","key",124488940,null),new cljs.core.Symbol(null,"val","val",1769233139,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.MapEntry.cljs$lang$type = true;
+
+cljs.core.MapEntry.cljs$lang$ctorStr = "cljs.core/MapEntry";
+
+cljs.core.MapEntry.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/MapEntry");
+});
+
+/**
+ * Positional factory function for cljs.core/MapEntry.
+ */
+cljs.core.__GT_MapEntry = (function cljs$core$__GT_MapEntry(key,val,__hash){
+return (new cljs.core.MapEntry(key,val,__hash));
+});
+
+/**
+ * Returns true if x satisfies IMapEntry
+ */
+cljs.core.map_entry_QMARK_ = (function cljs$core$map_entry_QMARK_(x){
+if((!((x == null)))){
+if((((x.cljs$lang$protocol_mask$partition0$ & (2048))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IMapEntry$)))){
+return true;
+} else {
+return false;
+}
+} else {
+return false;
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.PersistentArrayMapSeq = (function (arr,i,_meta){
+this.arr = arr;
+this.i = i;
+this._meta = _meta;
+this.cljs$lang$protocol_mask$partition0$ = 32374990;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.PersistentArrayMapSeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.indexOf = (function() {
+var G__11721 = null;
+var G__11721__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11721__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11721 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11721__1.call(this,x);
+case 2:
+return G__11721__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11721.cljs$core$IFn$_invoke$arity$1 = G__11721__1;
+G__11721.cljs$core$IFn$_invoke$arity$2 = G__11721__2;
+return G__11721;
+})()
+;
+
+cljs.core.PersistentArrayMapSeq.prototype.lastIndexOf = (function() {
+var G__11722 = null;
+var G__11722__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11722__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11722 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11722__1.call(this,x);
+case 2:
+return G__11722__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11722.cljs$core$IFn$_invoke$arity$1 = G__11722__1;
+G__11722.cljs$core$IFn$_invoke$arity$2 = G__11722__2;
+return G__11722;
+})()
+;
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__._meta;
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.i < (self__.arr.length - (2)))){
+return (new cljs.core.PersistentArrayMapSeq(self__.arr,(self__.i + (2)),self__._meta));
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return ((self__.arr.length - self__.i) / (2));
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.hash_ordered_coll(coll__$1);
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__._meta);
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.MapEntry((self__.arr[self__.i]),(self__.arr[(self__.i + (1))]),null));
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.i < (self__.arr.length - (2)))){
+return (new cljs.core.PersistentArrayMapSeq(self__.arr,(self__.i + (2)),self__._meta));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,new_meta){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentArrayMapSeq(self__.arr,self__.i,new_meta));
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.PersistentArrayMapSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"arr","arr",2115492975,null),new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.Symbol(null,"_meta","_meta",-1716892533,null)], null);
+});
+
+cljs.core.PersistentArrayMapSeq.cljs$lang$type = true;
+
+cljs.core.PersistentArrayMapSeq.cljs$lang$ctorStr = "cljs.core/PersistentArrayMapSeq";
+
+cljs.core.PersistentArrayMapSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentArrayMapSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentArrayMapSeq.
+ */
+cljs.core.__GT_PersistentArrayMapSeq = (function cljs$core$__GT_PersistentArrayMapSeq(arr,i,_meta){
+return (new cljs.core.PersistentArrayMapSeq(arr,i,_meta));
+});
+
+var G__11723_11726 = cljs.core.PersistentArrayMapSeq.prototype;
+var G__11724_11727 = cljs.core.ITER_SYMBOL;
+var G__11725_11728 = ((function (G__11723_11726,G__11724_11727){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11723_11726,G__11724_11727))
+;
+goog.object.set(G__11723_11726,G__11724_11727,G__11725_11728);
+cljs.core.persistent_array_map_seq = (function cljs$core$persistent_array_map_seq(arr,i,_meta){
+if((i <= (arr.length - (2)))){
+return (new cljs.core.PersistentArrayMapSeq(arr,i,_meta));
+} else {
+return null;
+}
+});
+
+
+/**
+* @constructor
+*/
+cljs.core.PersistentArrayMapIterator = (function (arr,i,cnt){
+this.arr = arr;
+this.i = i;
+this.cnt = cnt;
+});
+cljs.core.PersistentArrayMapIterator.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+return (self__.i < self__.cnt);
+});
+
+cljs.core.PersistentArrayMapIterator.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+var ret = (new cljs.core.MapEntry((self__.arr[self__.i]),(self__.arr[(self__.i + (1))]),null));
+self__.i = (self__.i + (2));
+
+return ret;
+});
+
+cljs.core.PersistentArrayMapIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"arr","arr",2115492975,null),cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"cnt","cnt",1924510325,null)], null);
+});
+
+cljs.core.PersistentArrayMapIterator.cljs$lang$type = true;
+
+cljs.core.PersistentArrayMapIterator.cljs$lang$ctorStr = "cljs.core/PersistentArrayMapIterator";
+
+cljs.core.PersistentArrayMapIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentArrayMapIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentArrayMapIterator.
+ */
+cljs.core.__GT_PersistentArrayMapIterator = (function cljs$core$__GT_PersistentArrayMapIterator(arr,i,cnt){
+return (new cljs.core.PersistentArrayMapIterator(arr,i,cnt));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IKVReduce}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEditableCollection}
+ * @implements {cljs.core.IFind}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IIterable}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IAssociative}
+ * @implements {cljs.core.IMap}
+ * @implements {cljs.core.ILookup}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.PersistentArrayMap = (function (meta,cnt,arr,__hash){
+this.meta = meta;
+this.cnt = cnt;
+this.arr = arr;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 16647951;
+this.cljs$lang$protocol_mask$partition1$ = 139268;
+});
+cljs.core.PersistentArrayMap.prototype.cljs$core$IFind$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IFind$_find$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+var idx = cljs.core.array_map_index_of(coll__$1,k);
+if((idx === (-1))){
+return null;
+} else {
+return (new cljs.core.MapEntry((self__.arr[idx]),(self__.arr[(idx + (1))]),null));
+}
+});
+
+cljs.core.PersistentArrayMap.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentArrayMap.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentArrayMap.prototype.keys = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.keys(coll));
+});
+
+cljs.core.PersistentArrayMap.prototype.entries = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_entries_iterator(cljs.core.seq(coll));
+});
+
+cljs.core.PersistentArrayMap.prototype.values = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.vals(coll));
+});
+
+cljs.core.PersistentArrayMap.prototype.has = (function (k){
+var self__ = this;
+var coll = this;
+return cljs.core.contains_QMARK_(coll,k);
+});
+
+cljs.core.PersistentArrayMap.prototype.get = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.PersistentArrayMap.prototype.forEach = (function (f){
+var self__ = this;
+var coll = this;
+var seq__11730 = cljs.core.seq(coll);
+var chunk__11731 = null;
+var count__11732 = (0);
+var i__11733 = (0);
+while(true){
+if((i__11733 < count__11732)){
+var vec__11734 = chunk__11731.cljs$core$IIndexed$_nth$arity$2(null,i__11733);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11734,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11734,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__11746 = seq__11730;
+var G__11747 = chunk__11731;
+var G__11748 = count__11732;
+var G__11749 = (i__11733 + (1));
+seq__11730 = G__11746;
+chunk__11731 = G__11747;
+count__11732 = G__11748;
+i__11733 = G__11749;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__11730);
+if(temp__4657__auto__){
+var seq__11730__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__11730__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__11730__$1);
+var G__11750 = cljs.core.chunk_rest(seq__11730__$1);
+var G__11751 = c__8664__auto__;
+var G__11752 = cljs.core.count(c__8664__auto__);
+var G__11753 = (0);
+seq__11730 = G__11750;
+chunk__11731 = G__11751;
+count__11732 = G__11752;
+i__11733 = G__11753;
+continue;
+} else {
+var vec__11737 = cljs.core.first(seq__11730__$1);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11737,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11737,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__11754 = cljs.core.next(seq__11730__$1);
+var G__11755 = null;
+var G__11756 = (0);
+var G__11757 = (0);
+seq__11730 = G__11754;
+chunk__11731 = G__11755;
+count__11732 = G__11756;
+i__11733 = G__11757;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ILookup$_lookup$arity$3(null,k,null);
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
+var self__ = this;
+var coll__$1 = this;
+var idx = cljs.core.array_map_index_of(coll__$1,k);
+if((idx === (-1))){
+return not_found;
+} else {
+return (self__.arr[(idx + (1))]);
+}
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (coll,f,init){
+var self__ = this;
+var coll__$1 = this;
+var len = self__.arr.length;
+var i = (0);
+var init__$1 = init;
+while(true){
+if((i < len)){
+var init__$2 = (function (){var G__11740 = init__$1;
+var G__11741 = (self__.arr[i]);
+var G__11742 = (self__.arr[(i + (1))]);
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11740,G__11741,G__11742) : f.call(null,G__11740,G__11741,G__11742));
+})();
+if(cljs.core.reduced_QMARK_(init__$2)){
+return cljs.core.deref(init__$2);
+} else {
+var G__11758 = (i + (2));
+var G__11759 = init__$2;
+i = G__11758;
+init__$1 = G__11759;
+continue;
+}
+} else {
+return init__$1;
+}
+break;
+}
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return (new cljs.core.PersistentArrayMapIterator(self__.arr,(0),(self__.cnt * (2))));
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.PersistentArrayMap(self__.meta,self__.cnt,self__.arr,self__.__hash));
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.cnt;
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+if(((cljs.core.map_QMARK_(other)) && ((!(cljs.core.record_QMARK_(other)))))){
+var alen = self__.arr.length;
+var other__$1 = other;
+if((self__.cnt === other__$1.cljs$core$ICounted$_count$arity$1(null))){
+var i = (0);
+while(true){
+if((i < alen)){
+var v = other__$1.cljs$core$ILookup$_lookup$arity$3(null,(self__.arr[i]),cljs.core.lookup_sentinel);
+if((!((v === cljs.core.lookup_sentinel)))){
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2((self__.arr[(i + (1))]),v)){
+var G__11760 = (i + (2));
+i = G__11760;
+continue;
+} else {
+return false;
+}
+} else {
+return false;
+}
+} else {
+return true;
+}
+break;
+}
+} else {
+return false;
+}
+} else {
+return false;
+}
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.TransientArrayMap({},self__.arr.length,cljs.core.aclone(self__.arr)));
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.PersistentArrayMap.EMPTY,self__.meta);
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.iter_reduce.cljs$core$IFn$_invoke$arity$2(coll__$1,f);
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.iter_reduce.cljs$core$IFn$_invoke$arity$3(coll__$1,f,start);
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+var idx = cljs.core.array_map_index_of(coll__$1,k);
+if((idx >= (0))){
+var len = self__.arr.length;
+var new_len = (len - (2));
+if((new_len === (0))){
+return coll__$1.cljs$core$IEmptyableCollection$_empty$arity$1(null);
+} else {
+var new_arr = (new Array(new_len));
+var s = (0);
+var d = (0);
+while(true){
+if((s >= len)){
+return (new cljs.core.PersistentArrayMap(self__.meta,(self__.cnt - (1)),new_arr,null));
+} else {
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(k,(self__.arr[s]))){
+var G__11761 = (s + (2));
+var G__11762 = d;
+s = G__11761;
+d = G__11762;
+continue;
+} else {
+(new_arr[d] = (self__.arr[s]));
+
+(new_arr[(d + (1))] = (self__.arr[(s + (1))]));
+
+var G__11763 = (s + (2));
+var G__11764 = (d + (2));
+s = G__11763;
+d = G__11764;
+continue;
+
+}
+}
+break;
+}
+}
+} else {
+return coll__$1;
+}
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
+var self__ = this;
+var coll__$1 = this;
+var idx = cljs.core.array_map_index_of(coll__$1,k);
+if((idx === (-1))){
+if((self__.cnt < cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD)){
+var arr__$1 = cljs.core.array_map_extend_kv(coll__$1,k,v);
+return (new cljs.core.PersistentArrayMap(self__.meta,(self__.cnt + (1)),arr__$1,null));
+} else {
+return cljs.core._with_meta(cljs.core._assoc(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentHashMap.EMPTY,coll__$1),k,v),self__.meta);
+}
+} else {
+if((v === (self__.arr[(idx + (1))]))){
+return coll__$1;
+} else {
+var arr__$1 = (function (){var G__11745 = cljs.core.aclone(self__.arr);
+(G__11745[(idx + (1))] = v);
+
+return G__11745;
+})();
+return (new cljs.core.PersistentArrayMap(self__.meta,self__.cnt,arr__$1,null));
+
+}
+}
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return (!((cljs.core.array_map_index_of(coll__$1,k) === (-1))));
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.persistent_array_map_seq(self__.arr,(0),null);
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentArrayMap(meta__$1,self__.cnt,self__.arr,self__.__hash));
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,entry){
+var self__ = this;
+var coll__$1 = this;
+if(cljs.core.vector_QMARK_(entry)){
+return coll__$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(1)));
+} else {
+var ret = coll__$1;
+var es = cljs.core.seq(entry);
+while(true){
+if((es == null)){
+return ret;
+} else {
+var e = cljs.core.first(es);
+if(cljs.core.vector_QMARK_(e)){
+var G__11765 = ret.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(1)));
+var G__11766 = cljs.core.next(es);
+ret = G__11765;
+es = G__11766;
+continue;
+} else {
+throw (new Error("conj on a map takes map entries or seqables of map entries"));
+}
+}
+break;
+}
+}
+});
+
+cljs.core.PersistentArrayMap.prototype.call = (function() {
+var G__11767 = null;
+var G__11767__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+var G__11767__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+G__11767 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__11767__2.call(this,self__,k);
+case 3:
+return G__11767__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11767.cljs$core$IFn$_invoke$arity$2 = G__11767__2;
+G__11767.cljs$core$IFn$_invoke$arity$3 = G__11767__3;
+return G__11767;
+})()
+;
+
+cljs.core.PersistentArrayMap.prototype.apply = (function (self__,args11729){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11729)));
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.PersistentArrayMap.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"cnt","cnt",1924510325,null),new cljs.core.Symbol(null,"arr","arr",2115492975,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.PersistentArrayMap.cljs$lang$type = true;
+
+cljs.core.PersistentArrayMap.cljs$lang$ctorStr = "cljs.core/PersistentArrayMap";
+
+cljs.core.PersistentArrayMap.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentArrayMap");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentArrayMap.
+ */
+cljs.core.__GT_PersistentArrayMap = (function cljs$core$__GT_PersistentArrayMap(meta,cnt,arr,__hash){
+return (new cljs.core.PersistentArrayMap(meta,cnt,arr,__hash));
+});
+
+cljs.core.PersistentArrayMap.EMPTY = (new cljs.core.PersistentArrayMap(null,(0),[],cljs.core.empty_unordered_hash));
+cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD = (8);
+cljs.core.PersistentArrayMap.fromArray = (function (arr,no_clone,no_check){
+var arr__$1 = ((no_clone)?arr:cljs.core.aclone(arr));
+var arr__$2 = ((no_check)?arr__$1:(function (){var ret = [];
+var i_11768 = (0);
+while(true){
+if((i_11768 < arr__$1.length)){
+var k_11769 = (arr__$1[i_11768]);
+var v_11770 = (arr__$1[(i_11768 + (1))]);
+var idx_11771 = cljs.core.array_index_of(ret,k_11769);
+if((idx_11771 === (-1))){
+ret.push(k_11769);
+
+ret.push(v_11770);
+} else {
+}
+
+var G__11772 = (i_11768 + (2));
+i_11768 = G__11772;
+continue;
+} else {
+}
+break;
+}
+
+return ret;
+})());
+var cnt = (arr__$2.length / (2));
+return (new cljs.core.PersistentArrayMap(null,cnt,arr__$2,null));
+});
+cljs.core.PersistentArrayMap.createWithCheck = (function (arr){
+var ret = [];
+var i_11774 = (0);
+while(true){
+if((i_11774 < arr.length)){
+var k_11775 = (arr[i_11774]);
+var v_11776 = (arr[(i_11774 + (1))]);
+var idx_11777 = cljs.core.array_index_of(ret,k_11775);
+if((idx_11777 === (-1))){
+var G__11773_11778 = ret;
+G__11773_11778.push(k_11775);
+
+G__11773_11778.push(v_11776);
+
+} else {
+throw (new Error(["Duplicate key: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(k_11775)].join('')));
+}
+
+var G__11779 = (i_11774 + (2));
+i_11774 = G__11779;
+continue;
+} else {
+}
+break;
+}
+
+var cnt = (arr.length / (2));
+return (new cljs.core.PersistentArrayMap(null,cnt,arr,null));
+});
+cljs.core.PersistentArrayMap.createAsIfByAssoc = (function (arr){
+var ret = [];
+var i_11781 = (0);
+while(true){
+if((i_11781 < arr.length)){
+var k_11782 = (arr[i_11781]);
+var v_11783 = (arr[(i_11781 + (1))]);
+var idx_11784 = cljs.core.array_index_of(ret,k_11782);
+if((idx_11784 === (-1))){
+var G__11780_11785 = ret;
+G__11780_11785.push(k_11782);
+
+G__11780_11785.push(v_11783);
+
+} else {
+(ret[(idx_11784 + (1))] = v_11783);
+}
+
+var G__11786 = (i_11781 + (2));
+i_11781 = G__11786;
+continue;
+} else {
+}
+break;
+}
+
+return (new cljs.core.PersistentArrayMap(null,(ret.length / (2)),ret,null));
+});
+var G__11787_11790 = cljs.core.PersistentArrayMap.prototype;
+var G__11788_11791 = cljs.core.ITER_SYMBOL;
+var G__11789_11792 = ((function (G__11787_11790,G__11788_11791){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11787_11790,G__11788_11791))
+;
+goog.object.set(G__11787_11790,G__11788_11791,G__11789_11792);
+
+/**
+* @constructor
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ITransientMap}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ITransientCollection}
+ * @implements {cljs.core.ITransientAssociative}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.TransientArrayMap = (function (editable_QMARK_,len,arr){
+this.editable_QMARK_ = editable_QMARK_;
+this.len = len;
+this.arr = arr;
+this.cljs$lang$protocol_mask$partition0$ = 259;
+this.cljs$lang$protocol_mask$partition1$ = 56;
+});
+cljs.core.TransientArrayMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (tcoll){
+var self__ = this;
+var tcoll__$1 = this;
+if(cljs.core.truth_(self__.editable_QMARK_)){
+return cljs.core.quot(self__.len,(2));
+} else {
+throw (new Error("count after persistent!"));
+}
+});
+
+cljs.core.TransientArrayMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (tcoll,k){
+var self__ = this;
+var tcoll__$1 = this;
+return tcoll__$1.cljs$core$ILookup$_lookup$arity$3(null,k,null);
+});
+
+cljs.core.TransientArrayMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (tcoll,k,not_found){
+var self__ = this;
+var tcoll__$1 = this;
+if(cljs.core.truth_(self__.editable_QMARK_)){
+var idx = cljs.core.array_map_index_of(tcoll__$1,k);
+if((idx === (-1))){
+return not_found;
+} else {
+return (self__.arr[(idx + (1))]);
+}
+} else {
+throw (new Error("lookup after persistent!"));
+}
+});
+
+cljs.core.TransientArrayMap.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = (function (tcoll,o){
+var self__ = this;
+var tcoll__$1 = this;
+if(cljs.core.truth_(self__.editable_QMARK_)){
+if(cljs.core.map_entry_QMARK_(o)){
+return tcoll__$1.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(null,cljs.core.key(o),cljs.core.val(o));
+} else {
+if(cljs.core.vector_QMARK_(o)){
+return tcoll__$1.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(null,(o.cljs$core$IFn$_invoke$arity$1 ? o.cljs$core$IFn$_invoke$arity$1((0)) : o.call(null,(0))),(o.cljs$core$IFn$_invoke$arity$1 ? o.cljs$core$IFn$_invoke$arity$1((1)) : o.call(null,(1))));
+} else {
+var es = cljs.core.seq(o);
+var tcoll__$2 = tcoll__$1;
+while(true){
+var temp__4655__auto__ = cljs.core.first(es);
+if(cljs.core.truth_(temp__4655__auto__)){
+var e = temp__4655__auto__;
+var G__11795 = cljs.core.next(es);
+var G__11796 = tcoll__$2.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(null,cljs.core.key(e),cljs.core.val(e));
+es = G__11795;
+tcoll__$2 = G__11796;
+continue;
+} else {
+return tcoll__$2;
+}
+break;
+}
+
+}
+}
+} else {
+throw (new Error("conj! after persistent!"));
+}
+});
+
+cljs.core.TransientArrayMap.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = (function (tcoll){
+var self__ = this;
+var tcoll__$1 = this;
+if(cljs.core.truth_(self__.editable_QMARK_)){
+self__.editable_QMARK_ = false;
+
+return (new cljs.core.PersistentArrayMap(null,cljs.core.quot(self__.len,(2)),self__.arr,null));
+} else {
+throw (new Error("persistent! called twice"));
+}
+});
+
+cljs.core.TransientArrayMap.prototype.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 = (function (tcoll,key,val){
+var self__ = this;
+var tcoll__$1 = this;
+if(cljs.core.truth_(self__.editable_QMARK_)){
+var idx = cljs.core.array_map_index_of(tcoll__$1,key);
+if((idx === (-1))){
+if(((self__.len + (2)) <= ((2) * cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD))){
+self__.len = (self__.len + (2));
+
+self__.arr.push(key);
+
+self__.arr.push(val);
+
+return tcoll__$1;
+} else {
+return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(cljs.core.array__GT_transient_hash_map(self__.len,self__.arr),key,val);
+}
+} else {
+if((val === (self__.arr[(idx + (1))]))){
+return tcoll__$1;
+} else {
+(self__.arr[(idx + (1))] = val);
+
+return tcoll__$1;
+}
+}
+} else {
+throw (new Error("assoc! after persistent!"));
+}
+});
+
+cljs.core.TransientArrayMap.prototype.cljs$core$ITransientMap$_dissoc_BANG_$arity$2 = (function (tcoll,key){
+var self__ = this;
+var tcoll__$1 = this;
+if(cljs.core.truth_(self__.editable_QMARK_)){
+var idx = cljs.core.array_map_index_of(tcoll__$1,key);
+if((idx >= (0))){
+(self__.arr[idx] = (self__.arr[(self__.len - (2))]));
+
+(self__.arr[(idx + (1))] = (self__.arr[(self__.len - (1))]));
+
+var G__11794_11797 = self__.arr;
+G__11794_11797.pop();
+
+G__11794_11797.pop();
+
+
+self__.len = (self__.len - (2));
+} else {
+}
+
+return tcoll__$1;
+} else {
+throw (new Error("dissoc! after persistent!"));
+}
+});
+
+cljs.core.TransientArrayMap.prototype.call = (function() {
+var G__11798 = null;
+var G__11798__2 = (function (self__,key){
+var self__ = this;
+var self____$1 = this;
+var tcoll = self____$1;
+return tcoll.cljs$core$ILookup$_lookup$arity$3(null,key,null);
+});
+var G__11798__3 = (function (self__,key,not_found){
+var self__ = this;
+var self____$1 = this;
+var tcoll = self____$1;
+return tcoll.cljs$core$ILookup$_lookup$arity$3(null,key,not_found);
+});
+G__11798 = function(self__,key,not_found){
+switch(arguments.length){
+case 2:
+return G__11798__2.call(this,self__,key);
+case 3:
+return G__11798__3.call(this,self__,key,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11798.cljs$core$IFn$_invoke$arity$2 = G__11798__2;
+G__11798.cljs$core$IFn$_invoke$arity$3 = G__11798__3;
+return G__11798;
+})()
+;
+
+cljs.core.TransientArrayMap.prototype.apply = (function (self__,args11793){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11793)));
+});
+
+cljs.core.TransientArrayMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (key){
+var self__ = this;
+var tcoll = this;
+return tcoll.cljs$core$ILookup$_lookup$arity$3(null,key,null);
+});
+
+cljs.core.TransientArrayMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (key,not_found){
+var self__ = this;
+var tcoll = this;
+return tcoll.cljs$core$ILookup$_lookup$arity$3(null,key,not_found);
+});
+
+cljs.core.TransientArrayMap.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"editable?","editable?",-164945806,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"len","len",-1230778691,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"arr","arr",2115492975,null)], null);
+});
+
+cljs.core.TransientArrayMap.cljs$lang$type = true;
+
+cljs.core.TransientArrayMap.cljs$lang$ctorStr = "cljs.core/TransientArrayMap";
+
+cljs.core.TransientArrayMap.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/TransientArrayMap");
+});
+
+/**
+ * Positional factory function for cljs.core/TransientArrayMap.
+ */
+cljs.core.__GT_TransientArrayMap = (function cljs$core$__GT_TransientArrayMap(editable_QMARK_,len,arr){
+return (new cljs.core.TransientArrayMap(editable_QMARK_,len,arr));
+});
+
+cljs.core.array__GT_transient_hash_map = (function cljs$core$array__GT_transient_hash_map(len,arr){
+var out = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
+var i = (0);
+while(true){
+if((i < len)){
+var G__11799 = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(out,(arr[i]),(arr[(i + (1))]));
+var G__11800 = (i + (2));
+out = G__11799;
+i = G__11800;
+continue;
+} else {
+return out;
+}
+break;
+}
+});
+
+/**
+* @constructor
+*/
+cljs.core.Box = (function (val){
+this.val = val;
+});
+
+cljs.core.Box.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"val","val",1769233139,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Box.cljs$lang$type = true;
+
+cljs.core.Box.cljs$lang$ctorStr = "cljs.core/Box";
+
+cljs.core.Box.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Box");
+});
+
+/**
+ * Positional factory function for cljs.core/Box.
+ */
+cljs.core.__GT_Box = (function cljs$core$__GT_Box(val){
+return (new cljs.core.Box(val));
+});
+
+
+
+
+
+
+cljs.core.key_test = (function cljs$core$key_test(key,other){
+if((key === other)){
+return true;
+} else {
+if(cljs.core.keyword_identical_QMARK_(key,other)){
+return true;
+} else {
+return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(key,other);
+
+}
+}
+});
+cljs.core.mask = (function cljs$core$mask(hash,shift){
+return ((hash >>> shift) & (31));
+});
+cljs.core.clone_and_set = (function cljs$core$clone_and_set(var_args){
+var G__11802 = arguments.length;
+switch (G__11802) {
+case 3:
+return cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 5:
+return cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3 = (function (arr,i,a){
+var G__11803 = cljs.core.aclone(arr);
+(G__11803[i] = a);
+
+return G__11803;
+});
+
+cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$5 = (function (arr,i,a,j,b){
+var G__11804 = cljs.core.aclone(arr);
+(G__11804[i] = a);
+
+(G__11804[j] = b);
+
+return G__11804;
+});
+
+cljs.core.clone_and_set.cljs$lang$maxFixedArity = 5;
+
+cljs.core.remove_pair = (function cljs$core$remove_pair(arr,i){
+var new_arr = (new Array((arr.length - (2))));
+cljs.core.array_copy(arr,(0),new_arr,(0),((2) * i));
+
+cljs.core.array_copy(arr,((2) * (i + (1))),new_arr,((2) * i),(new_arr.length - ((2) * i)));
+
+return new_arr;
+});
+cljs.core.bitmap_indexed_node_index = (function cljs$core$bitmap_indexed_node_index(bitmap,bit){
+return cljs.core.bit_count((bitmap & (bit - (1))));
+});
+cljs.core.bitpos = (function cljs$core$bitpos(hash,shift){
+return ((1) << ((hash >>> shift) & 0x01f));
+});
+cljs.core.edit_and_set = (function cljs$core$edit_and_set(var_args){
+var G__11807 = arguments.length;
+switch (G__11807) {
+case 4:
+return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+case 6:
+return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$6((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4 = (function (inode,edit,i,a){
+var editable = inode.ensure_editable(edit);
+(editable.arr[i] = a);
+
+return editable;
+});
+
+cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$6 = (function (inode,edit,i,a,j,b){
+var editable = inode.ensure_editable(edit);
+(editable.arr[i] = a);
+
+(editable.arr[j] = b);
+
+return editable;
+});
+
+cljs.core.edit_and_set.cljs$lang$maxFixedArity = 6;
+
+cljs.core.inode_kv_reduce = (function cljs$core$inode_kv_reduce(arr,f,init){
+var len = arr.length;
+var i = (0);
+var init__$1 = init;
+while(true){
+if((i < len)){
+var init__$2 = (function (){var k = (arr[i]);
+if((!((k == null)))){
+var G__11809 = init__$1;
+var G__11810 = k;
+var G__11811 = (arr[(i + (1))]);
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11809,G__11810,G__11811) : f.call(null,G__11809,G__11810,G__11811));
+} else {
+var node = (arr[(i + (1))]);
+if((!((node == null)))){
+return node.kv_reduce(f,init__$1);
+} else {
+return init__$1;
+}
+}
+})();
+if(cljs.core.reduced_QMARK_(init__$2)){
+return init__$2;
+} else {
+var G__11812 = (i + (2));
+var G__11813 = init__$2;
+i = G__11812;
+init__$1 = G__11813;
+continue;
+}
+} else {
+return init__$1;
+}
+break;
+}
+});
+
+/**
+* @constructor
+*/
+cljs.core.NodeIterator = (function (arr,i,next_entry,next_iter){
+this.arr = arr;
+this.i = i;
+this.next_entry = next_entry;
+this.next_iter = next_iter;
+});
+cljs.core.NodeIterator.prototype.advance = (function (){
+var self__ = this;
+var this$ = this;
+var len = self__.arr.length;
+while(true){
+if((self__.i < len)){
+var key = (self__.arr[self__.i]);
+var node_or_val = (self__.arr[(self__.i + (1))]);
+var found = (((!((key == null))))?self__.next_entry = (new cljs.core.MapEntry(key,node_or_val,null)):(((!((node_or_val == null))))?(function (){var new_iter = cljs.core._iterator(node_or_val);
+if(new_iter.hasNext()){
+return self__.next_iter = new_iter;
+} else {
+return false;
+}
+})():false
+));
+self__.i = (self__.i + (2));
+
+if(found){
+return true;
+} else {
+continue;
+}
+} else {
+return false;
+}
+break;
+}
+});
+
+cljs.core.NodeIterator.prototype.hasNext = (function (){
+var self__ = this;
+var this$ = this;
+var or__7806__auto__ = (!((self__.next_entry == null)));
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (!((self__.next_iter == null)));
+if(or__7806__auto____$1){
+return or__7806__auto____$1;
+} else {
+return this$.advance();
+}
+}
+});
+
+cljs.core.NodeIterator.prototype.next = (function (){
+var self__ = this;
+var this$ = this;
+if((!((self__.next_entry == null)))){
+var ret = self__.next_entry;
+self__.next_entry = null;
+
+return ret;
+} else {
+if((!((self__.next_iter == null)))){
+var ret = self__.next_iter.next();
+if(self__.next_iter.hasNext()){
+} else {
+self__.next_iter = null;
+}
+
+return ret;
+} else {
+if(this$.advance()){
+return this$.next();
+} else {
+throw (new Error("No such element"));
+
+}
+}
+}
+});
+
+cljs.core.NodeIterator.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.NodeIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"arr","arr",2115492975,null),cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"next-entry","next-entry",1091342476,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"next-iter","next-iter",1526626239,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.NodeIterator.cljs$lang$type = true;
+
+cljs.core.NodeIterator.cljs$lang$ctorStr = "cljs.core/NodeIterator";
+
+cljs.core.NodeIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/NodeIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/NodeIterator.
+ */
+cljs.core.__GT_NodeIterator = (function cljs$core$__GT_NodeIterator(arr,i,next_entry,next_iter){
+return (new cljs.core.NodeIterator(arr,i,next_entry,next_iter));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IIterable}
+*/
+cljs.core.BitmapIndexedNode = (function (edit,bitmap,arr){
+this.edit = edit;
+this.bitmap = bitmap;
+this.arr = arr;
+this.cljs$lang$protocol_mask$partition1$ = 131072;
+this.cljs$lang$protocol_mask$partition0$ = 0;
+});
+cljs.core.BitmapIndexedNode.prototype.ensure_editable = (function (e){
+var self__ = this;
+var inode = this;
+if((e === self__.edit)){
+return inode;
+} else {
+var n = cljs.core.bit_count(self__.bitmap);
+var new_arr = (new Array((((n < (0)))?(4):((2) * (n + (1))))));
+cljs.core.array_copy(self__.arr,(0),new_arr,(0),((2) * n));
+
+return (new cljs.core.BitmapIndexedNode(e,self__.bitmap,new_arr));
+}
+});
+
+cljs.core.BitmapIndexedNode.prototype.inode_without_BANG_ = (function (edit__$1,shift,hash,key,removed_leaf_QMARK_){
+var self__ = this;
+var inode = this;
+var bit = (1 << ((hash >>> shift) & 0x01f));
+if(((self__.bitmap & bit) === (0))){
+return inode;
+} else {
+var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
+var key_or_nil = (self__.arr[((2) * idx)]);
+var val_or_node = (self__.arr[(((2) * idx) + (1))]);
+if((key_or_nil == null)){
+var n = val_or_node.inode_without_BANG_(edit__$1,(shift + (5)),hash,key,removed_leaf_QMARK_);
+if((n === val_or_node)){
+return inode;
+} else {
+if((!((n == null)))){
+return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,(((2) * idx) + (1)),n);
+} else {
+if((self__.bitmap === bit)){
+return null;
+} else {
+return inode.edit_and_remove_pair(edit__$1,bit,idx);
+
+}
+}
+}
+} else {
+if(cljs.core.key_test(key,key_or_nil)){
+removed_leaf_QMARK_.val = true;
+
+return inode.edit_and_remove_pair(edit__$1,bit,idx);
+} else {
+return inode;
+
+}
+}
+}
+});
+
+cljs.core.BitmapIndexedNode.prototype.edit_and_remove_pair = (function (e,bit,i){
+var self__ = this;
+var inode = this;
+if((self__.bitmap === bit)){
+return null;
+} else {
+var editable = inode.ensure_editable(e);
+var earr = editable.arr;
+var len = earr.length;
+editable.bitmap = (bit ^ editable.bitmap);
+
+cljs.core.array_copy(earr,((2) * (i + (1))),earr,((2) * i),(len - ((2) * (i + (1)))));
+
+(earr[(len - (2))] = null);
+
+(earr[(len - (1))] = null);
+
+return editable;
+}
+});
+
+cljs.core.BitmapIndexedNode.prototype.inode_seq = (function (){
+var self__ = this;
+var inode = this;
+return cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$1(self__.arr);
+});
+
+cljs.core.BitmapIndexedNode.prototype.kv_reduce = (function (f,init){
+var self__ = this;
+var inode = this;
+return cljs.core.inode_kv_reduce(self__.arr,f,init);
+});
+
+cljs.core.BitmapIndexedNode.prototype.inode_lookup = (function (shift,hash,key,not_found){
+var self__ = this;
+var inode = this;
+var bit = (1 << ((hash >>> shift) & 0x01f));
+if(((self__.bitmap & bit) === (0))){
+return not_found;
+} else {
+var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
+var key_or_nil = (self__.arr[((2) * idx)]);
+var val_or_node = (self__.arr[(((2) * idx) + (1))]);
+if((key_or_nil == null)){
+return val_or_node.inode_lookup((shift + (5)),hash,key,not_found);
+} else {
+if(cljs.core.key_test(key,key_or_nil)){
+return val_or_node;
+} else {
+return not_found;
+
+}
+}
+}
+});
+
+cljs.core.BitmapIndexedNode.prototype.inode_assoc_BANG_ = (function (edit__$1,shift,hash,key,val,added_leaf_QMARK_){
+var self__ = this;
+var inode = this;
+var bit = (1 << ((hash >>> shift) & 0x01f));
+var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
+if(((self__.bitmap & bit) === (0))){
+var n = cljs.core.bit_count(self__.bitmap);
+if((((2) * n) < self__.arr.length)){
+var editable = inode.ensure_editable(edit__$1);
+var earr = editable.arr;
+added_leaf_QMARK_.val = true;
+
+cljs.core.array_copy_downward(earr,((2) * idx),earr,((2) * (idx + (1))),((2) * (n - idx)));
+
+(earr[((2) * idx)] = key);
+
+(earr[(((2) * idx) + (1))] = val);
+
+editable.bitmap = (editable.bitmap | bit);
+
+return editable;
+} else {
+if((n >= (16))){
+var nodes = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
+var jdx = ((hash >>> shift) & 0x01f);
+(nodes[jdx] = cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit__$1,(shift + (5)),hash,key,val,added_leaf_QMARK_));
+
+var i_11814 = (0);
+var j_11815 = (0);
+while(true){
+if((i_11814 < (32))){
+if((((self__.bitmap >>> i_11814) & (1)) === (0))){
+var G__11816 = (i_11814 + (1));
+var G__11817 = j_11815;
+i_11814 = G__11816;
+j_11815 = G__11817;
+continue;
+} else {
+(nodes[i_11814] = (((!(((self__.arr[j_11815]) == null))))?cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit__$1,(shift + (5)),cljs.core.hash((self__.arr[j_11815])),(self__.arr[j_11815]),(self__.arr[(j_11815 + (1))]),added_leaf_QMARK_):(self__.arr[(j_11815 + (1))])));
+
+var G__11818 = (i_11814 + (1));
+var G__11819 = (j_11815 + (2));
+i_11814 = G__11818;
+j_11815 = G__11819;
+continue;
+}
+} else {
+}
+break;
+}
+
+return (new cljs.core.ArrayNode(edit__$1,(n + (1)),nodes));
+} else {
+var new_arr = (new Array(((2) * (n + (4)))));
+cljs.core.array_copy(self__.arr,(0),new_arr,(0),((2) * idx));
+
+(new_arr[((2) * idx)] = key);
+
+(new_arr[(((2) * idx) + (1))] = val);
+
+cljs.core.array_copy(self__.arr,((2) * idx),new_arr,((2) * (idx + (1))),((2) * (n - idx)));
+
+added_leaf_QMARK_.val = true;
+
+var editable = inode.ensure_editable(edit__$1);
+editable.arr = new_arr;
+
+editable.bitmap = (editable.bitmap | bit);
+
+return editable;
+
+}
+}
+} else {
+var key_or_nil = (self__.arr[((2) * idx)]);
+var val_or_node = (self__.arr[(((2) * idx) + (1))]);
+if((key_or_nil == null)){
+var n = val_or_node.inode_assoc_BANG_(edit__$1,(shift + (5)),hash,key,val,added_leaf_QMARK_);
+if((n === val_or_node)){
+return inode;
+} else {
+return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,(((2) * idx) + (1)),n);
+}
+} else {
+if(cljs.core.key_test(key,key_or_nil)){
+if((val === val_or_node)){
+return inode;
+} else {
+return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,(((2) * idx) + (1)),val);
+}
+} else {
+added_leaf_QMARK_.val = true;
+
+return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$6(inode,edit__$1,((2) * idx),null,(((2) * idx) + (1)),cljs.core.create_node.cljs$core$IFn$_invoke$arity$7(edit__$1,(shift + (5)),key_or_nil,val_or_node,hash,key,val));
+
+}
+}
+}
+});
+
+cljs.core.BitmapIndexedNode.prototype.inode_assoc = (function (shift,hash,key,val,added_leaf_QMARK_){
+var self__ = this;
+var inode = this;
+var bit = (1 << ((hash >>> shift) & 0x01f));
+var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
+if(((self__.bitmap & bit) === (0))){
+var n = cljs.core.bit_count(self__.bitmap);
+if((n >= (16))){
+var nodes = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
+var jdx = ((hash >>> shift) & 0x01f);
+(nodes[jdx] = cljs.core.BitmapIndexedNode.EMPTY.inode_assoc((shift + (5)),hash,key,val,added_leaf_QMARK_));
+
+var i_11820 = (0);
+var j_11821 = (0);
+while(true){
+if((i_11820 < (32))){
+if((((self__.bitmap >>> i_11820) & (1)) === (0))){
+var G__11822 = (i_11820 + (1));
+var G__11823 = j_11821;
+i_11820 = G__11822;
+j_11821 = G__11823;
+continue;
+} else {
+(nodes[i_11820] = (((!(((self__.arr[j_11821]) == null))))?cljs.core.BitmapIndexedNode.EMPTY.inode_assoc((shift + (5)),cljs.core.hash((self__.arr[j_11821])),(self__.arr[j_11821]),(self__.arr[(j_11821 + (1))]),added_leaf_QMARK_):(self__.arr[(j_11821 + (1))])));
+
+var G__11824 = (i_11820 + (1));
+var G__11825 = (j_11821 + (2));
+i_11820 = G__11824;
+j_11821 = G__11825;
+continue;
+}
+} else {
+}
+break;
+}
+
+return (new cljs.core.ArrayNode(null,(n + (1)),nodes));
+} else {
+var new_arr = (new Array(((2) * (n + (1)))));
+cljs.core.array_copy(self__.arr,(0),new_arr,(0),((2) * idx));
+
+(new_arr[((2) * idx)] = key);
+
+(new_arr[(((2) * idx) + (1))] = val);
+
+cljs.core.array_copy(self__.arr,((2) * idx),new_arr,((2) * (idx + (1))),((2) * (n - idx)));
+
+added_leaf_QMARK_.val = true;
+
+return (new cljs.core.BitmapIndexedNode(null,(self__.bitmap | bit),new_arr));
+}
+} else {
+var key_or_nil = (self__.arr[((2) * idx)]);
+var val_or_node = (self__.arr[(((2) * idx) + (1))]);
+if((key_or_nil == null)){
+var n = val_or_node.inode_assoc((shift + (5)),hash,key,val,added_leaf_QMARK_);
+if((n === val_or_node)){
+return inode;
+} else {
+return (new cljs.core.BitmapIndexedNode(null,self__.bitmap,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,(((2) * idx) + (1)),n)));
+}
+} else {
+if(cljs.core.key_test(key,key_or_nil)){
+if((val === val_or_node)){
+return inode;
+} else {
+return (new cljs.core.BitmapIndexedNode(null,self__.bitmap,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,(((2) * idx) + (1)),val)));
+}
+} else {
+added_leaf_QMARK_.val = true;
+
+return (new cljs.core.BitmapIndexedNode(null,self__.bitmap,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$5(self__.arr,((2) * idx),null,(((2) * idx) + (1)),cljs.core.create_node.cljs$core$IFn$_invoke$arity$6((shift + (5)),key_or_nil,val_or_node,hash,key,val))));
+
+}
+}
+}
+});
+
+cljs.core.BitmapIndexedNode.prototype.inode_find = (function (shift,hash,key,not_found){
+var self__ = this;
+var inode = this;
+var bit = (1 << ((hash >>> shift) & 0x01f));
+if(((self__.bitmap & bit) === (0))){
+return not_found;
+} else {
+var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
+var key_or_nil = (self__.arr[((2) * idx)]);
+var val_or_node = (self__.arr[(((2) * idx) + (1))]);
+if((key_or_nil == null)){
+return val_or_node.inode_find((shift + (5)),hash,key,not_found);
+} else {
+if(cljs.core.key_test(key,key_or_nil)){
+return (new cljs.core.MapEntry(key_or_nil,val_or_node,null));
+} else {
+return not_found;
+
+}
+}
+}
+});
+
+cljs.core.BitmapIndexedNode.prototype.inode_without = (function (shift,hash,key){
+var self__ = this;
+var inode = this;
+var bit = (1 << ((hash >>> shift) & 0x01f));
+if(((self__.bitmap & bit) === (0))){
+return inode;
+} else {
+var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
+var key_or_nil = (self__.arr[((2) * idx)]);
+var val_or_node = (self__.arr[(((2) * idx) + (1))]);
+if((key_or_nil == null)){
+var n = val_or_node.inode_without((shift + (5)),hash,key);
+if((n === val_or_node)){
+return inode;
+} else {
+if((!((n == null)))){
+return (new cljs.core.BitmapIndexedNode(null,self__.bitmap,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,(((2) * idx) + (1)),n)));
+} else {
+if((self__.bitmap === bit)){
+return null;
+} else {
+return (new cljs.core.BitmapIndexedNode(null,(self__.bitmap ^ bit),cljs.core.remove_pair(self__.arr,idx)));
+
+}
+}
+}
+} else {
+if(cljs.core.key_test(key,key_or_nil)){
+return (new cljs.core.BitmapIndexedNode(null,(self__.bitmap ^ bit),cljs.core.remove_pair(self__.arr,idx)));
+} else {
+return inode;
+
+}
+}
+}
+});
+
+cljs.core.BitmapIndexedNode.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.NodeIterator(self__.arr,(0),null,null));
+});
+
+cljs.core.BitmapIndexedNode.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"edit","edit",-1302639,null),cljs.core.with_meta(new cljs.core.Symbol(null,"bitmap","bitmap",501334601,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"arr","arr",2115492975,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.BitmapIndexedNode.cljs$lang$type = true;
+
+cljs.core.BitmapIndexedNode.cljs$lang$ctorStr = "cljs.core/BitmapIndexedNode";
+
+cljs.core.BitmapIndexedNode.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/BitmapIndexedNode");
+});
+
+/**
+ * Positional factory function for cljs.core/BitmapIndexedNode.
+ */
+cljs.core.__GT_BitmapIndexedNode = (function cljs$core$__GT_BitmapIndexedNode(edit,bitmap,arr){
+return (new cljs.core.BitmapIndexedNode(edit,bitmap,arr));
+});
+
+cljs.core.BitmapIndexedNode.EMPTY = (new cljs.core.BitmapIndexedNode(null,(0),[]));
+cljs.core.pack_array_node = (function cljs$core$pack_array_node(array_node,edit,idx){
+var arr = array_node.arr;
+var len = arr.length;
+var new_arr = (new Array(((2) * (array_node.cnt - (1)))));
+var i = (0);
+var j = (1);
+var bitmap = (0);
+while(true){
+if((i < len)){
+if((((!((i === idx)))) && ((!(((arr[i]) == null)))))){
+(new_arr[j] = (arr[i]));
+
+var G__11826 = (i + (1));
+var G__11827 = (j + (2));
+var G__11828 = (bitmap | ((1) << i));
+i = G__11826;
+j = G__11827;
+bitmap = G__11828;
+continue;
+} else {
+var G__11829 = (i + (1));
+var G__11830 = j;
+var G__11831 = bitmap;
+i = G__11829;
+j = G__11830;
+bitmap = G__11831;
+continue;
+}
+} else {
+return (new cljs.core.BitmapIndexedNode(edit,bitmap,new_arr));
+}
+break;
+}
+});
+
+/**
+* @constructor
+*/
+cljs.core.ArrayNodeIterator = (function (arr,i,next_iter){
+this.arr = arr;
+this.i = i;
+this.next_iter = next_iter;
+});
+cljs.core.ArrayNodeIterator.prototype.hasNext = (function (){
+var self__ = this;
+var this$ = this;
+var len = self__.arr.length;
+while(true){
+if((!((((!((self__.next_iter == null)))) && (self__.next_iter.hasNext()))))){
+if((self__.i < len)){
+var node = (self__.arr[self__.i]);
+self__.i = (self__.i + (1));
+
+if((!((node == null)))){
+self__.next_iter = cljs.core._iterator(node);
+} else {
+}
+
+continue;
+} else {
+return false;
+}
+} else {
+return true;
+}
+break;
+}
+});
+
+cljs.core.ArrayNodeIterator.prototype.next = (function (){
+var self__ = this;
+var this$ = this;
+if(this$.hasNext()){
+return self__.next_iter.next();
+} else {
+throw (new Error("No such element"));
+}
+});
+
+cljs.core.ArrayNodeIterator.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.ArrayNodeIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"arr","arr",2115492975,null),cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"next-iter","next-iter",1526626239,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ArrayNodeIterator.cljs$lang$type = true;
+
+cljs.core.ArrayNodeIterator.cljs$lang$ctorStr = "cljs.core/ArrayNodeIterator";
+
+cljs.core.ArrayNodeIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ArrayNodeIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/ArrayNodeIterator.
+ */
+cljs.core.__GT_ArrayNodeIterator = (function cljs$core$__GT_ArrayNodeIterator(arr,i,next_iter){
+return (new cljs.core.ArrayNodeIterator(arr,i,next_iter));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IIterable}
+*/
+cljs.core.ArrayNode = (function (edit,cnt,arr){
+this.edit = edit;
+this.cnt = cnt;
+this.arr = arr;
+this.cljs$lang$protocol_mask$partition1$ = 131072;
+this.cljs$lang$protocol_mask$partition0$ = 0;
+});
+cljs.core.ArrayNode.prototype.ensure_editable = (function (e){
+var self__ = this;
+var inode = this;
+if((e === self__.edit)){
+return inode;
+} else {
+return (new cljs.core.ArrayNode(e,self__.cnt,cljs.core.aclone(self__.arr)));
+}
+});
+
+cljs.core.ArrayNode.prototype.inode_without_BANG_ = (function (edit__$1,shift,hash,key,removed_leaf_QMARK_){
+var self__ = this;
+var inode = this;
+var idx = ((hash >>> shift) & 0x01f);
+var node = (self__.arr[idx]);
+if((node == null)){
+return inode;
+} else {
+var n = node.inode_without_BANG_(edit__$1,(shift + (5)),hash,key,removed_leaf_QMARK_);
+if((n === node)){
+return inode;
+} else {
+if((n == null)){
+if((self__.cnt <= (8))){
+return cljs.core.pack_array_node(inode,edit__$1,idx);
+} else {
+var editable = cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,idx,n);
+editable.cnt = (editable.cnt - (1));
+
+return editable;
+}
+} else {
+return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,idx,n);
+
+}
+}
+}
+});
+
+cljs.core.ArrayNode.prototype.inode_seq = (function (){
+var self__ = this;
+var inode = this;
+return cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$1(self__.arr);
+});
+
+cljs.core.ArrayNode.prototype.kv_reduce = (function (f,init){
+var self__ = this;
+var inode = this;
+var len = self__.arr.length;
+var i = (0);
+var init__$1 = init;
+while(true){
+if((i < len)){
+var node = (self__.arr[i]);
+if((!((node == null)))){
+var init__$2 = node.kv_reduce(f,init__$1);
+if(cljs.core.reduced_QMARK_(init__$2)){
+return init__$2;
+} else {
+var G__11832 = (i + (1));
+var G__11833 = init__$2;
+i = G__11832;
+init__$1 = G__11833;
+continue;
+}
+} else {
+var G__11834 = (i + (1));
+var G__11835 = init__$1;
+i = G__11834;
+init__$1 = G__11835;
+continue;
+}
+} else {
+return init__$1;
+}
+break;
+}
+});
+
+cljs.core.ArrayNode.prototype.inode_lookup = (function (shift,hash,key,not_found){
+var self__ = this;
+var inode = this;
+var idx = ((hash >>> shift) & 0x01f);
+var node = (self__.arr[idx]);
+if((!((node == null)))){
+return node.inode_lookup((shift + (5)),hash,key,not_found);
+} else {
+return not_found;
+}
+});
+
+cljs.core.ArrayNode.prototype.inode_assoc_BANG_ = (function (edit__$1,shift,hash,key,val,added_leaf_QMARK_){
+var self__ = this;
+var inode = this;
+var idx = ((hash >>> shift) & 0x01f);
+var node = (self__.arr[idx]);
+if((node == null)){
+var editable = cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,idx,cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit__$1,(shift + (5)),hash,key,val,added_leaf_QMARK_));
+editable.cnt = (editable.cnt + (1));
+
+return editable;
+} else {
+var n = node.inode_assoc_BANG_(edit__$1,(shift + (5)),hash,key,val,added_leaf_QMARK_);
+if((n === node)){
+return inode;
+} else {
+return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,idx,n);
+}
+}
+});
+
+cljs.core.ArrayNode.prototype.inode_assoc = (function (shift,hash,key,val,added_leaf_QMARK_){
+var self__ = this;
+var inode = this;
+var idx = ((hash >>> shift) & 0x01f);
+var node = (self__.arr[idx]);
+if((node == null)){
+return (new cljs.core.ArrayNode(null,(self__.cnt + (1)),cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,idx,cljs.core.BitmapIndexedNode.EMPTY.inode_assoc((shift + (5)),hash,key,val,added_leaf_QMARK_))));
+} else {
+var n = node.inode_assoc((shift + (5)),hash,key,val,added_leaf_QMARK_);
+if((n === node)){
+return inode;
+} else {
+return (new cljs.core.ArrayNode(null,self__.cnt,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,idx,n)));
+}
+}
+});
+
+cljs.core.ArrayNode.prototype.inode_find = (function (shift,hash,key,not_found){
+var self__ = this;
+var inode = this;
+var idx = ((hash >>> shift) & 0x01f);
+var node = (self__.arr[idx]);
+if((!((node == null)))){
+return node.inode_find((shift + (5)),hash,key,not_found);
+} else {
+return not_found;
+}
+});
+
+cljs.core.ArrayNode.prototype.inode_without = (function (shift,hash,key){
+var self__ = this;
+var inode = this;
+var idx = ((hash >>> shift) & 0x01f);
+var node = (self__.arr[idx]);
+if((!((node == null)))){
+var n = node.inode_without((shift + (5)),hash,key);
+if((n === node)){
+return inode;
+} else {
+if((n == null)){
+if((self__.cnt <= (8))){
+return cljs.core.pack_array_node(inode,null,idx);
+} else {
+return (new cljs.core.ArrayNode(null,(self__.cnt - (1)),cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,idx,n)));
+}
+} else {
+return (new cljs.core.ArrayNode(null,self__.cnt,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,idx,n)));
+
+}
+}
+} else {
+return inode;
+}
+});
+
+cljs.core.ArrayNode.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.ArrayNodeIterator(self__.arr,(0),null));
+});
+
+cljs.core.ArrayNode.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"edit","edit",-1302639,null),cljs.core.with_meta(new cljs.core.Symbol(null,"cnt","cnt",1924510325,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"arr","arr",2115492975,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ArrayNode.cljs$lang$type = true;
+
+cljs.core.ArrayNode.cljs$lang$ctorStr = "cljs.core/ArrayNode";
+
+cljs.core.ArrayNode.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ArrayNode");
+});
+
+/**
+ * Positional factory function for cljs.core/ArrayNode.
+ */
+cljs.core.__GT_ArrayNode = (function cljs$core$__GT_ArrayNode(edit,cnt,arr){
+return (new cljs.core.ArrayNode(edit,cnt,arr));
+});
+
+cljs.core.hash_collision_node_find_index = (function cljs$core$hash_collision_node_find_index(arr,cnt,key){
+var lim = ((2) * cnt);
+var i = (0);
+while(true){
+if((i < lim)){
+if(cljs.core.key_test(key,(arr[i]))){
+return i;
+} else {
+var G__11836 = (i + (2));
+i = G__11836;
+continue;
+}
+} else {
+return (-1);
+}
+break;
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IIterable}
+*/
+cljs.core.HashCollisionNode = (function (edit,collision_hash,cnt,arr){
+this.edit = edit;
+this.collision_hash = collision_hash;
+this.cnt = cnt;
+this.arr = arr;
+this.cljs$lang$protocol_mask$partition1$ = 131072;
+this.cljs$lang$protocol_mask$partition0$ = 0;
+});
+cljs.core.HashCollisionNode.prototype.ensure_editable = (function (e){
+var self__ = this;
+var inode = this;
+if((e === self__.edit)){
+return inode;
+} else {
+var new_arr = (new Array(((2) * (self__.cnt + (1)))));
+cljs.core.array_copy(self__.arr,(0),new_arr,(0),((2) * self__.cnt));
+
+return (new cljs.core.HashCollisionNode(e,self__.collision_hash,self__.cnt,new_arr));
+}
+});
+
+cljs.core.HashCollisionNode.prototype.inode_without_BANG_ = (function (edit__$1,shift,hash,key,removed_leaf_QMARK_){
+var self__ = this;
+var inode = this;
+var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
+if((idx === (-1))){
+return inode;
+} else {
+removed_leaf_QMARK_.val = true;
+
+if((self__.cnt === (1))){
+return null;
+} else {
+var editable = inode.ensure_editable(edit__$1);
+var earr = editable.arr;
+(earr[idx] = (earr[(((2) * self__.cnt) - (2))]));
+
+(earr[(idx + (1))] = (earr[(((2) * self__.cnt) - (1))]));
+
+(earr[(((2) * self__.cnt) - (1))] = null);
+
+(earr[(((2) * self__.cnt) - (2))] = null);
+
+editable.cnt = (editable.cnt - (1));
+
+return editable;
+}
+}
+});
+
+cljs.core.HashCollisionNode.prototype.inode_seq = (function (){
+var self__ = this;
+var inode = this;
+return cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$1(self__.arr);
+});
+
+cljs.core.HashCollisionNode.prototype.kv_reduce = (function (f,init){
+var self__ = this;
+var inode = this;
+return cljs.core.inode_kv_reduce(self__.arr,f,init);
+});
+
+cljs.core.HashCollisionNode.prototype.inode_lookup = (function (shift,hash,key,not_found){
+var self__ = this;
+var inode = this;
+var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
+if((idx < (0))){
+return not_found;
+} else {
+if(cljs.core.key_test(key,(self__.arr[idx]))){
+return (self__.arr[(idx + (1))]);
+} else {
+return not_found;
+
+}
+}
+});
+
+cljs.core.HashCollisionNode.prototype.inode_assoc_BANG_ = (function (edit__$1,shift,hash,key,val,added_leaf_QMARK_){
+var self__ = this;
+var inode = this;
+if((hash === self__.collision_hash)){
+var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
+if((idx === (-1))){
+if((self__.arr.length > ((2) * self__.cnt))){
+var editable = cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$6(inode,edit__$1,((2) * self__.cnt),key,(((2) * self__.cnt) + (1)),val);
+added_leaf_QMARK_.val = true;
+
+editable.cnt = (editable.cnt + (1));
+
+return editable;
+} else {
+var len = self__.arr.length;
+var new_arr = (new Array((len + (2))));
+cljs.core.array_copy(self__.arr,(0),new_arr,(0),len);
+
+(new_arr[len] = key);
+
+(new_arr[(len + (1))] = val);
+
+added_leaf_QMARK_.val = true;
+
+return inode.ensure_editable_array(edit__$1,(self__.cnt + (1)),new_arr);
+}
+} else {
+if(((self__.arr[(idx + (1))]) === val)){
+return inode;
+} else {
+return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,(idx + (1)),val);
+}
+}
+} else {
+return (new cljs.core.BitmapIndexedNode(edit__$1,(1 << ((self__.collision_hash >>> shift) & 0x01f)),[null,inode,null,null])).inode_assoc_BANG_(edit__$1,shift,hash,key,val,added_leaf_QMARK_);
+}
+});
+
+cljs.core.HashCollisionNode.prototype.inode_assoc = (function (shift,hash,key,val,added_leaf_QMARK_){
+var self__ = this;
+var inode = this;
+if((hash === self__.collision_hash)){
+var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
+if((idx === (-1))){
+var len = ((2) * self__.cnt);
+var new_arr = (new Array((len + (2))));
+cljs.core.array_copy(self__.arr,(0),new_arr,(0),len);
+
+(new_arr[len] = key);
+
+(new_arr[(len + (1))] = val);
+
+added_leaf_QMARK_.val = true;
+
+return (new cljs.core.HashCollisionNode(null,self__.collision_hash,(self__.cnt + (1)),new_arr));
+} else {
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2((self__.arr[(idx + (1))]),val)){
+return inode;
+} else {
+return (new cljs.core.HashCollisionNode(null,self__.collision_hash,self__.cnt,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,(idx + (1)),val)));
+}
+}
+} else {
+return (new cljs.core.BitmapIndexedNode(null,(1 << ((self__.collision_hash >>> shift) & 0x01f)),[null,inode])).inode_assoc(shift,hash,key,val,added_leaf_QMARK_);
+}
+});
+
+cljs.core.HashCollisionNode.prototype.ensure_editable_array = (function (e,count,array){
+var self__ = this;
+var inode = this;
+if((e === self__.edit)){
+self__.arr = array;
+
+self__.cnt = count;
+
+return inode;
+} else {
+return (new cljs.core.HashCollisionNode(self__.edit,self__.collision_hash,count,array));
+}
+});
+
+cljs.core.HashCollisionNode.prototype.inode_find = (function (shift,hash,key,not_found){
+var self__ = this;
+var inode = this;
+var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
+if((idx < (0))){
+return not_found;
+} else {
+if(cljs.core.key_test(key,(self__.arr[idx]))){
+return (new cljs.core.MapEntry((self__.arr[idx]),(self__.arr[(idx + (1))]),null));
+} else {
+return not_found;
+
+}
+}
+});
+
+cljs.core.HashCollisionNode.prototype.inode_without = (function (shift,hash,key){
+var self__ = this;
+var inode = this;
+var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
+if((idx === (-1))){
+return inode;
+} else {
+if((self__.cnt === (1))){
+return null;
+} else {
+return (new cljs.core.HashCollisionNode(null,self__.collision_hash,(self__.cnt - (1)),cljs.core.remove_pair(self__.arr,cljs.core.quot(idx,(2)))));
+
+}
+}
+});
+
+cljs.core.HashCollisionNode.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.NodeIterator(self__.arr,(0),null,null));
+});
+
+cljs.core.HashCollisionNode.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"edit","edit",-1302639,null),cljs.core.with_meta(new cljs.core.Symbol(null,"collision-hash","collision-hash",-35831342,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"cnt","cnt",1924510325,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"arr","arr",2115492975,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.HashCollisionNode.cljs$lang$type = true;
+
+cljs.core.HashCollisionNode.cljs$lang$ctorStr = "cljs.core/HashCollisionNode";
+
+cljs.core.HashCollisionNode.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/HashCollisionNode");
+});
+
+/**
+ * Positional factory function for cljs.core/HashCollisionNode.
+ */
+cljs.core.__GT_HashCollisionNode = (function cljs$core$__GT_HashCollisionNode(edit,collision_hash,cnt,arr){
+return (new cljs.core.HashCollisionNode(edit,collision_hash,cnt,arr));
+});
+
+cljs.core.create_node = (function cljs$core$create_node(var_args){
+var G__11838 = arguments.length;
+switch (G__11838) {
+case 6:
+return cljs.core.create_node.cljs$core$IFn$_invoke$arity$6((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]));
+
+break;
+case 7:
+return cljs.core.create_node.cljs$core$IFn$_invoke$arity$7((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]),(arguments[(6)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.create_node.cljs$core$IFn$_invoke$arity$6 = (function (shift,key1,val1,key2hash,key2,val2){
+var key1hash = cljs.core.hash(key1);
+if((key1hash === key2hash)){
+return (new cljs.core.HashCollisionNode(null,key1hash,(2),[key1,val1,key2,val2]));
+} else {
+var added_leaf_QMARK_ = (new cljs.core.Box(false));
+return cljs.core.BitmapIndexedNode.EMPTY.inode_assoc(shift,key1hash,key1,val1,added_leaf_QMARK_).inode_assoc(shift,key2hash,key2,val2,added_leaf_QMARK_);
+}
+});
+
+cljs.core.create_node.cljs$core$IFn$_invoke$arity$7 = (function (edit,shift,key1,val1,key2hash,key2,val2){
+var key1hash = cljs.core.hash(key1);
+if((key1hash === key2hash)){
+return (new cljs.core.HashCollisionNode(null,key1hash,(2),[key1,val1,key2,val2]));
+} else {
+var added_leaf_QMARK_ = (new cljs.core.Box(false));
+return cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit,shift,key1hash,key1,val1,added_leaf_QMARK_).inode_assoc_BANG_(edit,shift,key2hash,key2,val2,added_leaf_QMARK_);
+}
+});
+
+cljs.core.create_node.cljs$lang$maxFixedArity = 7;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.NodeSeq = (function (meta,nodes,i,s,__hash){
+this.meta = meta;
+this.nodes = nodes;
+this.i = i;
+this.s = s;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 32374988;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.NodeSeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.NodeSeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.NodeSeq.prototype.indexOf = (function() {
+var G__11840 = null;
+var G__11840__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11840__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11840 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11840__1.call(this,x);
+case 2:
+return G__11840__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11840.cljs$core$IFn$_invoke$arity$1 = G__11840__1;
+G__11840.cljs$core$IFn$_invoke$arity$2 = G__11840__2;
+return G__11840;
+})()
+;
+
+cljs.core.NodeSeq.prototype.lastIndexOf = (function() {
+var G__11841 = null;
+var G__11841__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11841__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11841 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11841__1.call(this,x);
+case 2:
+return G__11841__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11841.cljs$core$IFn$_invoke$arity$1 = G__11841__1;
+G__11841.cljs$core$IFn$_invoke$arity$2 = G__11841__2;
+return G__11841;
+})()
+;
+
+cljs.core.NodeSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.s == null)){
+return cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3(self__.nodes,(self__.i + (2)),null);
+} else {
+return cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3(self__.nodes,self__.i,cljs.core.next(self__.s));
+}
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.s == null)){
+return (new cljs.core.MapEntry((self__.nodes[self__.i]),(self__.nodes[(self__.i + (1))]),null));
+} else {
+return cljs.core.first(self__.s);
+}
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var ret = (((self__.s == null))?cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3(self__.nodes,(self__.i + (2)),null):cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3(self__.nodes,self__.i,cljs.core.next(self__.s)));
+if((!((ret == null)))){
+return ret;
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return this$__$1;
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.NodeSeq(meta__$1,self__.nodes,self__.i,self__.s,self__.__hash));
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.NodeSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"nodes","nodes",-459054278,null),new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.Symbol(null,"s","s",-948495851,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.NodeSeq.cljs$lang$type = true;
+
+cljs.core.NodeSeq.cljs$lang$ctorStr = "cljs.core/NodeSeq";
+
+cljs.core.NodeSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/NodeSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/NodeSeq.
+ */
+cljs.core.__GT_NodeSeq = (function cljs$core$__GT_NodeSeq(meta,nodes,i,s,__hash){
+return (new cljs.core.NodeSeq(meta,nodes,i,s,__hash));
+});
+
+var G__11842_11845 = cljs.core.NodeSeq.prototype;
+var G__11843_11846 = cljs.core.ITER_SYMBOL;
+var G__11844_11847 = ((function (G__11842_11845,G__11843_11846){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11842_11845,G__11843_11846))
+;
+goog.object.set(G__11842_11845,G__11843_11846,G__11844_11847);
+cljs.core.create_inode_seq = (function cljs$core$create_inode_seq(var_args){
+var G__11849 = arguments.length;
+switch (G__11849) {
+case 1:
+return cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 3:
+return cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$1 = (function (nodes){
+return cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3(nodes,(0),null);
+});
+
+cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3 = (function (nodes,i,s){
+if((s == null)){
+var len = nodes.length;
+var j = i;
+while(true){
+if((j < len)){
+if((!(((nodes[j]) == null)))){
+return (new cljs.core.NodeSeq(null,nodes,j,null,null));
+} else {
+var temp__4655__auto__ = (nodes[(j + (1))]);
+if(cljs.core.truth_(temp__4655__auto__)){
+var node = temp__4655__auto__;
+var temp__4655__auto____$1 = node.inode_seq();
+if(cljs.core.truth_(temp__4655__auto____$1)){
+var node_seq = temp__4655__auto____$1;
+return (new cljs.core.NodeSeq(null,nodes,(j + (2)),node_seq,null));
+} else {
+var G__11851 = (j + (2));
+j = G__11851;
+continue;
+}
+} else {
+var G__11852 = (j + (2));
+j = G__11852;
+continue;
+}
+}
+} else {
+return null;
+}
+break;
+}
+} else {
+return (new cljs.core.NodeSeq(null,nodes,i,s,null));
+}
+});
+
+cljs.core.create_inode_seq.cljs$lang$maxFixedArity = 3;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.ArrayNodeSeq = (function (meta,nodes,i,s,__hash){
+this.meta = meta;
+this.nodes = nodes;
+this.i = i;
+this.s = s;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 32374988;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.ArrayNodeSeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.ArrayNodeSeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.ArrayNodeSeq.prototype.indexOf = (function() {
+var G__11853 = null;
+var G__11853__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11853__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11853 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11853__1.call(this,x);
+case 2:
+return G__11853__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11853.cljs$core$IFn$_invoke$arity$1 = G__11853__1;
+G__11853.cljs$core$IFn$_invoke$arity$2 = G__11853__2;
+return G__11853;
+})()
+;
+
+cljs.core.ArrayNodeSeq.prototype.lastIndexOf = (function() {
+var G__11854 = null;
+var G__11854__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11854__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11854 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11854__1.call(this,x);
+case 2:
+return G__11854__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11854.cljs$core$IFn$_invoke$arity$1 = G__11854__1;
+G__11854.cljs$core$IFn$_invoke$arity$2 = G__11854__2;
+return G__11854;
+})()
+;
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$4(null,self__.nodes,self__.i,cljs.core.next(self__.s));
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.first(self__.s);
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var ret = cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$4(null,self__.nodes,self__.i,cljs.core.next(self__.s));
+if((!((ret == null)))){
+return ret;
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return this$__$1;
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.ArrayNodeSeq(meta__$1,self__.nodes,self__.i,self__.s,self__.__hash));
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.ArrayNodeSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"nodes","nodes",-459054278,null),new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.Symbol(null,"s","s",-948495851,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ArrayNodeSeq.cljs$lang$type = true;
+
+cljs.core.ArrayNodeSeq.cljs$lang$ctorStr = "cljs.core/ArrayNodeSeq";
+
+cljs.core.ArrayNodeSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ArrayNodeSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/ArrayNodeSeq.
+ */
+cljs.core.__GT_ArrayNodeSeq = (function cljs$core$__GT_ArrayNodeSeq(meta,nodes,i,s,__hash){
+return (new cljs.core.ArrayNodeSeq(meta,nodes,i,s,__hash));
+});
+
+var G__11855_11858 = cljs.core.ArrayNodeSeq.prototype;
+var G__11856_11859 = cljs.core.ITER_SYMBOL;
+var G__11857_11860 = ((function (G__11855_11858,G__11856_11859){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11855_11858,G__11856_11859))
+;
+goog.object.set(G__11855_11858,G__11856_11859,G__11857_11860);
+cljs.core.create_array_node_seq = (function cljs$core$create_array_node_seq(var_args){
+var G__11862 = arguments.length;
+switch (G__11862) {
+case 1:
+return cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 4:
+return cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$1 = (function (nodes){
+return cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$4(null,nodes,(0),null);
+});
+
+cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$4 = (function (meta,nodes,i,s){
+if((s == null)){
+var len = nodes.length;
+var j = i;
+while(true){
+if((j < len)){
+var temp__4655__auto__ = (nodes[j]);
+if(cljs.core.truth_(temp__4655__auto__)){
+var nj = temp__4655__auto__;
+var temp__4655__auto____$1 = nj.inode_seq();
+if(cljs.core.truth_(temp__4655__auto____$1)){
+var ns = temp__4655__auto____$1;
+return (new cljs.core.ArrayNodeSeq(meta,nodes,(j + (1)),ns,null));
+} else {
+var G__11864 = (j + (1));
+j = G__11864;
+continue;
+}
+} else {
+var G__11865 = (j + (1));
+j = G__11865;
+continue;
+}
+} else {
+return null;
+}
+break;
+}
+} else {
+return (new cljs.core.ArrayNodeSeq(meta,nodes,i,s,null));
+}
+});
+
+cljs.core.create_array_node_seq.cljs$lang$maxFixedArity = 4;
+
+
+/**
+* @constructor
+*/
+cljs.core.HashMapIter = (function (nil_val,root_iter,seen){
+this.nil_val = nil_val;
+this.root_iter = root_iter;
+this.seen = seen;
+});
+cljs.core.HashMapIter.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+return (((!(self__.seen))) || (self__.root_iter.hasNext()));
+});
+
+cljs.core.HashMapIter.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+if((!(self__.seen))){
+self__.seen = true;
+
+return (new cljs.core.MapEntry(null,self__.nil_val,null));
+} else {
+return self__.root_iter.next();
+}
+});
+
+cljs.core.HashMapIter.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.HashMapIter.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"nil-val","nil-val",-513933559,null),new cljs.core.Symbol(null,"root-iter","root-iter",1974672108,null),cljs.core.with_meta(new cljs.core.Symbol(null,"seen","seen",1121531738,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.HashMapIter.cljs$lang$type = true;
+
+cljs.core.HashMapIter.cljs$lang$ctorStr = "cljs.core/HashMapIter";
+
+cljs.core.HashMapIter.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/HashMapIter");
+});
+
+/**
+ * Positional factory function for cljs.core/HashMapIter.
+ */
+cljs.core.__GT_HashMapIter = (function cljs$core$__GT_HashMapIter(nil_val,root_iter,seen){
+return (new cljs.core.HashMapIter(nil_val,root_iter,seen));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IKVReduce}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEditableCollection}
+ * @implements {cljs.core.IFind}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IIterable}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IAssociative}
+ * @implements {cljs.core.IMap}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.PersistentHashMap = (function (meta,cnt,root,has_nil_QMARK_,nil_val,__hash){
+this.meta = meta;
+this.cnt = cnt;
+this.root = root;
+this.has_nil_QMARK_ = has_nil_QMARK_;
+this.nil_val = nil_val;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 16123663;
+this.cljs$lang$protocol_mask$partition1$ = 139268;
+});
+cljs.core.PersistentHashMap.prototype.cljs$core$IFind$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IFind$_find$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+if((k == null)){
+if(self__.has_nil_QMARK_){
+return (new cljs.core.MapEntry(null,self__.nil_val,null));
+} else {
+return null;
+}
+} else {
+if((self__.root == null)){
+return null;
+} else {
+return self__.root.inode_find((0),cljs.core.hash(k),k,null);
+
+}
+}
+});
+
+cljs.core.PersistentHashMap.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentHashMap.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentHashMap.prototype.keys = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.keys(coll));
+});
+
+cljs.core.PersistentHashMap.prototype.entries = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_entries_iterator(cljs.core.seq(coll));
+});
+
+cljs.core.PersistentHashMap.prototype.values = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.vals(coll));
+});
+
+cljs.core.PersistentHashMap.prototype.has = (function (k){
+var self__ = this;
+var coll = this;
+return cljs.core.contains_QMARK_(coll,k);
+});
+
+cljs.core.PersistentHashMap.prototype.get = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.PersistentHashMap.prototype.forEach = (function (f){
+var self__ = this;
+var coll = this;
+var seq__11867 = cljs.core.seq(coll);
+var chunk__11868 = null;
+var count__11869 = (0);
+var i__11870 = (0);
+while(true){
+if((i__11870 < count__11869)){
+var vec__11871 = chunk__11868.cljs$core$IIndexed$_nth$arity$2(null,i__11870);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11871,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11871,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__11879 = seq__11867;
+var G__11880 = chunk__11868;
+var G__11881 = count__11869;
+var G__11882 = (i__11870 + (1));
+seq__11867 = G__11879;
+chunk__11868 = G__11880;
+count__11869 = G__11881;
+i__11870 = G__11882;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__11867);
+if(temp__4657__auto__){
+var seq__11867__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__11867__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__11867__$1);
+var G__11883 = cljs.core.chunk_rest(seq__11867__$1);
+var G__11884 = c__8664__auto__;
+var G__11885 = cljs.core.count(c__8664__auto__);
+var G__11886 = (0);
+seq__11867 = G__11883;
+chunk__11868 = G__11884;
+count__11869 = G__11885;
+i__11870 = G__11886;
+continue;
+} else {
+var vec__11874 = cljs.core.first(seq__11867__$1);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11874,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11874,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__11887 = cljs.core.next(seq__11867__$1);
+var G__11888 = null;
+var G__11889 = (0);
+var G__11890 = (0);
+seq__11867 = G__11887;
+chunk__11868 = G__11888;
+count__11869 = G__11889;
+i__11870 = G__11890;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ILookup$_lookup$arity$3(null,k,null);
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
+var self__ = this;
+var coll__$1 = this;
+if((k == null)){
+if(self__.has_nil_QMARK_){
+return self__.nil_val;
+} else {
+return not_found;
+}
+} else {
+if((self__.root == null)){
+return not_found;
+} else {
+return self__.root.inode_lookup((0),cljs.core.hash(k),k,not_found);
+
+}
+}
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (coll,f,init){
+var self__ = this;
+var coll__$1 = this;
+var init__$1 = ((self__.has_nil_QMARK_)?(f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(init,null,self__.nil_val) : f.call(null,init,null,self__.nil_val)):init);
+if(cljs.core.reduced_QMARK_(init__$1)){
+return cljs.core.deref(init__$1);
+} else {
+if((!((self__.root == null)))){
+return cljs.core.unreduced(self__.root.kv_reduce(f,init__$1));
+} else {
+return init__$1;
+
+}
+}
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var root_iter = ((self__.root)?cljs.core._iterator(self__.root):cljs.core.nil_iter());
+if(self__.has_nil_QMARK_){
+return (new cljs.core.HashMapIter(self__.nil_val,root_iter,false));
+} else {
+return root_iter;
+}
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.PersistentHashMap(self__.meta,self__.cnt,self__.root,self__.has_nil_QMARK_,self__.nil_val,self__.__hash));
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.cnt;
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_map(coll__$1,other);
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.TransientHashMap({},self__.root,self__.cnt,self__.has_nil_QMARK_,self__.nil_val));
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.PersistentHashMap.EMPTY,self__.meta);
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+if((k == null)){
+if(self__.has_nil_QMARK_){
+return (new cljs.core.PersistentHashMap(self__.meta,(self__.cnt - (1)),self__.root,false,null,null));
+} else {
+return coll__$1;
+}
+} else {
+if((self__.root == null)){
+return coll__$1;
+} else {
+var new_root = self__.root.inode_without((0),cljs.core.hash(k),k);
+if((new_root === self__.root)){
+return coll__$1;
+} else {
+return (new cljs.core.PersistentHashMap(self__.meta,(self__.cnt - (1)),new_root,self__.has_nil_QMARK_,self__.nil_val,null));
+}
+
+}
+}
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
+var self__ = this;
+var coll__$1 = this;
+if((k == null)){
+if(((self__.has_nil_QMARK_) && ((v === self__.nil_val)))){
+return coll__$1;
+} else {
+return (new cljs.core.PersistentHashMap(self__.meta,((self__.has_nil_QMARK_)?self__.cnt:(self__.cnt + (1))),self__.root,true,v,null));
+}
+} else {
+var added_leaf_QMARK_ = (new cljs.core.Box(false));
+var new_root = (((self__.root == null))?cljs.core.BitmapIndexedNode.EMPTY:self__.root).inode_assoc((0),cljs.core.hash(k),k,v,added_leaf_QMARK_);
+if((new_root === self__.root)){
+return coll__$1;
+} else {
+return (new cljs.core.PersistentHashMap(self__.meta,((added_leaf_QMARK_.val)?(self__.cnt + (1)):self__.cnt),new_root,self__.has_nil_QMARK_,self__.nil_val,null));
+}
+}
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+if((k == null)){
+return self__.has_nil_QMARK_;
+} else {
+if((self__.root == null)){
+return false;
+} else {
+return (!((self__.root.inode_lookup((0),cljs.core.hash(k),k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)));
+
+}
+}
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt > (0))){
+var s = (((!((self__.root == null))))?self__.root.inode_seq():null);
+if(self__.has_nil_QMARK_){
+return cljs.core.cons((new cljs.core.MapEntry(null,self__.nil_val,null)),s);
+} else {
+return s;
+}
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentHashMap(meta__$1,self__.cnt,self__.root,self__.has_nil_QMARK_,self__.nil_val,self__.__hash));
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,entry){
+var self__ = this;
+var coll__$1 = this;
+if(cljs.core.vector_QMARK_(entry)){
+return coll__$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(1)));
+} else {
+var ret = coll__$1;
+var es = cljs.core.seq(entry);
+while(true){
+if((es == null)){
+return ret;
+} else {
+var e = cljs.core.first(es);
+if(cljs.core.vector_QMARK_(e)){
+var G__11891 = ret.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(1)));
+var G__11892 = cljs.core.next(es);
+ret = G__11891;
+es = G__11892;
+continue;
+} else {
+throw (new Error("conj on a map takes map entries or seqables of map entries"));
+}
+}
+break;
+}
+}
+});
+
+cljs.core.PersistentHashMap.prototype.call = (function() {
+var G__11893 = null;
+var G__11893__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+var G__11893__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+G__11893 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__11893__2.call(this,self__,k);
+case 3:
+return G__11893__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11893.cljs$core$IFn$_invoke$arity$2 = G__11893__2;
+G__11893.cljs$core$IFn$_invoke$arity$3 = G__11893__3;
+return G__11893;
+})()
+;
+
+cljs.core.PersistentHashMap.prototype.apply = (function (self__,args11866){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11866)));
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.PersistentHashMap.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"cnt","cnt",1924510325,null),new cljs.core.Symbol(null,"root","root",1191874074,null),cljs.core.with_meta(new cljs.core.Symbol(null,"has-nil?","has-nil?",825886722,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"tag","tag",-1290361223),new cljs.core.Symbol(null,"boolean","boolean",-278886877,null)], null)),new cljs.core.Symbol(null,"nil-val","nil-val",-513933559,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.PersistentHashMap.cljs$lang$type = true;
+
+cljs.core.PersistentHashMap.cljs$lang$ctorStr = "cljs.core/PersistentHashMap";
+
+cljs.core.PersistentHashMap.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentHashMap");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentHashMap.
+ */
+cljs.core.__GT_PersistentHashMap = (function cljs$core$__GT_PersistentHashMap(meta,cnt,root,has_nil_QMARK_,nil_val,__hash){
+return (new cljs.core.PersistentHashMap(meta,cnt,root,has_nil_QMARK_,nil_val,__hash));
+});
+
+cljs.core.PersistentHashMap.EMPTY = (new cljs.core.PersistentHashMap(null,(0),null,false,null,cljs.core.empty_unordered_hash));
+cljs.core.PersistentHashMap.fromArray = (function (arr,no_clone){
+var arr__$1 = ((no_clone)?arr:cljs.core.aclone(arr));
+var len = arr__$1.length;
+var i = (0);
+var ret = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
+while(true){
+if((i < len)){
+var G__11894 = (i + (2));
+var G__11895 = cljs.core._assoc_BANG_(ret,(arr__$1[i]),(arr__$1[(i + (1))]));
+i = G__11894;
+ret = G__11895;
+continue;
+} else {
+return cljs.core._persistent_BANG_(ret);
+}
+break;
+}
+});
+cljs.core.PersistentHashMap.fromArrays = (function (ks,vs){
+var len = ks.length;
+var i = (0);
+var out = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
+while(true){
+if((i < len)){
+var G__11896 = (i + (1));
+var G__11897 = out.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(null,(ks[i]),(vs[i]));
+i = G__11896;
+out = G__11897;
+continue;
+} else {
+return cljs.core.persistent_BANG_(out);
+}
+break;
+}
+});
+cljs.core.PersistentHashMap.createWithCheck = (function (arr){
+var len = arr.length;
+var ret = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
+var i_11898 = (0);
+while(true){
+if((i_11898 < len)){
+cljs.core._assoc_BANG_(ret,(arr[i_11898]),(arr[(i_11898 + (1))]));
+
+if(cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core._count(ret),((i_11898 / (2)) + (1)))){
+throw (new Error(["Duplicate key: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1((arr[i_11898]))].join('')));
+} else {
+var G__11899 = (i_11898 + (2));
+i_11898 = G__11899;
+continue;
+}
+} else {
+}
+break;
+}
+
+return cljs.core._persistent_BANG_(ret);
+});
+var G__11900_11903 = cljs.core.PersistentHashMap.prototype;
+var G__11901_11904 = cljs.core.ITER_SYMBOL;
+var G__11902_11905 = ((function (G__11900_11903,G__11901_11904){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11900_11903,G__11901_11904))
+;
+goog.object.set(G__11900_11903,G__11901_11904,G__11902_11905);
+
+/**
+* @constructor
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ITransientMap}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ITransientCollection}
+ * @implements {cljs.core.ITransientAssociative}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.TransientHashMap = (function (edit,root,count,has_nil_QMARK_,nil_val){
+this.edit = edit;
+this.root = root;
+this.count = count;
+this.has_nil_QMARK_ = has_nil_QMARK_;
+this.nil_val = nil_val;
+this.cljs$lang$protocol_mask$partition0$ = 259;
+this.cljs$lang$protocol_mask$partition1$ = 56;
+});
+cljs.core.TransientHashMap.prototype.conj_BANG_ = (function (o){
+var self__ = this;
+var tcoll = this;
+if(self__.edit){
+if(cljs.core.map_entry_QMARK_(o)){
+return tcoll.assoc_BANG_(cljs.core.key(o),cljs.core.val(o));
+} else {
+if(cljs.core.vector_QMARK_(o)){
+return tcoll.assoc_BANG_((o.cljs$core$IFn$_invoke$arity$1 ? o.cljs$core$IFn$_invoke$arity$1((0)) : o.call(null,(0))),(o.cljs$core$IFn$_invoke$arity$1 ? o.cljs$core$IFn$_invoke$arity$1((1)) : o.call(null,(1))));
+} else {
+var es = cljs.core.seq(o);
+var tcoll__$1 = tcoll;
+while(true){
+var temp__4655__auto__ = cljs.core.first(es);
+if(cljs.core.truth_(temp__4655__auto__)){
+var e = temp__4655__auto__;
+var G__11907 = cljs.core.next(es);
+var G__11908 = tcoll__$1.assoc_BANG_(cljs.core.key(e),cljs.core.val(e));
+es = G__11907;
+tcoll__$1 = G__11908;
+continue;
+} else {
+return tcoll__$1;
+}
+break;
+}
+
+}
+}
+} else {
+throw (new Error("conj! after persistent"));
+}
+});
+
+cljs.core.TransientHashMap.prototype.assoc_BANG_ = (function (k,v){
+var self__ = this;
+var tcoll = this;
+if(self__.edit){
+if((k == null)){
+if((self__.nil_val === v)){
+} else {
+self__.nil_val = v;
+}
+
+if(self__.has_nil_QMARK_){
+} else {
+self__.count = (self__.count + (1));
+
+self__.has_nil_QMARK_ = true;
+}
+
+return tcoll;
+} else {
+var added_leaf_QMARK_ = (new cljs.core.Box(false));
+var node = (((self__.root == null))?cljs.core.BitmapIndexedNode.EMPTY:self__.root).inode_assoc_BANG_(self__.edit,(0),cljs.core.hash(k),k,v,added_leaf_QMARK_);
+if((node === self__.root)){
+} else {
+self__.root = node;
+}
+
+if(added_leaf_QMARK_.val){
+self__.count = (self__.count + (1));
+} else {
+}
+
+return tcoll;
+}
+} else {
+throw (new Error("assoc! after persistent!"));
+}
+});
+
+cljs.core.TransientHashMap.prototype.without_BANG_ = (function (k){
+var self__ = this;
+var tcoll = this;
+if(self__.edit){
+if((k == null)){
+if(self__.has_nil_QMARK_){
+self__.has_nil_QMARK_ = false;
+
+self__.nil_val = null;
+
+self__.count = (self__.count - (1));
+
+return tcoll;
+} else {
+return tcoll;
+}
+} else {
+if((self__.root == null)){
+return tcoll;
+} else {
+var removed_leaf_QMARK_ = (new cljs.core.Box(false));
+var node = self__.root.inode_without_BANG_(self__.edit,(0),cljs.core.hash(k),k,removed_leaf_QMARK_);
+if((node === self__.root)){
+} else {
+self__.root = node;
+}
+
+if(removed_leaf_QMARK_.val){
+self__.count = (self__.count - (1));
+} else {
+}
+
+return tcoll;
+}
+}
+} else {
+throw (new Error("dissoc! after persistent!"));
+}
+});
+
+cljs.core.TransientHashMap.prototype.persistent_BANG_ = (function (){
+var self__ = this;
+var tcoll = this;
+if(self__.edit){
+self__.edit = null;
+
+return (new cljs.core.PersistentHashMap(null,self__.count,self__.root,self__.has_nil_QMARK_,self__.nil_val,null));
+} else {
+throw (new Error("persistent! called twice"));
+}
+});
+
+cljs.core.TransientHashMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if(self__.edit){
+return self__.count;
+} else {
+throw (new Error("count after persistent!"));
+}
+});
+
+cljs.core.TransientHashMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (tcoll,k){
+var self__ = this;
+var tcoll__$1 = this;
+if((k == null)){
+if(self__.has_nil_QMARK_){
+return self__.nil_val;
+} else {
+return null;
+}
+} else {
+if((self__.root == null)){
+return null;
+} else {
+return self__.root.inode_lookup((0),cljs.core.hash(k),k);
+}
+}
+});
+
+cljs.core.TransientHashMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (tcoll,k,not_found){
+var self__ = this;
+var tcoll__$1 = this;
+if((k == null)){
+if(self__.has_nil_QMARK_){
+return self__.nil_val;
+} else {
+return not_found;
+}
+} else {
+if((self__.root == null)){
+return not_found;
+} else {
+return self__.root.inode_lookup((0),cljs.core.hash(k),k,not_found);
+}
+}
+});
+
+cljs.core.TransientHashMap.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = (function (tcoll,val){
+var self__ = this;
+var tcoll__$1 = this;
+return tcoll__$1.conj_BANG_(val);
+});
+
+cljs.core.TransientHashMap.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = (function (tcoll){
+var self__ = this;
+var tcoll__$1 = this;
+return tcoll__$1.persistent_BANG_();
+});
+
+cljs.core.TransientHashMap.prototype.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 = (function (tcoll,key,val){
+var self__ = this;
+var tcoll__$1 = this;
+return tcoll__$1.assoc_BANG_(key,val);
+});
+
+cljs.core.TransientHashMap.prototype.cljs$core$ITransientMap$_dissoc_BANG_$arity$2 = (function (tcoll,key){
+var self__ = this;
+var tcoll__$1 = this;
+return tcoll__$1.without_BANG_(key);
+});
+
+cljs.core.TransientHashMap.prototype.call = (function() {
+var G__11909 = null;
+var G__11909__2 = (function (self__,key){
+var self__ = this;
+var self____$1 = this;
+var tcoll = self____$1;
+return tcoll.cljs$core$ILookup$_lookup$arity$2(null,key);
+});
+var G__11909__3 = (function (self__,key,not_found){
+var self__ = this;
+var self____$1 = this;
+var tcoll = self____$1;
+return tcoll.cljs$core$ILookup$_lookup$arity$3(null,key,not_found);
+});
+G__11909 = function(self__,key,not_found){
+switch(arguments.length){
+case 2:
+return G__11909__2.call(this,self__,key);
+case 3:
+return G__11909__3.call(this,self__,key,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11909.cljs$core$IFn$_invoke$arity$2 = G__11909__2;
+G__11909.cljs$core$IFn$_invoke$arity$3 = G__11909__3;
+return G__11909;
+})()
+;
+
+cljs.core.TransientHashMap.prototype.apply = (function (self__,args11906){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11906)));
+});
+
+cljs.core.TransientHashMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (key){
+var self__ = this;
+var tcoll = this;
+return tcoll.cljs$core$ILookup$_lookup$arity$2(null,key);
+});
+
+cljs.core.TransientHashMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (key,not_found){
+var self__ = this;
+var tcoll = this;
+return tcoll.cljs$core$ILookup$_lookup$arity$3(null,key,not_found);
+});
+
+cljs.core.TransientHashMap.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"edit","edit",-1302639,null),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"tag","tag",-1290361223),new cljs.core.Symbol(null,"boolean","boolean",-278886877,null),new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"root","root",1191874074,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"count","count",-514511684,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"has-nil?","has-nil?",825886722,null),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"tag","tag",-1290361223),new cljs.core.Symbol(null,"boolean","boolean",-278886877,null),new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"nil-val","nil-val",-513933559,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.TransientHashMap.cljs$lang$type = true;
+
+cljs.core.TransientHashMap.cljs$lang$ctorStr = "cljs.core/TransientHashMap";
+
+cljs.core.TransientHashMap.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/TransientHashMap");
+});
+
+/**
+ * Positional factory function for cljs.core/TransientHashMap.
+ */
+cljs.core.__GT_TransientHashMap = (function cljs$core$__GT_TransientHashMap(edit,root,count,has_nil_QMARK_,nil_val){
+return (new cljs.core.TransientHashMap(edit,root,count,has_nil_QMARK_,nil_val));
+});
+
+cljs.core.tree_map_seq_push = (function cljs$core$tree_map_seq_push(node,stack,ascending_QMARK_){
+var t = node;
+var stack__$1 = stack;
+while(true){
+if((!((t == null)))){
+var G__11910 = ((ascending_QMARK_)?t.left:t.right);
+var G__11911 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(stack__$1,t);
+t = G__11910;
+stack__$1 = G__11911;
+continue;
+} else {
+return stack__$1;
+}
+break;
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.PersistentTreeMapSeq = (function (meta,stack,ascending_QMARK_,cnt,__hash){
+this.meta = meta;
+this.stack = stack;
+this.ascending_QMARK_ = ascending_QMARK_;
+this.cnt = cnt;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 32374990;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.PersistentTreeMapSeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.indexOf = (function() {
+var G__11912 = null;
+var G__11912__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11912__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11912 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11912__1.call(this,x);
+case 2:
+return G__11912__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11912.cljs$core$IFn$_invoke$arity$1 = G__11912__1;
+G__11912.cljs$core$IFn$_invoke$arity$2 = G__11912__2;
+return G__11912;
+})()
+;
+
+cljs.core.PersistentTreeMapSeq.prototype.lastIndexOf = (function() {
+var G__11913 = null;
+var G__11913__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11913__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11913 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11913__1.call(this,x);
+case 2:
+return G__11913__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11913.cljs$core$IFn$_invoke$arity$1 = G__11913__1;
+G__11913.cljs$core$IFn$_invoke$arity$2 = G__11913__2;
+return G__11913;
+})()
+;
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$INext$_next$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+var t = cljs.core.first(self__.stack);
+var next_stack = cljs.core.tree_map_seq_push(((self__.ascending_QMARK_)?t.right:t.left),cljs.core.next(self__.stack),self__.ascending_QMARK_);
+if((next_stack == null)){
+return null;
+} else {
+return (new cljs.core.PersistentTreeMapSeq(null,next_stack,self__.ascending_QMARK_,(self__.cnt - (1)),null));
+}
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt < (0))){
+return (cljs.core.count(cljs.core.next(coll__$1)) + (1));
+} else {
+return self__.cnt;
+}
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return cljs.core.peek(self__.stack);
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+var t = cljs.core.first(self__.stack);
+var next_stack = cljs.core.tree_map_seq_push(((self__.ascending_QMARK_)?t.right:t.left),cljs.core.next(self__.stack),self__.ascending_QMARK_);
+if((!((next_stack == null)))){
+return (new cljs.core.PersistentTreeMapSeq(null,next_stack,self__.ascending_QMARK_,(self__.cnt - (1)),null));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return this$__$1;
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentTreeMapSeq(meta__$1,self__.stack,self__.ascending_QMARK_,self__.cnt,self__.__hash));
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.PersistentTreeMapSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"stack","stack",847125597,null),cljs.core.with_meta(new cljs.core.Symbol(null,"ascending?","ascending?",-1938452653,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"tag","tag",-1290361223),new cljs.core.Symbol(null,"boolean","boolean",-278886877,null)], null)),new cljs.core.Symbol(null,"cnt","cnt",1924510325,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.PersistentTreeMapSeq.cljs$lang$type = true;
+
+cljs.core.PersistentTreeMapSeq.cljs$lang$ctorStr = "cljs.core/PersistentTreeMapSeq";
+
+cljs.core.PersistentTreeMapSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentTreeMapSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentTreeMapSeq.
+ */
+cljs.core.__GT_PersistentTreeMapSeq = (function cljs$core$__GT_PersistentTreeMapSeq(meta,stack,ascending_QMARK_,cnt,__hash){
+return (new cljs.core.PersistentTreeMapSeq(meta,stack,ascending_QMARK_,cnt,__hash));
+});
+
+var G__11914_11917 = cljs.core.PersistentTreeMapSeq.prototype;
+var G__11915_11918 = cljs.core.ITER_SYMBOL;
+var G__11916_11919 = ((function (G__11914_11917,G__11915_11918){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11914_11917,G__11915_11918))
+;
+goog.object.set(G__11914_11917,G__11915_11918,G__11916_11919);
+cljs.core.create_tree_map_seq = (function cljs$core$create_tree_map_seq(tree,ascending_QMARK_,cnt){
+return (new cljs.core.PersistentTreeMapSeq(null,cljs.core.tree_map_seq_push(tree,null,ascending_QMARK_),ascending_QMARK_,cnt,null));
+});
+
+cljs.core.balance_left = (function cljs$core$balance_left(key,val,ins,right){
+if((ins instanceof cljs.core.RedNode)){
+if((ins.left instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(ins.key,ins.val,ins.left.blacken(),(new cljs.core.BlackNode(key,val,ins.right,right,null)),null));
+} else {
+if((ins.right instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(ins.right.key,ins.right.val,(new cljs.core.BlackNode(ins.key,ins.val,ins.left,ins.right.left,null)),(new cljs.core.BlackNode(key,val,ins.right.right,right,null)),null));
+} else {
+return (new cljs.core.BlackNode(key,val,ins,right,null));
+
+}
+}
+} else {
+return (new cljs.core.BlackNode(key,val,ins,right,null));
+}
+});
+cljs.core.balance_right = (function cljs$core$balance_right(key,val,left,ins){
+if((ins instanceof cljs.core.RedNode)){
+if((ins.right instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(ins.key,ins.val,(new cljs.core.BlackNode(key,val,left,ins.left,null)),ins.right.blacken(),null));
+} else {
+if((ins.left instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(ins.left.key,ins.left.val,(new cljs.core.BlackNode(key,val,left,ins.left.left,null)),(new cljs.core.BlackNode(ins.key,ins.val,ins.left.right,ins.right,null)),null));
+} else {
+return (new cljs.core.BlackNode(key,val,left,ins,null));
+
+}
+}
+} else {
+return (new cljs.core.BlackNode(key,val,left,ins,null));
+}
+});
+cljs.core.balance_left_del = (function cljs$core$balance_left_del(key,val,del,right){
+if((del instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(key,val,del.blacken(),right,null));
+} else {
+if((right instanceof cljs.core.BlackNode)){
+return cljs.core.balance_right(key,val,del,right.redden());
+} else {
+if((((right instanceof cljs.core.RedNode)) && ((right.left instanceof cljs.core.BlackNode)))){
+return (new cljs.core.RedNode(right.left.key,right.left.val,(new cljs.core.BlackNode(key,val,del,right.left.left,null)),cljs.core.balance_right(right.key,right.val,right.left.right,right.right.redden()),null));
+} else {
+throw (new Error("red-black tree invariant violation"));
+
+}
+}
+}
+});
+cljs.core.balance_right_del = (function cljs$core$balance_right_del(key,val,left,del){
+if((del instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(key,val,left,del.blacken(),null));
+} else {
+if((left instanceof cljs.core.BlackNode)){
+return cljs.core.balance_left(key,val,left.redden(),del);
+} else {
+if((((left instanceof cljs.core.RedNode)) && ((left.right instanceof cljs.core.BlackNode)))){
+return (new cljs.core.RedNode(left.right.key,left.right.val,cljs.core.balance_left(left.key,left.val,left.left.redden(),left.right.left),(new cljs.core.BlackNode(key,val,left.right.right,del,null)),null));
+} else {
+throw (new Error("red-black tree invariant violation"));
+
+}
+}
+}
+});
+cljs.core.tree_map_kv_reduce = (function cljs$core$tree_map_kv_reduce(node,f,init){
+var init__$1 = (((!((node.left == null))))?(function (){var G__11920 = node.left;
+var G__11921 = f;
+var G__11922 = init;
+return (cljs.core.tree_map_kv_reduce.cljs$core$IFn$_invoke$arity$3 ? cljs.core.tree_map_kv_reduce.cljs$core$IFn$_invoke$arity$3(G__11920,G__11921,G__11922) : cljs.core.tree_map_kv_reduce.call(null,G__11920,G__11921,G__11922));
+})():init);
+if(cljs.core.reduced_QMARK_(init__$1)){
+return init__$1;
+} else {
+var init__$2 = (function (){var G__11923 = init__$1;
+var G__11924 = node.key;
+var G__11925 = node.val;
+return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11923,G__11924,G__11925) : f.call(null,G__11923,G__11924,G__11925));
+})();
+if(cljs.core.reduced_QMARK_(init__$2)){
+return init__$2;
+} else {
+if((!((node.right == null)))){
+var G__11926 = node.right;
+var G__11927 = f;
+var G__11928 = init__$2;
+return (cljs.core.tree_map_kv_reduce.cljs$core$IFn$_invoke$arity$3 ? cljs.core.tree_map_kv_reduce.cljs$core$IFn$_invoke$arity$3(G__11926,G__11927,G__11928) : cljs.core.tree_map_kv_reduce.call(null,G__11926,G__11927,G__11928));
+} else {
+return init__$2;
+}
+}
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IIndexed}
+ * @implements {cljs.core.IVector}
+ * @implements {cljs.core.IReversible}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IFind}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.IStack}
+ * @implements {cljs.core.IMapEntry}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IAssociative}
+ * @implements {cljs.core.ILookup}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.BlackNode = (function (key,val,left,right,__hash){
+this.key = key;
+this.val = val;
+this.left = left;
+this.right = right;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 166619935;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.BlackNode.prototype.cljs$core$IFind$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.BlackNode.prototype.cljs$core$IFind$_find$arity$2 = (function (node,k){
+var self__ = this;
+var node__$1 = this;
+var G__11930 = k;
+switch (G__11930) {
+case (0):
+return (new cljs.core.MapEntry((0),self__.key,null));
+
+break;
+case (1):
+return (new cljs.core.MapEntry((1),self__.val,null));
+
+break;
+default:
+return null;
+
+}
+});
+
+cljs.core.BlackNode.prototype.lastIndexOf = (function() {
+var G__11932 = null;
+var G__11932__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11932__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11932 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11932__1.call(this,x);
+case 2:
+return G__11932__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11932.cljs$core$IFn$_invoke$arity$1 = G__11932__1;
+G__11932.cljs$core$IFn$_invoke$arity$2 = G__11932__2;
+return G__11932;
+})()
+;
+
+cljs.core.BlackNode.prototype.indexOf = (function() {
+var G__11933 = null;
+var G__11933__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11933__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11933 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11933__1.call(this,x);
+case 2:
+return G__11933__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11933.cljs$core$IFn$_invoke$arity$1 = G__11933__1;
+G__11933.cljs$core$IFn$_invoke$arity$2 = G__11933__2;
+return G__11933;
+})()
+;
+
+cljs.core.BlackNode.prototype.add_right = (function (ins){
+var self__ = this;
+var node = this;
+return ins.balance_right(node);
+});
+
+cljs.core.BlackNode.prototype.redden = (function (){
+var self__ = this;
+var node = this;
+return (new cljs.core.RedNode(self__.key,self__.val,self__.left,self__.right,null));
+});
+
+cljs.core.BlackNode.prototype.blacken = (function (){
+var self__ = this;
+var node = this;
+return node;
+});
+
+cljs.core.BlackNode.prototype.add_left = (function (ins){
+var self__ = this;
+var node = this;
+return ins.balance_left(node);
+});
+
+cljs.core.BlackNode.prototype.replace = (function (key__$1,val__$1,left__$1,right__$1){
+var self__ = this;
+var node = this;
+return (new cljs.core.BlackNode(key__$1,val__$1,left__$1,right__$1,null));
+});
+
+cljs.core.BlackNode.prototype.balance_left = (function (parent){
+var self__ = this;
+var node = this;
+return (new cljs.core.BlackNode(parent.key,parent.val,node,parent.right,null));
+});
+
+cljs.core.BlackNode.prototype.balance_right = (function (parent){
+var self__ = this;
+var node = this;
+return (new cljs.core.BlackNode(parent.key,parent.val,parent.left,node,null));
+});
+
+cljs.core.BlackNode.prototype.remove_left = (function (del){
+var self__ = this;
+var node = this;
+return cljs.core.balance_left_del(self__.key,self__.val,del,self__.right);
+});
+
+cljs.core.BlackNode.prototype.kv_reduce = (function (f,init){
+var self__ = this;
+var node = this;
+return cljs.core.tree_map_kv_reduce(node,f,init);
+});
+
+cljs.core.BlackNode.prototype.remove_right = (function (del){
+var self__ = this;
+var node = this;
+return cljs.core.balance_right_del(self__.key,self__.val,self__.left,del);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (node,k){
+var self__ = this;
+var node__$1 = this;
+return node__$1.cljs$core$IIndexed$_nth$arity$3(null,k,null);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (node,k,not_found){
+var self__ = this;
+var node__$1 = this;
+return node__$1.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (node,n){
+var self__ = this;
+var node__$1 = this;
+if((n === (0))){
+return self__.key;
+} else {
+if((n === (1))){
+return self__.val;
+} else {
+throw (new Error("Index out of bounds"));
+
+}
+}
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (node,n,not_found){
+var self__ = this;
+var node__$1 = this;
+if((n === (0))){
+return self__.key;
+} else {
+if((n === (1))){
+return self__.val;
+} else {
+return not_found;
+
+}
+}
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (node,n,v){
+var self__ = this;
+var node__$1 = this;
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null).cljs$core$IVector$_assoc_n$arity$3(null,n,v);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IMeta$_meta$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return null;
+});
+
+cljs.core.BlackNode.prototype.cljs$core$ICounted$_count$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return (2);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IMapEntry$_key$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return self__.key;
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IMapEntry$_val$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return self__.val;
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IStack$_peek$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return self__.val;
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IStack$_pop$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key], null);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return (new cljs.core.IndexedSeq([self__.val,self__.key],(0),null));
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return null;
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (node,f){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(node__$1,f);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (node,f,start){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3(node__$1,f,start);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (node,k,v){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),k,v);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (node,k){
+var self__ = this;
+var node__$1 = this;
+return (((k === (0))) || ((k === (1))));
+});
+
+cljs.core.BlackNode.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return (new cljs.core.IndexedSeq([self__.key,self__.val],(0),null));
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (node,meta){
+var self__ = this;
+var node__$1 = this;
+return cljs.core._with_meta(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),meta);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$ICollection$_conj$arity$2 = (function (node,o){
+var self__ = this;
+var node__$1 = this;
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val,o], null);
+});
+
+cljs.core.BlackNode.prototype.call = (function() {
+var G__11934 = null;
+var G__11934__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var node = self____$1;
+return node.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+var G__11934__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var node = self____$1;
+return node.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+G__11934 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__11934__2.call(this,self__,k);
+case 3:
+return G__11934__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11934.cljs$core$IFn$_invoke$arity$2 = G__11934__2;
+G__11934.cljs$core$IFn$_invoke$arity$3 = G__11934__3;
+return G__11934;
+})()
+;
+
+cljs.core.BlackNode.prototype.apply = (function (self__,args11929){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11929)));
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var node = this;
+return node.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var node = this;
+return node.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+
+cljs.core.BlackNode.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"key","key",124488940,null),new cljs.core.Symbol(null,"val","val",1769233139,null),new cljs.core.Symbol(null,"left","left",1241415590,null),new cljs.core.Symbol(null,"right","right",1187949694,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.BlackNode.cljs$lang$type = true;
+
+cljs.core.BlackNode.cljs$lang$ctorStr = "cljs.core/BlackNode";
+
+cljs.core.BlackNode.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/BlackNode");
+});
+
+/**
+ * Positional factory function for cljs.core/BlackNode.
+ */
+cljs.core.__GT_BlackNode = (function cljs$core$__GT_BlackNode(key,val,left,right,__hash){
+return (new cljs.core.BlackNode(key,val,left,right,__hash));
+});
+
+var G__11935_11938 = cljs.core.BlackNode.prototype;
+var G__11936_11939 = cljs.core.ITER_SYMBOL;
+var G__11937_11940 = ((function (G__11935_11938,G__11936_11939){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11935_11938,G__11936_11939))
+;
+goog.object.set(G__11935_11938,G__11936_11939,G__11937_11940);
+
+/**
+* @constructor
+ * @implements {cljs.core.IIndexed}
+ * @implements {cljs.core.IVector}
+ * @implements {cljs.core.IReversible}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IFind}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.IStack}
+ * @implements {cljs.core.IMapEntry}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IAssociative}
+ * @implements {cljs.core.ILookup}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.RedNode = (function (key,val,left,right,__hash){
+this.key = key;
+this.val = val;
+this.left = left;
+this.right = right;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 166619935;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.RedNode.prototype.cljs$core$IFind$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.RedNode.prototype.cljs$core$IFind$_find$arity$2 = (function (node,k){
+var self__ = this;
+var node__$1 = this;
+var G__11942 = k;
+switch (G__11942) {
+case (0):
+return (new cljs.core.MapEntry((0),self__.key,null));
+
+break;
+case (1):
+return (new cljs.core.MapEntry((1),self__.val,null));
+
+break;
+default:
+return null;
+
+}
+});
+
+cljs.core.RedNode.prototype.lastIndexOf = (function() {
+var G__11944 = null;
+var G__11944__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__11944__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11944 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11944__1.call(this,x);
+case 2:
+return G__11944__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11944.cljs$core$IFn$_invoke$arity$1 = G__11944__1;
+G__11944.cljs$core$IFn$_invoke$arity$2 = G__11944__2;
+return G__11944;
+})()
+;
+
+cljs.core.RedNode.prototype.indexOf = (function() {
+var G__11945 = null;
+var G__11945__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__11945__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__11945 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__11945__1.call(this,x);
+case 2:
+return G__11945__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__11945.cljs$core$IFn$_invoke$arity$1 = G__11945__1;
+G__11945.cljs$core$IFn$_invoke$arity$2 = G__11945__2;
+return G__11945;
+})()
+;
+
+cljs.core.RedNode.prototype.add_right = (function (ins){
+var self__ = this;
+var node = this;
+return (new cljs.core.RedNode(self__.key,self__.val,self__.left,ins,null));
+});
+
+cljs.core.RedNode.prototype.redden = (function (){
+var self__ = this;
+var node = this;
+throw (new Error("red-black tree invariant violation"));
+});
+
+cljs.core.RedNode.prototype.blacken = (function (){
+var self__ = this;
+var node = this;
+return (new cljs.core.BlackNode(self__.key,self__.val,self__.left,self__.right,null));
+});
+
+cljs.core.RedNode.prototype.add_left = (function (ins){
+var self__ = this;
+var node = this;
+return (new cljs.core.RedNode(self__.key,self__.val,ins,self__.right,null));
+});
+
+cljs.core.RedNode.prototype.replace = (function (key__$1,val__$1,left__$1,right__$1){
+var self__ = this;
+var node = this;
+return (new cljs.core.RedNode(key__$1,val__$1,left__$1,right__$1,null));
+});
+
+cljs.core.RedNode.prototype.balance_left = (function (parent){
+var self__ = this;
+var node = this;
+if((self__.left instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(self__.key,self__.val,self__.left.blacken(),(new cljs.core.BlackNode(parent.key,parent.val,self__.right,parent.right,null)),null));
+} else {
+if((self__.right instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(self__.right.key,self__.right.val,(new cljs.core.BlackNode(self__.key,self__.val,self__.left,self__.right.left,null)),(new cljs.core.BlackNode(parent.key,parent.val,self__.right.right,parent.right,null)),null));
+} else {
+return (new cljs.core.BlackNode(parent.key,parent.val,node,parent.right,null));
+
+}
+}
+});
+
+cljs.core.RedNode.prototype.balance_right = (function (parent){
+var self__ = this;
+var node = this;
+if((self__.right instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(self__.key,self__.val,(new cljs.core.BlackNode(parent.key,parent.val,parent.left,self__.left,null)),self__.right.blacken(),null));
+} else {
+if((self__.left instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(self__.left.key,self__.left.val,(new cljs.core.BlackNode(parent.key,parent.val,parent.left,self__.left.left,null)),(new cljs.core.BlackNode(self__.key,self__.val,self__.left.right,self__.right,null)),null));
+} else {
+return (new cljs.core.BlackNode(parent.key,parent.val,parent.left,node,null));
+
+}
+}
+});
+
+cljs.core.RedNode.prototype.remove_left = (function (del){
+var self__ = this;
+var node = this;
+return (new cljs.core.RedNode(self__.key,self__.val,del,self__.right,null));
+});
+
+cljs.core.RedNode.prototype.kv_reduce = (function (f,init){
+var self__ = this;
+var node = this;
+return cljs.core.tree_map_kv_reduce(node,f,init);
+});
+
+cljs.core.RedNode.prototype.remove_right = (function (del){
+var self__ = this;
+var node = this;
+return (new cljs.core.RedNode(self__.key,self__.val,self__.left,del,null));
+});
+
+cljs.core.RedNode.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (node,k){
+var self__ = this;
+var node__$1 = this;
+return node__$1.cljs$core$IIndexed$_nth$arity$3(null,k,null);
+});
+
+cljs.core.RedNode.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (node,k,not_found){
+var self__ = this;
+var node__$1 = this;
+return node__$1.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (node,n){
+var self__ = this;
+var node__$1 = this;
+if((n === (0))){
+return self__.key;
+} else {
+if((n === (1))){
+return self__.val;
+} else {
+throw (new Error("Index out of bounds"));
+
+}
+}
+});
+
+cljs.core.RedNode.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (node,n,not_found){
+var self__ = this;
+var node__$1 = this;
+if((n === (0))){
+return self__.key;
+} else {
+if((n === (1))){
+return self__.val;
+} else {
+return not_found;
+
+}
+}
+});
+
+cljs.core.RedNode.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (node,n,v){
+var self__ = this;
+var node__$1 = this;
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null).cljs$core$IVector$_assoc_n$arity$3(null,n,v);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IMeta$_meta$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return null;
+});
+
+cljs.core.RedNode.prototype.cljs$core$ICounted$_count$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return (2);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IMapEntry$_key$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return self__.key;
+});
+
+cljs.core.RedNode.prototype.cljs$core$IMapEntry$_val$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return self__.val;
+});
+
+cljs.core.RedNode.prototype.cljs$core$IStack$_peek$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return self__.val;
+});
+
+cljs.core.RedNode.prototype.cljs$core$IStack$_pop$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key], null);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return (new cljs.core.IndexedSeq([self__.val,self__.key],(0),null));
+});
+
+cljs.core.RedNode.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.RedNode.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return null;
+});
+
+cljs.core.RedNode.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (node,f){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(node__$1,f);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (node,f,start){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3(node__$1,f,start);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (node,k,v){
+var self__ = this;
+var node__$1 = this;
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),k,v);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (node,k){
+var self__ = this;
+var node__$1 = this;
+return (((k === (0))) || ((k === (1))));
+});
+
+cljs.core.RedNode.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (node){
+var self__ = this;
+var node__$1 = this;
+return (new cljs.core.IndexedSeq([self__.key,self__.val],(0),null));
+});
+
+cljs.core.RedNode.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (node,meta){
+var self__ = this;
+var node__$1 = this;
+return cljs.core._with_meta(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),meta);
+});
+
+cljs.core.RedNode.prototype.cljs$core$ICollection$_conj$arity$2 = (function (node,o){
+var self__ = this;
+var node__$1 = this;
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val,o], null);
+});
+
+cljs.core.RedNode.prototype.call = (function() {
+var G__11946 = null;
+var G__11946__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var node = self____$1;
+return node.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+var G__11946__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var node = self____$1;
+return node.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+G__11946 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__11946__2.call(this,self__,k);
+case 3:
+return G__11946__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__11946.cljs$core$IFn$_invoke$arity$2 = G__11946__2;
+G__11946.cljs$core$IFn$_invoke$arity$3 = G__11946__3;
+return G__11946;
+})()
+;
+
+cljs.core.RedNode.prototype.apply = (function (self__,args11941){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11941)));
+});
+
+cljs.core.RedNode.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var node = this;
+return node.cljs$core$IIndexed$_nth$arity$2(null,k);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var node = this;
+return node.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
+});
+
+cljs.core.RedNode.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"key","key",124488940,null),new cljs.core.Symbol(null,"val","val",1769233139,null),new cljs.core.Symbol(null,"left","left",1241415590,null),new cljs.core.Symbol(null,"right","right",1187949694,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.RedNode.cljs$lang$type = true;
+
+cljs.core.RedNode.cljs$lang$ctorStr = "cljs.core/RedNode";
+
+cljs.core.RedNode.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/RedNode");
+});
+
+/**
+ * Positional factory function for cljs.core/RedNode.
+ */
+cljs.core.__GT_RedNode = (function cljs$core$__GT_RedNode(key,val,left,right,__hash){
+return (new cljs.core.RedNode(key,val,left,right,__hash));
+});
+
+var G__11947_11950 = cljs.core.RedNode.prototype;
+var G__11948_11951 = cljs.core.ITER_SYMBOL;
+var G__11949_11952 = ((function (G__11947_11950,G__11948_11951){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__11947_11950,G__11948_11951))
+;
+goog.object.set(G__11947_11950,G__11948_11951,G__11949_11952);
+cljs.core.tree_map_add = (function cljs$core$tree_map_add(comp,tree,k,v,found){
+if((tree == null)){
+return (new cljs.core.RedNode(k,v,null,null,null));
+} else {
+var c = (function (){var G__11953 = k;
+var G__11954 = tree.key;
+return (comp.cljs$core$IFn$_invoke$arity$2 ? comp.cljs$core$IFn$_invoke$arity$2(G__11953,G__11954) : comp.call(null,G__11953,G__11954));
+})();
+if((c === (0))){
+(found[(0)] = tree);
+
+return null;
+} else {
+if((c < (0))){
+var ins = (function (){var G__11955 = comp;
+var G__11956 = tree.left;
+var G__11957 = k;
+var G__11958 = v;
+var G__11959 = found;
+return (cljs.core.tree_map_add.cljs$core$IFn$_invoke$arity$5 ? cljs.core.tree_map_add.cljs$core$IFn$_invoke$arity$5(G__11955,G__11956,G__11957,G__11958,G__11959) : cljs.core.tree_map_add.call(null,G__11955,G__11956,G__11957,G__11958,G__11959));
+})();
+if((!((ins == null)))){
+return tree.add_left(ins);
+} else {
+return null;
+}
+} else {
+var ins = (function (){var G__11960 = comp;
+var G__11961 = tree.right;
+var G__11962 = k;
+var G__11963 = v;
+var G__11964 = found;
+return (cljs.core.tree_map_add.cljs$core$IFn$_invoke$arity$5 ? cljs.core.tree_map_add.cljs$core$IFn$_invoke$arity$5(G__11960,G__11961,G__11962,G__11963,G__11964) : cljs.core.tree_map_add.call(null,G__11960,G__11961,G__11962,G__11963,G__11964));
+})();
+if((!((ins == null)))){
+return tree.add_right(ins);
+} else {
+return null;
+}
+
+}
+}
+}
+});
+cljs.core.tree_map_append = (function cljs$core$tree_map_append(left,right){
+if((left == null)){
+return right;
+} else {
+if((right == null)){
+return left;
+} else {
+if((left instanceof cljs.core.RedNode)){
+if((right instanceof cljs.core.RedNode)){
+var app = (function (){var G__11965 = left.right;
+var G__11966 = right.left;
+return (cljs.core.tree_map_append.cljs$core$IFn$_invoke$arity$2 ? cljs.core.tree_map_append.cljs$core$IFn$_invoke$arity$2(G__11965,G__11966) : cljs.core.tree_map_append.call(null,G__11965,G__11966));
+})();
+if((app instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(app.key,app.val,(new cljs.core.RedNode(left.key,left.val,left.left,app.left,null)),(new cljs.core.RedNode(right.key,right.val,app.right,right.right,null)),null));
+} else {
+return (new cljs.core.RedNode(left.key,left.val,left.left,(new cljs.core.RedNode(right.key,right.val,app,right.right,null)),null));
+}
+} else {
+return (new cljs.core.RedNode(left.key,left.val,left.left,(function (){var G__11967 = left.right;
+var G__11968 = right;
+return (cljs.core.tree_map_append.cljs$core$IFn$_invoke$arity$2 ? cljs.core.tree_map_append.cljs$core$IFn$_invoke$arity$2(G__11967,G__11968) : cljs.core.tree_map_append.call(null,G__11967,G__11968));
+})(),null));
+}
+} else {
+if((right instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(right.key,right.val,(function (){var G__11969 = left;
+var G__11970 = right.left;
+return (cljs.core.tree_map_append.cljs$core$IFn$_invoke$arity$2 ? cljs.core.tree_map_append.cljs$core$IFn$_invoke$arity$2(G__11969,G__11970) : cljs.core.tree_map_append.call(null,G__11969,G__11970));
+})(),right.right,null));
+} else {
+var app = (function (){var G__11971 = left.right;
+var G__11972 = right.left;
+return (cljs.core.tree_map_append.cljs$core$IFn$_invoke$arity$2 ? cljs.core.tree_map_append.cljs$core$IFn$_invoke$arity$2(G__11971,G__11972) : cljs.core.tree_map_append.call(null,G__11971,G__11972));
+})();
+if((app instanceof cljs.core.RedNode)){
+return (new cljs.core.RedNode(app.key,app.val,(new cljs.core.BlackNode(left.key,left.val,left.left,app.left,null)),(new cljs.core.BlackNode(right.key,right.val,app.right,right.right,null)),null));
+} else {
+return cljs.core.balance_left_del(left.key,left.val,left.left,(new cljs.core.BlackNode(right.key,right.val,app,right.right,null)));
+}
+
+}
+}
+}
+}
+});
+cljs.core.tree_map_remove = (function cljs$core$tree_map_remove(comp,tree,k,found){
+if((!((tree == null)))){
+var c = (function (){var G__11973 = k;
+var G__11974 = tree.key;
+return (comp.cljs$core$IFn$_invoke$arity$2 ? comp.cljs$core$IFn$_invoke$arity$2(G__11973,G__11974) : comp.call(null,G__11973,G__11974));
+})();
+if((c === (0))){
+(found[(0)] = tree);
+
+return cljs.core.tree_map_append(tree.left,tree.right);
+} else {
+if((c < (0))){
+var del = (function (){var G__11975 = comp;
+var G__11976 = tree.left;
+var G__11977 = k;
+var G__11978 = found;
+return (cljs.core.tree_map_remove.cljs$core$IFn$_invoke$arity$4 ? cljs.core.tree_map_remove.cljs$core$IFn$_invoke$arity$4(G__11975,G__11976,G__11977,G__11978) : cljs.core.tree_map_remove.call(null,G__11975,G__11976,G__11977,G__11978));
+})();
+if((((!((del == null)))) || ((!(((found[(0)]) == null)))))){
+if((tree.left instanceof cljs.core.BlackNode)){
+return cljs.core.balance_left_del(tree.key,tree.val,del,tree.right);
+} else {
+return (new cljs.core.RedNode(tree.key,tree.val,del,tree.right,null));
+}
+} else {
+return null;
+}
+} else {
+var del = (function (){var G__11979 = comp;
+var G__11980 = tree.right;
+var G__11981 = k;
+var G__11982 = found;
+return (cljs.core.tree_map_remove.cljs$core$IFn$_invoke$arity$4 ? cljs.core.tree_map_remove.cljs$core$IFn$_invoke$arity$4(G__11979,G__11980,G__11981,G__11982) : cljs.core.tree_map_remove.call(null,G__11979,G__11980,G__11981,G__11982));
+})();
+if((((!((del == null)))) || ((!(((found[(0)]) == null)))))){
+if((tree.right instanceof cljs.core.BlackNode)){
+return cljs.core.balance_right_del(tree.key,tree.val,tree.left,del);
+} else {
+return (new cljs.core.RedNode(tree.key,tree.val,tree.left,del,null));
+}
+} else {
+return null;
+}
+
+}
+}
+} else {
+return null;
+}
+});
+cljs.core.tree_map_replace = (function cljs$core$tree_map_replace(comp,tree,k,v){
+var tk = tree.key;
+var c = (comp.cljs$core$IFn$_invoke$arity$2 ? comp.cljs$core$IFn$_invoke$arity$2(k,tk) : comp.call(null,k,tk));
+if((c === (0))){
+return tree.replace(tk,v,tree.left,tree.right);
+} else {
+if((c < (0))){
+return tree.replace(tk,tree.val,(function (){var G__11983 = comp;
+var G__11984 = tree.left;
+var G__11985 = k;
+var G__11986 = v;
+return (cljs.core.tree_map_replace.cljs$core$IFn$_invoke$arity$4 ? cljs.core.tree_map_replace.cljs$core$IFn$_invoke$arity$4(G__11983,G__11984,G__11985,G__11986) : cljs.core.tree_map_replace.call(null,G__11983,G__11984,G__11985,G__11986));
+})(),tree.right);
+} else {
+return tree.replace(tk,tree.val,tree.left,(function (){var G__11987 = comp;
+var G__11988 = tree.right;
+var G__11989 = k;
+var G__11990 = v;
+return (cljs.core.tree_map_replace.cljs$core$IFn$_invoke$arity$4 ? cljs.core.tree_map_replace.cljs$core$IFn$_invoke$arity$4(G__11987,G__11988,G__11989,G__11990) : cljs.core.tree_map_replace.call(null,G__11987,G__11988,G__11989,G__11990));
+})());
+
+}
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IReversible}
+ * @implements {cljs.core.IKVReduce}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IFind}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISorted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IAssociative}
+ * @implements {cljs.core.IMap}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.PersistentTreeMap = (function (comp,tree,cnt,meta,__hash){
+this.comp = comp;
+this.tree = tree;
+this.cnt = cnt;
+this.meta = meta;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 418776847;
+this.cljs$lang$protocol_mask$partition1$ = 8192;
+});
+cljs.core.PersistentTreeMap.prototype.cljs$core$IFind$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IFind$_find$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.entry_at(k);
+});
+
+cljs.core.PersistentTreeMap.prototype.forEach = (function (f){
+var self__ = this;
+var coll = this;
+var seq__11992 = cljs.core.seq(coll);
+var chunk__11993 = null;
+var count__11994 = (0);
+var i__11995 = (0);
+while(true){
+if((i__11995 < count__11994)){
+var vec__11996 = chunk__11993.cljs$core$IIndexed$_nth$arity$2(null,i__11995);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11996,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11996,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__12006 = seq__11992;
+var G__12007 = chunk__11993;
+var G__12008 = count__11994;
+var G__12009 = (i__11995 + (1));
+seq__11992 = G__12006;
+chunk__11993 = G__12007;
+count__11994 = G__12008;
+i__11995 = G__12009;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__11992);
+if(temp__4657__auto__){
+var seq__11992__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__11992__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__11992__$1);
+var G__12010 = cljs.core.chunk_rest(seq__11992__$1);
+var G__12011 = c__8664__auto__;
+var G__12012 = cljs.core.count(c__8664__auto__);
+var G__12013 = (0);
+seq__11992 = G__12010;
+chunk__11993 = G__12011;
+count__11994 = G__12012;
+i__11995 = G__12013;
+continue;
+} else {
+var vec__11999 = cljs.core.first(seq__11992__$1);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11999,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__11999,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__12014 = cljs.core.next(seq__11992__$1);
+var G__12015 = null;
+var G__12016 = (0);
+var G__12017 = (0);
+seq__11992 = G__12014;
+chunk__11993 = G__12015;
+count__11994 = G__12016;
+i__11995 = G__12017;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.get = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.PersistentTreeMap.prototype.entries = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_entries_iterator(cljs.core.seq(coll));
+});
+
+cljs.core.PersistentTreeMap.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentTreeMap.prototype.keys = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.keys(coll));
+});
+
+cljs.core.PersistentTreeMap.prototype.values = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.vals(coll));
+});
+
+cljs.core.PersistentTreeMap.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentTreeMap.prototype.entry_at = (function (k){
+var self__ = this;
+var coll = this;
+var t = self__.tree;
+while(true){
+if((!((t == null)))){
+var c = (function (){var G__12002 = k;
+var G__12003 = t.key;
+return (self__.comp.cljs$core$IFn$_invoke$arity$2 ? self__.comp.cljs$core$IFn$_invoke$arity$2(G__12002,G__12003) : self__.comp.call(null,G__12002,G__12003));
+})();
+if((c === (0))){
+return t;
+} else {
+if((c < (0))){
+var G__12018 = t.left;
+t = G__12018;
+continue;
+} else {
+var G__12019 = t.right;
+t = G__12019;
+continue;
+
+}
+}
+} else {
+return null;
+}
+break;
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.has = (function (k){
+var self__ = this;
+var coll = this;
+return cljs.core.contains_QMARK_(coll,k);
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ILookup$_lookup$arity$3(null,k,null);
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
+var self__ = this;
+var coll__$1 = this;
+var n = coll__$1.entry_at(k);
+if((!((n == null)))){
+return n.val;
+} else {
+return not_found;
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (coll,f,init){
+var self__ = this;
+var coll__$1 = this;
+if((!((self__.tree == null)))){
+return cljs.core.unreduced(cljs.core.tree_map_kv_reduce(self__.tree,f,init));
+} else {
+return init;
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.PersistentTreeMap(self__.comp,self__.tree,self__.cnt,self__.meta,self__.__hash));
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.cnt;
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt > (0))){
+return cljs.core.create_tree_map_seq(self__.tree,false,self__.cnt);
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_map(coll__$1,other);
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentTreeMap(self__.comp,null,(0),self__.meta,(0)));
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+var found = [null];
+var t = cljs.core.tree_map_remove(self__.comp,self__.tree,k,found);
+if((t == null)){
+if((cljs.core.nth.cljs$core$IFn$_invoke$arity$2(found,(0)) == null)){
+return coll__$1;
+} else {
+return (new cljs.core.PersistentTreeMap(self__.comp,null,(0),self__.meta,null));
+}
+} else {
+return (new cljs.core.PersistentTreeMap(self__.comp,t.blacken(),(self__.cnt - (1)),self__.meta,null));
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
+var self__ = this;
+var coll__$1 = this;
+var found = [null];
+var t = cljs.core.tree_map_add(self__.comp,self__.tree,k,v,found);
+if((t == null)){
+var found_node = cljs.core.nth.cljs$core$IFn$_invoke$arity$2(found,(0));
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(v,found_node.val)){
+return coll__$1;
+} else {
+return (new cljs.core.PersistentTreeMap(self__.comp,cljs.core.tree_map_replace(self__.comp,self__.tree,k,v),self__.cnt,self__.meta,null));
+}
+} else {
+return (new cljs.core.PersistentTreeMap(self__.comp,t.blacken(),(self__.cnt + (1)),self__.meta,null));
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (coll,k){
+var self__ = this;
+var coll__$1 = this;
+return (!((coll__$1.entry_at(k) == null)));
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt > (0))){
+return cljs.core.create_tree_map_seq(self__.tree,true,self__.cnt);
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentTreeMap(self__.comp,self__.tree,self__.cnt,meta__$1,self__.__hash));
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,entry){
+var self__ = this;
+var coll__$1 = this;
+if(cljs.core.vector_QMARK_(entry)){
+return coll__$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(1)));
+} else {
+var ret = coll__$1;
+var es = cljs.core.seq(entry);
+while(true){
+if((es == null)){
+return ret;
+} else {
+var e = cljs.core.first(es);
+if(cljs.core.vector_QMARK_(e)){
+var G__12020 = ret.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(1)));
+var G__12021 = cljs.core.next(es);
+ret = G__12020;
+es = G__12021;
+continue;
+} else {
+throw (new Error("conj on a map takes map entries or seqables of map entries"));
+}
+}
+break;
+}
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.call = (function() {
+var G__12022 = null;
+var G__12022__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+var G__12022__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+G__12022 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__12022__2.call(this,self__,k);
+case 3:
+return G__12022__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__12022.cljs$core$IFn$_invoke$arity$2 = G__12022__2;
+G__12022.cljs$core$IFn$_invoke$arity$3 = G__12022__3;
+return G__12022;
+})()
+;
+
+cljs.core.PersistentTreeMap.prototype.apply = (function (self__,args11991){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args11991)));
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_sorted_seq$arity$2 = (function (coll,ascending_QMARK_){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt > (0))){
+return cljs.core.create_tree_map_seq(self__.tree,ascending_QMARK_,self__.cnt);
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_sorted_seq_from$arity$3 = (function (coll,k,ascending_QMARK_){
+var self__ = this;
+var coll__$1 = this;
+if((self__.cnt > (0))){
+var stack = null;
+var t = self__.tree;
+while(true){
+if((!((t == null)))){
+var c = (function (){var G__12004 = k;
+var G__12005 = t.key;
+return (self__.comp.cljs$core$IFn$_invoke$arity$2 ? self__.comp.cljs$core$IFn$_invoke$arity$2(G__12004,G__12005) : self__.comp.call(null,G__12004,G__12005));
+})();
+if((c === (0))){
+return (new cljs.core.PersistentTreeMapSeq(null,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(stack,t),ascending_QMARK_,(-1),null));
+} else {
+if(cljs.core.truth_(ascending_QMARK_)){
+if((c < (0))){
+var G__12023 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(stack,t);
+var G__12024 = t.left;
+stack = G__12023;
+t = G__12024;
+continue;
+} else {
+var G__12025 = stack;
+var G__12026 = t.right;
+stack = G__12025;
+t = G__12026;
+continue;
+}
+} else {
+if((c > (0))){
+var G__12027 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(stack,t);
+var G__12028 = t.right;
+stack = G__12027;
+t = G__12028;
+continue;
+} else {
+var G__12029 = stack;
+var G__12030 = t.left;
+stack = G__12029;
+t = G__12030;
+continue;
+}
+
+}
+}
+} else {
+if((stack == null)){
+return null;
+} else {
+return (new cljs.core.PersistentTreeMapSeq(null,stack,ascending_QMARK_,(-1),null));
+}
+}
+break;
+}
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_entry_key$arity$2 = (function (coll,entry){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.key(entry);
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_comparator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.comp;
+});
+
+cljs.core.PersistentTreeMap.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"comp","comp",-1462482139,null),new cljs.core.Symbol(null,"tree","tree",1444219499,null),new cljs.core.Symbol(null,"cnt","cnt",1924510325,null),new cljs.core.Symbol(null,"meta","meta",-1154898805,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.PersistentTreeMap.cljs$lang$type = true;
+
+cljs.core.PersistentTreeMap.cljs$lang$ctorStr = "cljs.core/PersistentTreeMap";
+
+cljs.core.PersistentTreeMap.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentTreeMap");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentTreeMap.
+ */
+cljs.core.__GT_PersistentTreeMap = (function cljs$core$__GT_PersistentTreeMap(comp,tree,cnt,meta,__hash){
+return (new cljs.core.PersistentTreeMap(comp,tree,cnt,meta,__hash));
+});
+
+cljs.core.PersistentTreeMap.EMPTY = (new cljs.core.PersistentTreeMap(cljs.core.compare,null,(0),null,cljs.core.empty_unordered_hash));
+var G__12031_12034 = cljs.core.PersistentTreeMap.prototype;
+var G__12032_12035 = cljs.core.ITER_SYMBOL;
+var G__12033_12036 = ((function (G__12031_12034,G__12032_12035){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__12031_12034,G__12032_12035))
+;
+goog.object.set(G__12031_12034,G__12032_12035,G__12033_12036);
+/**
+ * keyval => key val
+ * Returns a new hash map with supplied mappings.
+ */
+cljs.core.hash_map = (function cljs$core$hash_map(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12038 = arguments.length;
+var i__9001__auto___12039 = (0);
+while(true){
+if((i__9001__auto___12039 < len__9000__auto___12038)){
+args__9010__auto__.push((arguments[i__9001__auto___12039]));
+
+var G__12040 = (i__9001__auto___12039 + (1));
+i__9001__auto___12039 = G__12040;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.hash_map.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.hash_map.cljs$core$IFn$_invoke$arity$variadic = (function (keyvals){
+var in$ = cljs.core.seq(keyvals);
+var out = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
+while(true){
+if(in$){
+var G__12041 = cljs.core.nnext(in$);
+var G__12042 = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(out,cljs.core.first(in$),cljs.core.second(in$));
+in$ = G__12041;
+out = G__12042;
+continue;
+} else {
+return cljs.core.persistent_BANG_(out);
+}
+break;
+}
+});
+
+cljs.core.hash_map.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.hash_map.cljs$lang$applyTo = (function (seq12037){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12037));
+});
+
+/**
+ * keyval => key val
+ * Returns a new array map with supplied mappings.
+ */
+cljs.core.array_map = (function cljs$core$array_map(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12044 = arguments.length;
+var i__9001__auto___12045 = (0);
+while(true){
+if((i__9001__auto___12045 < len__9000__auto___12044)){
+args__9010__auto__.push((arguments[i__9001__auto___12045]));
+
+var G__12046 = (i__9001__auto___12045 + (1));
+i__9001__auto___12045 = G__12046;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.array_map.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.array_map.cljs$core$IFn$_invoke$arity$variadic = (function (keyvals){
+var arr = (((((keyvals instanceof cljs.core.IndexedSeq)) && ((keyvals.i === (0)))))?keyvals.arr:cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(keyvals));
+return cljs.core.PersistentArrayMap.createAsIfByAssoc(arr);
+});
+
+cljs.core.array_map.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.array_map.cljs$lang$applyTo = (function (seq12043){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12043));
+});
+
+/**
+ * keyval => key val
+ * Returns a new object map with supplied mappings.
+ */
+cljs.core.obj_map = (function cljs$core$obj_map(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12053 = arguments.length;
+var i__9001__auto___12054 = (0);
+while(true){
+if((i__9001__auto___12054 < len__9000__auto___12053)){
+args__9010__auto__.push((arguments[i__9001__auto___12054]));
+
+var G__12055 = (i__9001__auto___12054 + (1));
+i__9001__auto___12054 = G__12055;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.obj_map.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.obj_map.cljs$core$IFn$_invoke$arity$variadic = (function (keyvals){
+var ks = [];
+var obj = {};
+var kvs = cljs.core.seq(keyvals);
+while(true){
+if(kvs){
+ks.push(cljs.core.first(kvs));
+
+var G__12050_12056 = obj;
+var G__12051_12057 = cljs.core.first(kvs);
+var G__12052_12058 = cljs.core.second(kvs);
+goog.object.set(G__12050_12056,G__12051_12057,G__12052_12058);
+
+var G__12059 = cljs.core.nnext(kvs);
+kvs = G__12059;
+continue;
+} else {
+return cljs.core.ObjMap.fromObject(ks,obj);
+}
+break;
+}
+});
+
+cljs.core.obj_map.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.obj_map.cljs$lang$applyTo = (function (seq12047){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12047));
+});
+
+/**
+ * keyval => key val
+ * Returns a new sorted map with supplied mappings.
+ */
+cljs.core.sorted_map = (function cljs$core$sorted_map(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12061 = arguments.length;
+var i__9001__auto___12062 = (0);
+while(true){
+if((i__9001__auto___12062 < len__9000__auto___12061)){
+args__9010__auto__.push((arguments[i__9001__auto___12062]));
+
+var G__12063 = (i__9001__auto___12062 + (1));
+i__9001__auto___12062 = G__12063;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.sorted_map.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.sorted_map.cljs$core$IFn$_invoke$arity$variadic = (function (keyvals){
+var in$ = cljs.core.seq(keyvals);
+var out = cljs.core.PersistentTreeMap.EMPTY;
+while(true){
+if(in$){
+var G__12064 = cljs.core.nnext(in$);
+var G__12065 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(out,cljs.core.first(in$),cljs.core.second(in$));
+in$ = G__12064;
+out = G__12065;
+continue;
+} else {
+return out;
+}
+break;
+}
+});
+
+cljs.core.sorted_map.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.sorted_map.cljs$lang$applyTo = (function (seq12060){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12060));
+});
+
+/**
+ * keyval => key val
+ * Returns a new sorted map with supplied mappings, using the supplied comparator.
+ */
+cljs.core.sorted_map_by = (function cljs$core$sorted_map_by(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12068 = arguments.length;
+var i__9001__auto___12069 = (0);
+while(true){
+if((i__9001__auto___12069 < len__9000__auto___12068)){
+args__9010__auto__.push((arguments[i__9001__auto___12069]));
+
+var G__12070 = (i__9001__auto___12069 + (1));
+i__9001__auto___12069 = G__12070;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((1) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((1)),(0),null)):null);
+return cljs.core.sorted_map_by.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9011__auto__);
+});
+
+cljs.core.sorted_map_by.cljs$core$IFn$_invoke$arity$variadic = (function (comparator,keyvals){
+var in$ = cljs.core.seq(keyvals);
+var out = (new cljs.core.PersistentTreeMap(cljs.core.fn__GT_comparator(comparator),null,(0),null,(0)));
+while(true){
+if(in$){
+var G__12071 = cljs.core.nnext(in$);
+var G__12072 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(out,cljs.core.first(in$),cljs.core.second(in$));
+in$ = G__12071;
+out = G__12072;
+continue;
+} else {
+return out;
+}
+break;
+}
+});
+
+cljs.core.sorted_map_by.cljs$lang$maxFixedArity = (1);
+
+/** @this {Function} */
+cljs.core.sorted_map_by.cljs$lang$applyTo = (function (seq12066){
+var G__12067 = cljs.core.first(seq12066);
+var seq12066__$1 = cljs.core.next(seq12066);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12067,seq12066__$1);
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.KeySeq = (function (mseq,_meta){
+this.mseq = mseq;
+this._meta = _meta;
+this.cljs$lang$protocol_mask$partition0$ = 32374988;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.KeySeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.KeySeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.KeySeq.prototype.indexOf = (function() {
+var G__12075 = null;
+var G__12075__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__12075__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__12075 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__12075__1.call(this,x);
+case 2:
+return G__12075__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12075.cljs$core$IFn$_invoke$arity$1 = G__12075__1;
+G__12075.cljs$core$IFn$_invoke$arity$2 = G__12075__2;
+return G__12075;
+})()
+;
+
+cljs.core.KeySeq.prototype.lastIndexOf = (function() {
+var G__12076 = null;
+var G__12076__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__12076__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__12076 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__12076__1.call(this,x);
+case 2:
+return G__12076__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12076.cljs$core$IFn$_invoke$arity$1 = G__12076__1;
+G__12076.cljs$core$IFn$_invoke$arity$2 = G__12076__2;
+return G__12076;
+})()
+;
+
+cljs.core.KeySeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__._meta;
+});
+
+cljs.core.KeySeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var nseq = (((((!((self__.mseq == null))))?(((((self__.mseq.cljs$lang$protocol_mask$partition0$ & (128))) || ((cljs.core.PROTOCOL_SENTINEL === self__.mseq.cljs$core$INext$))))?true:(((!self__.mseq.cljs$lang$protocol_mask$partition0$))?cljs.core.native_satisfies_QMARK_(cljs.core.INext,self__.mseq):false)):cljs.core.native_satisfies_QMARK_(cljs.core.INext,self__.mseq)))?self__.mseq.cljs$core$INext$_next$arity$1(null):cljs.core.next(self__.mseq));
+if((nseq == null)){
+return null;
+} else {
+return (new cljs.core.KeySeq(nseq,self__._meta));
+}
+});
+
+cljs.core.KeySeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.hash_ordered_coll(coll__$1);
+});
+
+cljs.core.KeySeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.KeySeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__._meta);
+});
+
+cljs.core.KeySeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.KeySeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.KeySeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var me = self__.mseq.cljs$core$ISeq$_first$arity$1(null);
+return me.cljs$core$IMapEntry$_key$arity$1(null);
+});
+
+cljs.core.KeySeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var nseq = (((((!((self__.mseq == null))))?(((((self__.mseq.cljs$lang$protocol_mask$partition0$ & (128))) || ((cljs.core.PROTOCOL_SENTINEL === self__.mseq.cljs$core$INext$))))?true:(((!self__.mseq.cljs$lang$protocol_mask$partition0$))?cljs.core.native_satisfies_QMARK_(cljs.core.INext,self__.mseq):false)):cljs.core.native_satisfies_QMARK_(cljs.core.INext,self__.mseq)))?self__.mseq.cljs$core$INext$_next$arity$1(null):cljs.core.next(self__.mseq));
+if((!((nseq == null)))){
+return (new cljs.core.KeySeq(nseq,self__._meta));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.KeySeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.KeySeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,new_meta){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.KeySeq(self__.mseq,new_meta));
+});
+
+cljs.core.KeySeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.KeySeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"mseq","mseq",1602647196,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"tag","tag",-1290361223),new cljs.core.Symbol(null,"not-native","not-native",-236392494,null)], null)),new cljs.core.Symbol(null,"_meta","_meta",-1716892533,null)], null);
+});
+
+cljs.core.KeySeq.cljs$lang$type = true;
+
+cljs.core.KeySeq.cljs$lang$ctorStr = "cljs.core/KeySeq";
+
+cljs.core.KeySeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/KeySeq");
+});
+
+/**
+ * Positional factory function for cljs.core/KeySeq.
+ */
+cljs.core.__GT_KeySeq = (function cljs$core$__GT_KeySeq(mseq,_meta){
+return (new cljs.core.KeySeq(mseq,_meta));
+});
+
+var G__12077_12080 = cljs.core.KeySeq.prototype;
+var G__12078_12081 = cljs.core.ITER_SYMBOL;
+var G__12079_12082 = ((function (G__12077_12080,G__12078_12081){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__12077_12080,G__12078_12081))
+;
+goog.object.set(G__12077_12080,G__12078_12081,G__12079_12082);
+/**
+ * Returns a sequence of the map's keys.
+ */
+cljs.core.keys = (function cljs$core$keys(hash_map){
+var temp__4657__auto__ = cljs.core.seq(hash_map);
+if(temp__4657__auto__){
+var mseq = temp__4657__auto__;
+return (new cljs.core.KeySeq(mseq,null));
+} else {
+return null;
+}
+});
+/**
+ * Returns the key of the map entry.
+ */
+cljs.core.key = (function cljs$core$key(map_entry){
+return cljs.core._key(map_entry);
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.ValSeq = (function (mseq,_meta){
+this.mseq = mseq;
+this._meta = _meta;
+this.cljs$lang$protocol_mask$partition0$ = 32374988;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.ValSeq.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.ValSeq.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.ValSeq.prototype.indexOf = (function() {
+var G__12085 = null;
+var G__12085__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__12085__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__12085 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__12085__1.call(this,x);
+case 2:
+return G__12085__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12085.cljs$core$IFn$_invoke$arity$1 = G__12085__1;
+G__12085.cljs$core$IFn$_invoke$arity$2 = G__12085__2;
+return G__12085;
+})()
+;
+
+cljs.core.ValSeq.prototype.lastIndexOf = (function() {
+var G__12086 = null;
+var G__12086__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__12086__2 = (function (x,start){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start);
+});
+G__12086 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__12086__1.call(this,x);
+case 2:
+return G__12086__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12086.cljs$core$IFn$_invoke$arity$1 = G__12086__1;
+G__12086.cljs$core$IFn$_invoke$arity$2 = G__12086__2;
+return G__12086;
+})()
+;
+
+cljs.core.ValSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__._meta;
+});
+
+cljs.core.ValSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var nseq = (((((!((self__.mseq == null))))?(((((self__.mseq.cljs$lang$protocol_mask$partition0$ & (128))) || ((cljs.core.PROTOCOL_SENTINEL === self__.mseq.cljs$core$INext$))))?true:(((!self__.mseq.cljs$lang$protocol_mask$partition0$))?cljs.core.native_satisfies_QMARK_(cljs.core.INext,self__.mseq):false)):cljs.core.native_satisfies_QMARK_(cljs.core.INext,self__.mseq)))?self__.mseq.cljs$core$INext$_next$arity$1(null):cljs.core.next(self__.mseq));
+if((nseq == null)){
+return null;
+} else {
+return (new cljs.core.ValSeq(nseq,self__._meta));
+}
+});
+
+cljs.core.ValSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.hash_ordered_coll(coll__$1);
+});
+
+cljs.core.ValSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.equiv_sequential(coll__$1,other);
+});
+
+cljs.core.ValSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__._meta);
+});
+
+cljs.core.ValSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
+});
+
+cljs.core.ValSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
+});
+
+cljs.core.ValSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var me = self__.mseq.cljs$core$ISeq$_first$arity$1(null);
+return me.cljs$core$IMapEntry$_val$arity$1(null);
+});
+
+cljs.core.ValSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var nseq = (((((!((self__.mseq == null))))?(((((self__.mseq.cljs$lang$protocol_mask$partition0$ & (128))) || ((cljs.core.PROTOCOL_SENTINEL === self__.mseq.cljs$core$INext$))))?true:(((!self__.mseq.cljs$lang$protocol_mask$partition0$))?cljs.core.native_satisfies_QMARK_(cljs.core.INext,self__.mseq):false)):cljs.core.native_satisfies_QMARK_(cljs.core.INext,self__.mseq)))?self__.mseq.cljs$core$INext$_next$arity$1(null):cljs.core.next(self__.mseq));
+if((!((nseq == null)))){
+return (new cljs.core.ValSeq(nseq,self__._meta));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.ValSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1;
+});
+
+cljs.core.ValSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,new_meta){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.ValSeq(self__.mseq,new_meta));
+});
+
+cljs.core.ValSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.cons(o,coll__$1);
+});
+
+cljs.core.ValSeq.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"mseq","mseq",1602647196,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"tag","tag",-1290361223),new cljs.core.Symbol(null,"not-native","not-native",-236392494,null)], null)),new cljs.core.Symbol(null,"_meta","_meta",-1716892533,null)], null);
+});
+
+cljs.core.ValSeq.cljs$lang$type = true;
+
+cljs.core.ValSeq.cljs$lang$ctorStr = "cljs.core/ValSeq";
+
+cljs.core.ValSeq.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ValSeq");
+});
+
+/**
+ * Positional factory function for cljs.core/ValSeq.
+ */
+cljs.core.__GT_ValSeq = (function cljs$core$__GT_ValSeq(mseq,_meta){
+return (new cljs.core.ValSeq(mseq,_meta));
+});
+
+var G__12087_12090 = cljs.core.ValSeq.prototype;
+var G__12088_12091 = cljs.core.ITER_SYMBOL;
+var G__12089_12092 = ((function (G__12087_12090,G__12088_12091){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__12087_12090,G__12088_12091))
+;
+goog.object.set(G__12087_12090,G__12088_12091,G__12089_12092);
+/**
+ * Returns a sequence of the map's values.
+ */
+cljs.core.vals = (function cljs$core$vals(hash_map){
+var temp__4657__auto__ = cljs.core.seq(hash_map);
+if(temp__4657__auto__){
+var mseq = temp__4657__auto__;
+return (new cljs.core.ValSeq(mseq,null));
+} else {
+return null;
+}
+});
+/**
+ * Returns the value in the map entry.
+ */
+cljs.core.val = (function cljs$core$val(map_entry){
+return cljs.core._val(map_entry);
+});
+/**
+ * Returns a map that consists of the rest of the maps conj-ed onto
+ * the first. If a key occurs in more than one map, the mapping from
+ * the latter (left-to-right) will be the mapping in the result.
+ */
+cljs.core.merge = (function cljs$core$merge(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12096 = arguments.length;
+var i__9001__auto___12097 = (0);
+while(true){
+if((i__9001__auto___12097 < len__9000__auto___12096)){
+args__9010__auto__.push((arguments[i__9001__auto___12097]));
+
+var G__12098 = (i__9001__auto___12097 + (1));
+i__9001__auto___12097 = G__12098;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic = (function (maps){
+if(cljs.core.truth_(cljs.core.some(cljs.core.identity,maps))){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2((function (p1__12093_SHARP_,p2__12094_SHARP_){
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$2((function (){var or__7806__auto__ = p1__12093_SHARP_;
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.PersistentArrayMap.EMPTY;
+}
+})(),p2__12094_SHARP_);
+}),maps);
+} else {
+return null;
+}
+});
+
+cljs.core.merge.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.merge.cljs$lang$applyTo = (function (seq12095){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12095));
+});
+
+/**
+ * Returns a map that consists of the rest of the maps conj-ed onto
+ * the first. If a key occurs in more than one map, the mapping(s)
+ * from the latter (left-to-right) will be combined with the mapping in
+ * the result by calling (f val-in-result val-in-latter).
+ */
+cljs.core.merge_with = (function cljs$core$merge_with(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12103 = arguments.length;
+var i__9001__auto___12104 = (0);
+while(true){
+if((i__9001__auto___12104 < len__9000__auto___12103)){
+args__9010__auto__.push((arguments[i__9001__auto___12104]));
+
+var G__12105 = (i__9001__auto___12104 + (1));
+i__9001__auto___12104 = G__12105;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((1) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((1)),(0),null)):null);
+return cljs.core.merge_with.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9011__auto__);
+});
+
+cljs.core.merge_with.cljs$core$IFn$_invoke$arity$variadic = (function (f,maps){
+if(cljs.core.truth_(cljs.core.some(cljs.core.identity,maps))){
+var merge_entry = (function (m,e){
+var k = cljs.core.key(e);
+var v = cljs.core.val(e);
+if(cljs.core.contains_QMARK_(m,k)){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12101 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
+var G__12102 = v;
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12101,G__12102) : f.call(null,G__12101,G__12102));
+})());
+} else {
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,v);
+}
+});
+var merge2 = ((function (merge_entry){
+return (function (m1,m2){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(merge_entry,(function (){var or__7806__auto__ = m1;
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.PersistentArrayMap.EMPTY;
+}
+})(),cljs.core.seq(m2));
+});})(merge_entry))
+;
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(merge2,maps);
+} else {
+return null;
+}
+});
+
+cljs.core.merge_with.cljs$lang$maxFixedArity = (1);
+
+/** @this {Function} */
+cljs.core.merge_with.cljs$lang$applyTo = (function (seq12099){
+var G__12100 = cljs.core.first(seq12099);
+var seq12099__$1 = cljs.core.next(seq12099);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12100,seq12099__$1);
+});
+
+/**
+ * Returns a map containing only those entries in map whose key is in keys
+ */
+cljs.core.select_keys = (function cljs$core$select_keys(map,keyseq){
+var ret = cljs.core.PersistentArrayMap.EMPTY;
+var keys = cljs.core.seq(keyseq);
+while(true){
+if(keys){
+var key = cljs.core.first(keys);
+var entry = cljs.core.get.cljs$core$IFn$_invoke$arity$3(map,key,new cljs.core.Keyword("cljs.core","not-found","cljs.core/not-found",-1572889185));
+var G__12106 = ((cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(entry,new cljs.core.Keyword("cljs.core","not-found","cljs.core/not-found",-1572889185)))?cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(ret,key,entry):ret);
+var G__12107 = cljs.core.next(keys);
+ret = G__12106;
+keys = G__12107;
+continue;
+} else {
+return cljs.core._with_meta(ret,cljs.core.meta(map));
+}
+break;
+}
+});
+
+/**
+* @constructor
+*/
+cljs.core.HashSetIter = (function (iter){
+this.iter = iter;
+});
+cljs.core.HashSetIter.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+return self__.iter.hasNext();
+});
+
+cljs.core.HashSetIter.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+if(self__.iter.hasNext()){
+return self__.iter.next().key;
+} else {
+throw (new Error("No such element"));
+}
+});
+
+cljs.core.HashSetIter.prototype.remove = (function (){
+var self__ = this;
+var _ = this;
+return (new Error("Unsupported operation"));
+});
+
+cljs.core.HashSetIter.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"iter","iter",-1346195486,null)], null);
+});
+
+cljs.core.HashSetIter.cljs$lang$type = true;
+
+cljs.core.HashSetIter.cljs$lang$ctorStr = "cljs.core/HashSetIter";
+
+cljs.core.HashSetIter.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/HashSetIter");
+});
+
+/**
+ * Positional factory function for cljs.core/HashSetIter.
+ */
+cljs.core.__GT_HashSetIter = (function cljs$core$__GT_HashSetIter(iter){
+return (new cljs.core.HashSetIter(iter));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEditableCollection}
+ * @implements {cljs.core.ISet}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IIterable}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.PersistentHashSet = (function (meta,hash_map,__hash){
+this.meta = meta;
+this.hash_map = hash_map;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 15077647;
+this.cljs$lang$protocol_mask$partition1$ = 139268;
+});
+cljs.core.PersistentHashSet.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentHashSet.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentHashSet.prototype.keys = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.seq(coll));
+});
+
+cljs.core.PersistentHashSet.prototype.entries = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_set_entries_iterator(cljs.core.seq(coll));
+});
+
+cljs.core.PersistentHashSet.prototype.values = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.seq(coll));
+});
+
+cljs.core.PersistentHashSet.prototype.has = (function (k){
+var self__ = this;
+var coll = this;
+return cljs.core.contains_QMARK_(coll,k);
+});
+
+cljs.core.PersistentHashSet.prototype.forEach = (function (f){
+var self__ = this;
+var coll = this;
+var seq__12111 = cljs.core.seq(coll);
+var chunk__12112 = null;
+var count__12113 = (0);
+var i__12114 = (0);
+while(true){
+if((i__12114 < count__12113)){
+var vec__12115 = chunk__12112.cljs$core$IIndexed$_nth$arity$2(null,i__12114);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12115,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12115,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__12124 = seq__12111;
+var G__12125 = chunk__12112;
+var G__12126 = count__12113;
+var G__12127 = (i__12114 + (1));
+seq__12111 = G__12124;
+chunk__12112 = G__12125;
+count__12113 = G__12126;
+i__12114 = G__12127;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__12111);
+if(temp__4657__auto__){
+var seq__12111__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__12111__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__12111__$1);
+var G__12128 = cljs.core.chunk_rest(seq__12111__$1);
+var G__12129 = c__8664__auto__;
+var G__12130 = cljs.core.count(c__8664__auto__);
+var G__12131 = (0);
+seq__12111 = G__12128;
+chunk__12112 = G__12129;
+count__12113 = G__12130;
+i__12114 = G__12131;
+continue;
+} else {
+var vec__12118 = cljs.core.first(seq__12111__$1);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12118,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12118,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__12132 = cljs.core.next(seq__12111__$1);
+var G__12133 = null;
+var G__12134 = (0);
+var G__12135 = (0);
+seq__12111 = G__12132;
+chunk__12112 = G__12133;
+count__12113 = G__12134;
+i__12114 = G__12135;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,v){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ILookup$_lookup$arity$3(null,v,null);
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,v,not_found){
+var self__ = this;
+var coll__$1 = this;
+var temp__4655__auto__ = cljs.core._find(self__.hash_map,v);
+if(cljs.core.truth_(temp__4655__auto__)){
+var entry = temp__4655__auto__;
+return cljs.core.key(entry);
+} else {
+return not_found;
+}
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.HashSetIter(cljs.core._iterator(self__.hash_map)));
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.PersistentHashSet(self__.meta,self__.hash_map,self__.__hash));
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._count(self__.hash_map);
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+var and__7791__auto__ = cljs.core.set_QMARK_(other);
+if(and__7791__auto__){
+var and__7791__auto____$1 = (cljs.core.count(coll__$1) === cljs.core.count(other));
+if(and__7791__auto____$1){
+try{return cljs.core.reduce_kv(((function (and__7791__auto____$1,and__7791__auto__,coll__$1){
+return (function (p1__12109_SHARP_,p2__12108_SHARP_){
+var or__7806__auto__ = cljs.core.contains_QMARK_(other,p2__12108_SHARP_);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return cljs.core.reduced(false);
+}
+});})(and__7791__auto____$1,and__7791__auto__,coll__$1))
+,true,self__.hash_map);
+}catch (e12123){if((e12123 instanceof Error)){
+var ex = e12123;
+return false;
+} else {
+throw e12123;
+
+}
+}} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.TransientHashSet(cljs.core._as_transient(self__.hash_map)));
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._with_meta(cljs.core.PersistentHashSet.EMPTY,self__.meta);
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$ISet$_disjoin$arity$2 = (function (coll,v){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentHashSet(self__.meta,cljs.core._dissoc(self__.hash_map,v),null));
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.keys(self__.hash_map);
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentHashSet(meta__$1,self__.hash_map,self__.__hash));
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentHashSet(self__.meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.hash_map,o,null),null));
+});
+
+cljs.core.PersistentHashSet.prototype.call = (function() {
+var G__12136 = null;
+var G__12136__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+var G__12136__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+G__12136 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__12136__2.call(this,self__,k);
+case 3:
+return G__12136__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__12136.cljs$core$IFn$_invoke$arity$2 = G__12136__2;
+G__12136.cljs$core$IFn$_invoke$arity$3 = G__12136__3;
+return G__12136;
+})()
+;
+
+cljs.core.PersistentHashSet.prototype.apply = (function (self__,args12110){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12110)));
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.PersistentHashSet.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"hash-map","hash-map",-439030950,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.PersistentHashSet.cljs$lang$type = true;
+
+cljs.core.PersistentHashSet.cljs$lang$ctorStr = "cljs.core/PersistentHashSet";
+
+cljs.core.PersistentHashSet.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentHashSet");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentHashSet.
+ */
+cljs.core.__GT_PersistentHashSet = (function cljs$core$__GT_PersistentHashSet(meta,hash_map,__hash){
+return (new cljs.core.PersistentHashSet(meta,hash_map,__hash));
+});
+
+cljs.core.PersistentHashSet.EMPTY = (new cljs.core.PersistentHashSet(null,cljs.core.PersistentArrayMap.EMPTY,cljs.core.empty_unordered_hash));
+cljs.core.PersistentHashSet.fromArray = (function (items,no_clone){
+var len = items.length;
+if((len <= cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD)){
+var arr = ((no_clone)?items:cljs.core.aclone(items));
+var i = (0);
+var out = cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY);
+while(true){
+if((i < len)){
+var G__12137 = (i + (1));
+var G__12138 = cljs.core._assoc_BANG_(out,(items[i]),null);
+i = G__12137;
+out = G__12138;
+continue;
+} else {
+return (new cljs.core.PersistentHashSet(null,cljs.core._persistent_BANG_(out),null));
+}
+break;
+}
+} else {
+var i = (0);
+var out = cljs.core.transient$(cljs.core.PersistentHashSet.EMPTY);
+while(true){
+if((i < len)){
+var G__12139 = (i + (1));
+var G__12140 = cljs.core._conj_BANG_(out,(items[i]));
+i = G__12139;
+out = G__12140;
+continue;
+} else {
+return cljs.core._persistent_BANG_(out);
+}
+break;
+}
+}
+});
+cljs.core.PersistentHashSet.createWithCheck = (function (items){
+var len = items.length;
+var t = cljs.core._as_transient(cljs.core.PersistentHashSet.EMPTY);
+var n__8769__auto___12141 = len;
+var i_12142 = (0);
+while(true){
+if((i_12142 < n__8769__auto___12141)){
+cljs.core._conj_BANG_(t,(items[i_12142]));
+
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(t),(i_12142 + (1)))){
+} else {
+throw (new Error(["Duplicate key: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1((items[i_12142]))].join('')));
+}
+
+var G__12143 = (i_12142 + (1));
+i_12142 = G__12143;
+continue;
+} else {
+}
+break;
+}
+
+return cljs.core._persistent_BANG_(t);
+});
+cljs.core.PersistentHashSet.createAsIfByAssoc = (function (items){
+var len = items.length;
+var t = cljs.core._as_transient(cljs.core.PersistentHashSet.EMPTY);
+var n__8769__auto___12144 = len;
+var i_12145 = (0);
+while(true){
+if((i_12145 < n__8769__auto___12144)){
+cljs.core._conj_BANG_(t,(items[i_12145]));
+
+var G__12146 = (i_12145 + (1));
+i_12145 = G__12146;
+continue;
+} else {
+}
+break;
+}
+
+return cljs.core._persistent_BANG_(t);
+});
+var G__12147_12150 = cljs.core.PersistentHashSet.prototype;
+var G__12148_12151 = cljs.core.ITER_SYMBOL;
+var G__12149_12152 = ((function (G__12147_12150,G__12148_12151){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__12147_12150,G__12148_12151))
+;
+goog.object.set(G__12147_12150,G__12148_12151,G__12149_12152);
+
+/**
+* @constructor
+ * @implements {cljs.core.ITransientSet}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ITransientCollection}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.TransientHashSet = (function (transient_map){
+this.transient_map = transient_map;
+this.cljs$lang$protocol_mask$partition1$ = 136;
+this.cljs$lang$protocol_mask$partition0$ = 259;
+});
+cljs.core.TransientHashSet.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = (function (tcoll,o){
+var self__ = this;
+var tcoll__$1 = this;
+self__.transient_map = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(self__.transient_map,o,null);
+
+return tcoll__$1;
+});
+
+cljs.core.TransientHashSet.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = (function (tcoll){
+var self__ = this;
+var tcoll__$1 = this;
+return (new cljs.core.PersistentHashSet(null,cljs.core.persistent_BANG_(self__.transient_map),null));
+});
+
+cljs.core.TransientHashSet.prototype.cljs$core$ITransientSet$_disjoin_BANG_$arity$2 = (function (tcoll,v){
+var self__ = this;
+var tcoll__$1 = this;
+self__.transient_map = cljs.core.dissoc_BANG_.cljs$core$IFn$_invoke$arity$2(self__.transient_map,v);
+
+return tcoll__$1;
+});
+
+cljs.core.TransientHashSet.prototype.cljs$core$ICounted$_count$arity$1 = (function (tcoll){
+var self__ = this;
+var tcoll__$1 = this;
+return cljs.core.count(self__.transient_map);
+});
+
+cljs.core.TransientHashSet.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (tcoll,v){
+var self__ = this;
+var tcoll__$1 = this;
+return tcoll__$1.cljs$core$ILookup$_lookup$arity$3(null,v,null);
+});
+
+cljs.core.TransientHashSet.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (tcoll,v,not_found){
+var self__ = this;
+var tcoll__$1 = this;
+if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,v,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
+return not_found;
+} else {
+return v;
+}
+});
+
+cljs.core.TransientHashSet.prototype.call = (function() {
+var G__12154 = null;
+var G__12154__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var tcoll = self____$1;
+if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
+return null;
+} else {
+return k;
+}
+});
+var G__12154__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var tcoll = self____$1;
+if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
+return not_found;
+} else {
+return k;
+}
+});
+G__12154 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__12154__2.call(this,self__,k);
+case 3:
+return G__12154__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__12154.cljs$core$IFn$_invoke$arity$2 = G__12154__2;
+G__12154.cljs$core$IFn$_invoke$arity$3 = G__12154__3;
+return G__12154;
+})()
+;
+
+cljs.core.TransientHashSet.prototype.apply = (function (self__,args12153){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12153)));
+});
+
+cljs.core.TransientHashSet.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var tcoll = this;
+if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
+return null;
+} else {
+return k;
+}
+});
+
+cljs.core.TransientHashSet.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var tcoll = this;
+if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
+return not_found;
+} else {
+return k;
+}
+});
+
+cljs.core.TransientHashSet.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"transient-map","transient-map",351764893,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.TransientHashSet.cljs$lang$type = true;
+
+cljs.core.TransientHashSet.cljs$lang$ctorStr = "cljs.core/TransientHashSet";
+
+cljs.core.TransientHashSet.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/TransientHashSet");
+});
+
+/**
+ * Positional factory function for cljs.core/TransientHashSet.
+ */
+cljs.core.__GT_TransientHashSet = (function cljs$core$__GT_TransientHashSet(transient_map){
+return (new cljs.core.TransientHashSet(transient_map));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IReversible}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.ISet}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISorted}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.PersistentTreeSet = (function (meta,tree_map,__hash){
+this.meta = meta;
+this.tree_map = tree_map;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 417730831;
+this.cljs$lang$protocol_mask$partition1$ = 8192;
+});
+cljs.core.PersistentTreeSet.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.PersistentTreeSet.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.PersistentTreeSet.prototype.keys = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.seq(coll));
+});
+
+cljs.core.PersistentTreeSet.prototype.entries = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_set_entries_iterator(cljs.core.seq(coll));
+});
+
+cljs.core.PersistentTreeSet.prototype.values = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.es6_iterator(cljs.core.seq(coll));
+});
+
+cljs.core.PersistentTreeSet.prototype.has = (function (k){
+var self__ = this;
+var coll = this;
+return cljs.core.contains_QMARK_(coll,k);
+});
+
+cljs.core.PersistentTreeSet.prototype.forEach = (function (f){
+var self__ = this;
+var coll = this;
+var seq__12158 = cljs.core.seq(coll);
+var chunk__12159 = null;
+var count__12160 = (0);
+var i__12161 = (0);
+while(true){
+if((i__12161 < count__12160)){
+var vec__12162 = chunk__12159.cljs$core$IIndexed$_nth$arity$2(null,i__12161);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12162,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12162,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__12171 = seq__12158;
+var G__12172 = chunk__12159;
+var G__12173 = count__12160;
+var G__12174 = (i__12161 + (1));
+seq__12158 = G__12171;
+chunk__12159 = G__12172;
+count__12160 = G__12173;
+i__12161 = G__12174;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__12158);
+if(temp__4657__auto__){
+var seq__12158__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__12158__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__12158__$1);
+var G__12175 = cljs.core.chunk_rest(seq__12158__$1);
+var G__12176 = c__8664__auto__;
+var G__12177 = cljs.core.count(c__8664__auto__);
+var G__12178 = (0);
+seq__12158 = G__12175;
+chunk__12159 = G__12176;
+count__12160 = G__12177;
+i__12161 = G__12178;
+continue;
+} else {
+var vec__12165 = cljs.core.first(seq__12158__$1);
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12165,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12165,(1),null);
+(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(v,k) : f.call(null,v,k));
+
+
+var G__12179 = cljs.core.next(seq__12158__$1);
+var G__12180 = null;
+var G__12181 = (0);
+var G__12182 = (0);
+seq__12158 = G__12179;
+chunk__12159 = G__12180;
+count__12160 = G__12181;
+i__12161 = G__12182;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,v){
+var self__ = this;
+var coll__$1 = this;
+return coll__$1.cljs$core$ILookup$_lookup$arity$3(null,v,null);
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,v,not_found){
+var self__ = this;
+var coll__$1 = this;
+var n = self__.tree_map.entry_at(v);
+if((!((n == null)))){
+return n.key;
+} else {
+return not_found;
+}
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return self__.meta;
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.PersistentTreeSet(self__.meta,self__.tree_map,self__.__hash));
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.count(self__.tree_map);
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+if((cljs.core.count(self__.tree_map) > (0))){
+return cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.key,cljs.core.rseq(self__.tree_map));
+} else {
+return null;
+}
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
+var self__ = this;
+var coll__$1 = this;
+var and__7791__auto__ = cljs.core.set_QMARK_(other);
+if(and__7791__auto__){
+var and__7791__auto____$1 = (cljs.core.count(coll__$1) === cljs.core.count(other));
+if(and__7791__auto____$1){
+try{return cljs.core.reduce_kv(((function (and__7791__auto____$1,and__7791__auto__,coll__$1){
+return (function (p1__12156_SHARP_,p2__12155_SHARP_){
+var or__7806__auto__ = cljs.core.contains_QMARK_(other,p2__12155_SHARP_);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return cljs.core.reduced(false);
+}
+});})(and__7791__auto____$1,and__7791__auto__,coll__$1))
+,true,self__.tree_map);
+}catch (e12170){if((e12170 instanceof Error)){
+var ex = e12170;
+return false;
+} else {
+throw e12170;
+
+}
+}} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentTreeSet(self__.meta,cljs.core._empty(self__.tree_map),(0)));
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISet$_disjoin$arity$2 = (function (coll,v){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentTreeSet(self__.meta,cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.tree_map,v),null));
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.keys(self__.tree_map);
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentTreeSet(meta__$1,self__.tree_map,self__.__hash));
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
+var self__ = this;
+var coll__$1 = this;
+return (new cljs.core.PersistentTreeSet(self__.meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.tree_map,o,null),null));
+});
+
+cljs.core.PersistentTreeSet.prototype.call = (function() {
+var G__12183 = null;
+var G__12183__2 = (function (self__,k){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+var G__12183__3 = (function (self__,k,not_found){
+var self__ = this;
+var self____$1 = this;
+var coll = self____$1;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+G__12183 = function(self__,k,not_found){
+switch(arguments.length){
+case 2:
+return G__12183__2.call(this,self__,k);
+case 3:
+return G__12183__3.call(this,self__,k,not_found);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__12183.cljs$core$IFn$_invoke$arity$2 = G__12183__2;
+G__12183.cljs$core$IFn$_invoke$arity$3 = G__12183__3;
+return G__12183;
+})()
+;
+
+cljs.core.PersistentTreeSet.prototype.apply = (function (self__,args12157){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12157)));
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
+var self__ = this;
+var coll = this;
+return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_sorted_seq$arity$2 = (function (coll,ascending_QMARK_){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.key,cljs.core._sorted_seq(self__.tree_map,ascending_QMARK_));
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_sorted_seq_from$arity$3 = (function (coll,k,ascending_QMARK_){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.key,cljs.core._sorted_seq_from(self__.tree_map,k,ascending_QMARK_));
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_entry_key$arity$2 = (function (coll,entry){
+var self__ = this;
+var coll__$1 = this;
+return entry;
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_comparator$arity$1 = (function (coll){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._comparator(self__.tree_map);
+});
+
+cljs.core.PersistentTreeSet.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"tree-map","tree-map",1373073049,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.PersistentTreeSet.cljs$lang$type = true;
+
+cljs.core.PersistentTreeSet.cljs$lang$ctorStr = "cljs.core/PersistentTreeSet";
+
+cljs.core.PersistentTreeSet.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/PersistentTreeSet");
+});
+
+/**
+ * Positional factory function for cljs.core/PersistentTreeSet.
+ */
+cljs.core.__GT_PersistentTreeSet = (function cljs$core$__GT_PersistentTreeSet(meta,tree_map,__hash){
+return (new cljs.core.PersistentTreeSet(meta,tree_map,__hash));
+});
+
+cljs.core.PersistentTreeSet.EMPTY = (new cljs.core.PersistentTreeSet(null,cljs.core.PersistentTreeMap.EMPTY,cljs.core.empty_unordered_hash));
+var G__12184_12187 = cljs.core.PersistentTreeSet.prototype;
+var G__12185_12188 = cljs.core.ITER_SYMBOL;
+var G__12186_12189 = ((function (G__12184_12187,G__12185_12188){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__12184_12187,G__12185_12188))
+;
+goog.object.set(G__12184_12187,G__12185_12188,G__12186_12189);
+cljs.core.set_from_indexed_seq = (function cljs$core$set_from_indexed_seq(iseq){
+var arr = iseq.arr;
+var ret = (function (){var a__8762__auto__ = arr;
+var l__8763__auto__ = a__8762__auto__.length;
+var i = (0);
+var res = cljs.core._as_transient(cljs.core.PersistentHashSet.EMPTY);
+while(true){
+if((i < l__8763__auto__)){
+var G__12190 = (i + (1));
+var G__12191 = res.cljs$core$ITransientCollection$_conj_BANG_$arity$2(null,(arr[i]));
+i = G__12190;
+res = G__12191;
+continue;
+} else {
+return res;
+}
+break;
+}
+})();
+return ret.cljs$core$ITransientCollection$_persistent_BANG_$arity$1(null);
+});
+/**
+ * Returns a set of the distinct elements of coll.
+ */
+cljs.core.set = (function cljs$core$set(coll){
+if(cljs.core.set_QMARK_(coll)){
+return cljs.core.with_meta(coll,null);
+} else {
+var in$ = cljs.core.seq(coll);
+if((in$ == null)){
+return cljs.core.PersistentHashSet.EMPTY;
+} else {
+if((((in$ instanceof cljs.core.IndexedSeq)) && ((in$.i === (0))))){
+return cljs.core.PersistentHashSet.createAsIfByAssoc(in$.arr);
+} else {
+var in$__$1 = in$;
+var out = cljs.core._as_transient(cljs.core.PersistentHashSet.EMPTY);
+while(true){
+if((!((in$__$1 == null)))){
+var G__12192 = cljs.core.next(in$__$1);
+var G__12193 = out.cljs$core$ITransientCollection$_conj_BANG_$arity$2(null,in$__$1.cljs$core$ISeq$_first$arity$1(null));
+in$__$1 = G__12192;
+out = G__12193;
+continue;
+} else {
+return cljs.core.persistent_BANG_(out);
+}
+break;
+}
+
+}
+}
+}
+});
+/**
+ * Returns a new hash set with supplied keys. Any equal keys are
+ * handled as if by repeated uses of conj.
+ */
+cljs.core.hash_set = (function cljs$core$hash_set(var_args){
+var G__12196 = arguments.length;
+switch (G__12196) {
+case 0:
+return cljs.core.hash_set.cljs$core$IFn$_invoke$arity$0();
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___12198 = arguments.length;
+var i__9001__auto___12199 = (0);
+while(true){
+if((i__9001__auto___12199 < len__9000__auto___12198)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___12199]));
+
+var G__12200 = (i__9001__auto___12199 + (1));
+i__9001__auto___12199 = G__12200;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((0)),(0),null));
+return cljs.core.hash_set.cljs$core$IFn$_invoke$arity$variadic(argseq__9026__auto__);
+
+}
+});
+
+cljs.core.hash_set.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.PersistentHashSet.EMPTY;
+});
+
+cljs.core.hash_set.cljs$core$IFn$_invoke$arity$variadic = (function (keys){
+return cljs.core.set(keys);
+});
+
+/** @this {Function} */
+cljs.core.hash_set.cljs$lang$applyTo = (function (seq12195){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12195));
+});
+
+cljs.core.hash_set.cljs$lang$maxFixedArity = (0);
+
+/**
+ * Returns a new sorted set with supplied keys.
+ */
+cljs.core.sorted_set = (function cljs$core$sorted_set(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12202 = arguments.length;
+var i__9001__auto___12203 = (0);
+while(true){
+if((i__9001__auto___12203 < len__9000__auto___12202)){
+args__9010__auto__.push((arguments[i__9001__auto___12203]));
+
+var G__12204 = (i__9001__auto___12203 + (1));
+i__9001__auto___12203 = G__12204;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.sorted_set.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.sorted_set.cljs$core$IFn$_invoke$arity$variadic = (function (keys){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,cljs.core.PersistentTreeSet.EMPTY,keys);
+});
+
+cljs.core.sorted_set.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.sorted_set.cljs$lang$applyTo = (function (seq12201){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12201));
+});
+
+/**
+ * Returns a new sorted set with supplied keys, using the supplied comparator.
+ */
+cljs.core.sorted_set_by = (function cljs$core$sorted_set_by(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12207 = arguments.length;
+var i__9001__auto___12208 = (0);
+while(true){
+if((i__9001__auto___12208 < len__9000__auto___12207)){
+args__9010__auto__.push((arguments[i__9001__auto___12208]));
+
+var G__12209 = (i__9001__auto___12208 + (1));
+i__9001__auto___12208 = G__12209;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((1) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((1)),(0),null)):null);
+return cljs.core.sorted_set_by.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9011__auto__);
+});
+
+cljs.core.sorted_set_by.cljs$core$IFn$_invoke$arity$variadic = (function (comparator,keys){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,(new cljs.core.PersistentTreeSet(null,cljs.core.sorted_map_by(comparator),(0))),keys);
+});
+
+cljs.core.sorted_set_by.cljs$lang$maxFixedArity = (1);
+
+/** @this {Function} */
+cljs.core.sorted_set_by.cljs$lang$applyTo = (function (seq12205){
+var G__12206 = cljs.core.first(seq12205);
+var seq12205__$1 = cljs.core.next(seq12205);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12206,seq12205__$1);
+});
+
+/**
+ * Given a map of replacement pairs and a vector/collection, returns a
+ * vector/seq with any elements = a key in smap replaced with the
+ * corresponding val in smap. Returns a transducer when no collection
+ * is provided.
+ */
+cljs.core.replace = (function cljs$core$replace(var_args){
+var G__12213 = arguments.length;
+switch (G__12213) {
+case 1:
+return cljs.core.replace.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.replace.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.replace.cljs$core$IFn$_invoke$arity$1 = (function (smap){
+return cljs.core.map.cljs$core$IFn$_invoke$arity$1((function (p1__12210_SHARP_){
+var temp__4655__auto__ = cljs.core.find(smap,p1__12210_SHARP_);
+if(cljs.core.truth_(temp__4655__auto__)){
+var e = temp__4655__auto__;
+return cljs.core.val(e);
+} else {
+return p1__12210_SHARP_;
+}
+}));
+});
+
+cljs.core.replace.cljs$core$IFn$_invoke$arity$2 = (function (smap,coll){
+if(cljs.core.vector_QMARK_(coll)){
+var n = cljs.core.count(coll);
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (n){
+return (function (v,i){
+var temp__4655__auto__ = cljs.core.find(smap,cljs.core.nth.cljs$core$IFn$_invoke$arity$2(v,i));
+if(cljs.core.truth_(temp__4655__auto__)){
+var e = temp__4655__auto__;
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(v,i,cljs.core.second(e));
+} else {
+return v;
+}
+});})(n))
+,coll,cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,cljs.core.iterate(cljs.core.inc,(0))));
+} else {
+return cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__12211_SHARP_){
+var temp__4655__auto__ = cljs.core.find(smap,p1__12211_SHARP_);
+if(cljs.core.truth_(temp__4655__auto__)){
+var e = temp__4655__auto__;
+return cljs.core.second(e);
+} else {
+return p1__12211_SHARP_;
+}
+}),coll);
+}
+});
+
+cljs.core.replace.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a lazy sequence of the elements of coll with duplicates removed.
+ * Returns a stateful transducer when no collection is provided.
+ */
+cljs.core.distinct = (function cljs$core$distinct(var_args){
+var G__12216 = arguments.length;
+switch (G__12216) {
+case 0:
+return cljs.core.distinct.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.distinct.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.distinct.cljs$core$IFn$_invoke$arity$0 = (function (){
+return (function (rf){
+var seen = cljs.core.volatile_BANG_(cljs.core.PersistentHashSet.EMPTY);
+return ((function (seen){
+return (function() {
+var G__12227 = null;
+var G__12227__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__12227__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__12227__2 = (function (result,input){
+if(cljs.core.contains_QMARK_(cljs.core.deref(seen),input)){
+return result;
+} else {
+seen.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(seen.cljs$core$IDeref$_deref$arity$1(null),input));
+
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input));
+}
+});
+G__12227 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__12227__0.call(this);
+case 1:
+return G__12227__1.call(this,result);
+case 2:
+return G__12227__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12227.cljs$core$IFn$_invoke$arity$0 = G__12227__0;
+G__12227.cljs$core$IFn$_invoke$arity$1 = G__12227__1;
+G__12227.cljs$core$IFn$_invoke$arity$2 = G__12227__2;
+return G__12227;
+})()
+;})(seen))
+});
+});
+
+cljs.core.distinct.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+var step = (function cljs$core$step(xs,seen){
+return (new cljs.core.LazySeq(null,(function (){
+var fexpr__12221 = (function (p__12222,seen__$1){
+while(true){
+var vec__12223 = p__12222;
+var f = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12223,(0),null);
+var xs__$1 = vec__12223;
+var temp__4657__auto__ = cljs.core.seq(xs__$1);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+if(cljs.core.contains_QMARK_(seen__$1,f)){
+var G__12228 = cljs.core.rest(s);
+var G__12229 = seen__$1;
+p__12222 = G__12228;
+seen__$1 = G__12229;
+continue;
+} else {
+return cljs.core.cons(f,cljs$core$step(cljs.core.rest(s),cljs.core.conj.cljs$core$IFn$_invoke$arity$2(seen__$1,f)));
+}
+} else {
+return null;
+}
+break;
+}
+});
+return fexpr__12221(xs,seen);
+}),null,null));
+});
+return step(coll,cljs.core.PersistentHashSet.EMPTY);
+});
+
+cljs.core.distinct.cljs$lang$maxFixedArity = 1;
+
+/**
+ * Return a seq of all but the last item in coll, in linear time
+ */
+cljs.core.butlast = (function cljs$core$butlast(s){
+var ret = cljs.core.PersistentVector.EMPTY;
+var s__$1 = s;
+while(true){
+if(cljs.core.next(s__$1)){
+var G__12230 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(ret,cljs.core.first(s__$1));
+var G__12231 = cljs.core.next(s__$1);
+ret = G__12230;
+s__$1 = G__12231;
+continue;
+} else {
+return cljs.core.seq(ret);
+}
+break;
+}
+});
+/**
+ * Returns the name String of a string, symbol or keyword.
+ */
+cljs.core.name = (function cljs$core$name(x){
+if((((!((x == null))))?(((((x.cljs$lang$protocol_mask$partition1$ & (4096))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$INamed$))))?true:false):false)){
+return x.cljs$core$INamed$_name$arity$1(null);
+} else {
+if(typeof x === 'string'){
+return x;
+} else {
+throw (new Error(["Doesn't support name: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x)].join('')));
+}
+}
+});
+/**
+ * Returns a map with the keys mapped to the corresponding vals.
+ */
+cljs.core.zipmap = (function cljs$core$zipmap(keys,vals){
+var map = cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY);
+var ks = cljs.core.seq(keys);
+var vs = cljs.core.seq(vals);
+while(true){
+if(((ks) && (vs))){
+var G__12233 = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(map,cljs.core.first(ks),cljs.core.first(vs));
+var G__12234 = cljs.core.next(ks);
+var G__12235 = cljs.core.next(vs);
+map = G__12233;
+ks = G__12234;
+vs = G__12235;
+continue;
+} else {
+return cljs.core.persistent_BANG_(map);
+}
+break;
+}
+});
+/**
+ * Returns the x for which (k x), a number, is greatest.
+ *
+ * If there are multiple such xs, the last one is returned.
+ */
+cljs.core.max_key = (function cljs$core$max_key(var_args){
+var G__12243 = arguments.length;
+switch (G__12243) {
+case 2:
+return cljs.core.max_key.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.max_key.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___12245 = arguments.length;
+var i__9001__auto___12246 = (0);
+while(true){
+if((i__9001__auto___12246 < len__9000__auto___12245)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___12246]));
+
+var G__12247 = (i__9001__auto___12246 + (1));
+i__9001__auto___12246 = G__12247;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.max_key.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.max_key.cljs$core$IFn$_invoke$arity$2 = (function (k,x){
+return x;
+});
+
+cljs.core.max_key.cljs$core$IFn$_invoke$arity$3 = (function (k,x,y){
+if(((k.cljs$core$IFn$_invoke$arity$1 ? k.cljs$core$IFn$_invoke$arity$1(x) : k.call(null,x)) > (k.cljs$core$IFn$_invoke$arity$1 ? k.cljs$core$IFn$_invoke$arity$1(y) : k.call(null,y)))){
+return x;
+} else {
+return y;
+}
+});
+
+cljs.core.max_key.cljs$core$IFn$_invoke$arity$variadic = (function (k,x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p1__12236_SHARP_,p2__12237_SHARP_){
+return cljs.core.max_key.cljs$core$IFn$_invoke$arity$3(k,p1__12236_SHARP_,p2__12237_SHARP_);
+}),cljs.core.max_key.cljs$core$IFn$_invoke$arity$3(k,x,y),more);
+});
+
+/** @this {Function} */
+cljs.core.max_key.cljs$lang$applyTo = (function (seq12239){
+var G__12240 = cljs.core.first(seq12239);
+var seq12239__$1 = cljs.core.next(seq12239);
+var G__12241 = cljs.core.first(seq12239__$1);
+var seq12239__$2 = cljs.core.next(seq12239__$1);
+var G__12242 = cljs.core.first(seq12239__$2);
+var seq12239__$3 = cljs.core.next(seq12239__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12240,G__12241,G__12242,seq12239__$3);
+});
+
+cljs.core.max_key.cljs$lang$maxFixedArity = (3);
+
+/**
+ * Returns the x for which (k x), a number, is least.
+ *
+ * If there are multiple such xs, the last one is returned.
+ */
+cljs.core.min_key = (function cljs$core$min_key(var_args){
+var G__12255 = arguments.length;
+switch (G__12255) {
+case 2:
+return cljs.core.min_key.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.min_key.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___12257 = arguments.length;
+var i__9001__auto___12258 = (0);
+while(true){
+if((i__9001__auto___12258 < len__9000__auto___12257)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___12258]));
+
+var G__12259 = (i__9001__auto___12258 + (1));
+i__9001__auto___12258 = G__12259;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.min_key.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.min_key.cljs$core$IFn$_invoke$arity$2 = (function (k,x){
+return x;
+});
+
+cljs.core.min_key.cljs$core$IFn$_invoke$arity$3 = (function (k,x,y){
+if(((k.cljs$core$IFn$_invoke$arity$1 ? k.cljs$core$IFn$_invoke$arity$1(x) : k.call(null,x)) < (k.cljs$core$IFn$_invoke$arity$1 ? k.cljs$core$IFn$_invoke$arity$1(y) : k.call(null,y)))){
+return x;
+} else {
+return y;
+}
+});
+
+cljs.core.min_key.cljs$core$IFn$_invoke$arity$variadic = (function (k,x,y,more){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p1__12248_SHARP_,p2__12249_SHARP_){
+return cljs.core.min_key.cljs$core$IFn$_invoke$arity$3(k,p1__12248_SHARP_,p2__12249_SHARP_);
+}),cljs.core.min_key.cljs$core$IFn$_invoke$arity$3(k,x,y),more);
+});
+
+/** @this {Function} */
+cljs.core.min_key.cljs$lang$applyTo = (function (seq12251){
+var G__12252 = cljs.core.first(seq12251);
+var seq12251__$1 = cljs.core.next(seq12251);
+var G__12253 = cljs.core.first(seq12251__$1);
+var seq12251__$2 = cljs.core.next(seq12251__$1);
+var G__12254 = cljs.core.first(seq12251__$2);
+var seq12251__$3 = cljs.core.next(seq12251__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12252,G__12253,G__12254,seq12251__$3);
+});
+
+cljs.core.min_key.cljs$lang$maxFixedArity = (3);
+
+
+/**
+* @constructor
+*/
+cljs.core.ArrayList = (function (arr){
+this.arr = arr;
+});
+cljs.core.ArrayList.prototype.add = (function (x){
+var self__ = this;
+var _ = this;
+return self__.arr.push(x);
+});
+
+cljs.core.ArrayList.prototype.size = (function (){
+var self__ = this;
+var _ = this;
+return self__.arr.length;
+});
+
+cljs.core.ArrayList.prototype.clear = (function (){
+var self__ = this;
+var _ = this;
+return self__.arr = [];
+});
+
+cljs.core.ArrayList.prototype.isEmpty = (function (){
+var self__ = this;
+var _ = this;
+return (self__.arr.length === (0));
+});
+
+cljs.core.ArrayList.prototype.toArray = (function (){
+var self__ = this;
+var _ = this;
+return self__.arr;
+});
+
+cljs.core.ArrayList.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"arr","arr",2115492975,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.ArrayList.cljs$lang$type = true;
+
+cljs.core.ArrayList.cljs$lang$ctorStr = "cljs.core/ArrayList";
+
+cljs.core.ArrayList.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/ArrayList");
+});
+
+/**
+ * Positional factory function for cljs.core/ArrayList.
+ */
+cljs.core.__GT_ArrayList = (function cljs$core$__GT_ArrayList(arr){
+return (new cljs.core.ArrayList(arr));
+});
+
+cljs.core.array_list = (function cljs$core$array_list(){
+return (new cljs.core.ArrayList([]));
+});
+/**
+ * Returns a lazy sequence of lists like partition, but may include
+ * partitions with fewer than n items at the end. Returns a stateful
+ * transducer when no collection is provided.
+ */
+cljs.core.partition_all = (function cljs$core$partition_all(var_args){
+var G__12261 = arguments.length;
+switch (G__12261) {
+case 1:
+return cljs.core.partition_all.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.partition_all.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.partition_all.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.partition_all.cljs$core$IFn$_invoke$arity$1 = (function (n){
+return (function (rf){
+var a = cljs.core.array_list();
+return ((function (a){
+return (function() {
+var G__12263 = null;
+var G__12263__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__12263__1 = (function (result){
+var result__$1 = (cljs.core.truth_(a.isEmpty())?result:(function (){var v = cljs.core.vec(a.toArray());
+a.clear();
+
+return cljs.core.unreduced((rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,v) : rf.call(null,result,v)));
+})());
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result__$1) : rf.call(null,result__$1));
+});
+var G__12263__2 = (function (result,input){
+a.add(input);
+
+if((n === a.size())){
+var v = cljs.core.vec(a.toArray());
+a.clear();
+
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,v) : rf.call(null,result,v));
+} else {
+return result;
+}
+});
+G__12263 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__12263__0.call(this);
+case 1:
+return G__12263__1.call(this,result);
+case 2:
+return G__12263__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12263.cljs$core$IFn$_invoke$arity$0 = G__12263__0;
+G__12263.cljs$core$IFn$_invoke$arity$1 = G__12263__1;
+G__12263.cljs$core$IFn$_invoke$arity$2 = G__12263__2;
+return G__12263;
+})()
+;})(a))
+});
+});
+
+cljs.core.partition_all.cljs$core$IFn$_invoke$arity$2 = (function (n,coll){
+return cljs.core.partition_all.cljs$core$IFn$_invoke$arity$3(n,n,coll);
+});
+
+cljs.core.partition_all.cljs$core$IFn$_invoke$arity$3 = (function (n,step,coll){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+return cljs.core.cons(cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,s),cljs.core.partition_all.cljs$core$IFn$_invoke$arity$3(n,step,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(step,s)));
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.partition_all.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Returns a lazy sequence of successive items from coll while
+ * (pred item) returns logical true. pred must be free of side-effects.
+ * Returns a transducer when no collection is provided.
+ */
+cljs.core.take_while = (function cljs$core$take_while(var_args){
+var G__12265 = arguments.length;
+switch (G__12265) {
+case 1:
+return cljs.core.take_while.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.take_while.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.take_while.cljs$core$IFn$_invoke$arity$1 = (function (pred){
+return (function (rf){
+return (function() {
+var G__12268 = null;
+var G__12268__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__12268__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__12268__2 = (function (result,input){
+if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(input) : pred.call(null,input)))){
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input));
+} else {
+return cljs.core.reduced(result);
+}
+});
+G__12268 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__12268__0.call(this);
+case 1:
+return G__12268__1.call(this,result);
+case 2:
+return G__12268__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12268.cljs$core$IFn$_invoke$arity$0 = G__12268__0;
+G__12268.cljs$core$IFn$_invoke$arity$1 = G__12268__1;
+G__12268.cljs$core$IFn$_invoke$arity$2 = G__12268__2;
+return G__12268;
+})()
+});
+});
+
+cljs.core.take_while.cljs$core$IFn$_invoke$arity$2 = (function (pred,coll){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+if(cljs.core.truth_((function (){var G__12266 = cljs.core.first(s);
+return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__12266) : pred.call(null,G__12266));
+})())){
+return cljs.core.cons(cljs.core.first(s),cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(pred,cljs.core.rest(s)));
+} else {
+return null;
+}
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.take_while.cljs$lang$maxFixedArity = 2;
+
+cljs.core.mk_bound_fn = (function cljs$core$mk_bound_fn(sc,test,key){
+return (function (e){
+var comp = cljs.core._comparator(sc);
+var G__12269 = (function (){var G__12271 = cljs.core._entry_key(sc,e);
+var G__12272 = key;
+return (comp.cljs$core$IFn$_invoke$arity$2 ? comp.cljs$core$IFn$_invoke$arity$2(G__12271,G__12272) : comp.call(null,G__12271,G__12272));
+})();
+var G__12270 = (0);
+return (test.cljs$core$IFn$_invoke$arity$2 ? test.cljs$core$IFn$_invoke$arity$2(G__12269,G__12270) : test.call(null,G__12269,G__12270));
+});
+});
+/**
+ * sc must be a sorted collection, test(s) one of <, <=, > or
+ * >=. Returns a seq of those entries with keys ek for
+ * which (test (.. sc comparator (compare ek key)) 0) is true
+ */
+cljs.core.subseq = (function cljs$core$subseq(var_args){
+var G__12274 = arguments.length;
+switch (G__12274) {
+case 3:
+return cljs.core.subseq.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 5:
+return cljs.core.subseq.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.subseq.cljs$core$IFn$_invoke$arity$3 = (function (sc,test,key){
+var include = cljs.core.mk_bound_fn(sc,test,key);
+if(cljs.core.truth_((function (){var fexpr__12275 = cljs.core.PersistentHashSet.createAsIfByAssoc([cljs.core._GT_,cljs.core._GT__EQ_]);
+return (fexpr__12275.cljs$core$IFn$_invoke$arity$1 ? fexpr__12275.cljs$core$IFn$_invoke$arity$1(test) : fexpr__12275.call(null,test));
+})())){
+var temp__4657__auto__ = cljs.core._sorted_seq_from(sc,key,true);
+if(cljs.core.truth_(temp__4657__auto__)){
+var vec__12276 = temp__4657__auto__;
+var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12276,(0),null);
+var s = vec__12276;
+if(cljs.core.truth_((include.cljs$core$IFn$_invoke$arity$1 ? include.cljs$core$IFn$_invoke$arity$1(e) : include.call(null,e)))){
+return s;
+} else {
+return cljs.core.next(s);
+}
+} else {
+return null;
+}
+} else {
+return cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(include,cljs.core._sorted_seq(sc,true));
+}
+});
+
+cljs.core.subseq.cljs$core$IFn$_invoke$arity$5 = (function (sc,start_test,start_key,end_test,end_key){
+var temp__4657__auto__ = cljs.core._sorted_seq_from(sc,start_key,true);
+if(cljs.core.truth_(temp__4657__auto__)){
+var vec__12279 = temp__4657__auto__;
+var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12279,(0),null);
+var s = vec__12279;
+return cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(cljs.core.mk_bound_fn(sc,end_test,end_key),(cljs.core.truth_((function (){var fexpr__12282 = cljs.core.mk_bound_fn(sc,start_test,start_key);
+return (fexpr__12282.cljs$core$IFn$_invoke$arity$1 ? fexpr__12282.cljs$core$IFn$_invoke$arity$1(e) : fexpr__12282.call(null,e));
+})())?s:cljs.core.next(s)));
+} else {
+return null;
+}
+});
+
+cljs.core.subseq.cljs$lang$maxFixedArity = 5;
+
+/**
+ * sc must be a sorted collection, test(s) one of <, <=, > or
+ * >=. Returns a reverse seq of those entries with keys ek for
+ * which (test (.. sc comparator (compare ek key)) 0) is true
+ */
+cljs.core.rsubseq = (function cljs$core$rsubseq(var_args){
+var G__12285 = arguments.length;
+switch (G__12285) {
+case 3:
+return cljs.core.rsubseq.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+case 5:
+return cljs.core.rsubseq.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.rsubseq.cljs$core$IFn$_invoke$arity$3 = (function (sc,test,key){
+var include = cljs.core.mk_bound_fn(sc,test,key);
+if(cljs.core.truth_((function (){var fexpr__12286 = cljs.core.PersistentHashSet.createAsIfByAssoc([cljs.core._LT_,cljs.core._LT__EQ_]);
+return (fexpr__12286.cljs$core$IFn$_invoke$arity$1 ? fexpr__12286.cljs$core$IFn$_invoke$arity$1(test) : fexpr__12286.call(null,test));
+})())){
+var temp__4657__auto__ = cljs.core._sorted_seq_from(sc,key,false);
+if(cljs.core.truth_(temp__4657__auto__)){
+var vec__12287 = temp__4657__auto__;
+var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12287,(0),null);
+var s = vec__12287;
+if(cljs.core.truth_((include.cljs$core$IFn$_invoke$arity$1 ? include.cljs$core$IFn$_invoke$arity$1(e) : include.call(null,e)))){
+return s;
+} else {
+return cljs.core.next(s);
+}
+} else {
+return null;
+}
+} else {
+return cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(include,cljs.core._sorted_seq(sc,false));
+}
+});
+
+cljs.core.rsubseq.cljs$core$IFn$_invoke$arity$5 = (function (sc,start_test,start_key,end_test,end_key){
+var temp__4657__auto__ = cljs.core._sorted_seq_from(sc,end_key,false);
+if(cljs.core.truth_(temp__4657__auto__)){
+var vec__12290 = temp__4657__auto__;
+var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12290,(0),null);
+var s = vec__12290;
+return cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(cljs.core.mk_bound_fn(sc,start_test,start_key),(cljs.core.truth_((function (){var fexpr__12293 = cljs.core.mk_bound_fn(sc,end_test,end_key);
+return (fexpr__12293.cljs$core$IFn$_invoke$arity$1 ? fexpr__12293.cljs$core$IFn$_invoke$arity$1(e) : fexpr__12293.call(null,e));
+})())?s:cljs.core.next(s)));
+} else {
+return null;
+}
+});
+
+cljs.core.rsubseq.cljs$lang$maxFixedArity = 5;
+
+
+/**
+* @constructor
+*/
+cljs.core.RangeIterator = (function (i,end,step){
+this.i = i;
+this.end = end;
+this.step = step;
+});
+cljs.core.RangeIterator.prototype.hasNext = (function (){
+var self__ = this;
+var _ = this;
+if((self__.step > (0))){
+return (self__.i < self__.end);
+} else {
+return (self__.i > self__.end);
+}
+});
+
+cljs.core.RangeIterator.prototype.next = (function (){
+var self__ = this;
+var _ = this;
+var ret = self__.i;
+self__.i = (self__.i + self__.step);
+
+return ret;
+});
+
+cljs.core.RangeIterator.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"i","i",253690212,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"end","end",1372345569,null),new cljs.core.Symbol(null,"step","step",-1365547645,null)], null);
+});
+
+cljs.core.RangeIterator.cljs$lang$type = true;
+
+cljs.core.RangeIterator.cljs$lang$ctorStr = "cljs.core/RangeIterator";
+
+cljs.core.RangeIterator.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/RangeIterator");
+});
+
+/**
+ * Positional factory function for cljs.core/RangeIterator.
+ */
+cljs.core.__GT_RangeIterator = (function cljs$core$__GT_RangeIterator(i,end,step){
+return (new cljs.core.RangeIterator(i,end,step));
+});
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IIndexed}
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.ICollection}
+ * @implements {cljs.core.IEmptyableCollection}
+ * @implements {cljs.core.ICounted}
+ * @implements {cljs.core.ISeq}
+ * @implements {cljs.core.INext}
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IMeta}
+ * @implements {cljs.core.ICloneable}
+ * @implements {cljs.core.IIterable}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IWithMeta}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.Range = (function (meta,start,end,step,__hash){
+this.meta = meta;
+this.start = start;
+this.end = end;
+this.step = step;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 32375006;
+this.cljs$lang$protocol_mask$partition1$ = 139264;
+});
+cljs.core.Range.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.Range.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.Range.prototype.indexOf = (function() {
+var G__12296 = null;
+var G__12296__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,(0));
+});
+var G__12296__2 = (function (x,start__$1){
+var self__ = this;
+var coll = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start__$1);
+});
+G__12296 = function(x,start__$1){
+switch(arguments.length){
+case 1:
+return G__12296__1.call(this,x);
+case 2:
+return G__12296__2.call(this,x,start__$1);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12296.cljs$core$IFn$_invoke$arity$1 = G__12296__1;
+G__12296.cljs$core$IFn$_invoke$arity$2 = G__12296__2;
+return G__12296;
+})()
+;
+
+cljs.core.Range.prototype.lastIndexOf = (function() {
+var G__12297 = null;
+var G__12297__1 = (function (x){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,cljs.core.count(coll));
+});
+var G__12297__2 = (function (x,start__$1){
+var self__ = this;
+var coll = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll,x,start__$1);
+});
+G__12297 = function(x,start__$1){
+switch(arguments.length){
+case 1:
+return G__12297__1.call(this,x);
+case 2:
+return G__12297__2.call(this,x,start__$1);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12297.cljs$core$IFn$_invoke$arity$1 = G__12297__1;
+G__12297.cljs$core$IFn$_invoke$arity$2 = G__12297__2;
+return G__12297;
+})()
+;
+
+cljs.core.Range.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (rng,n){
+var self__ = this;
+var rng__$1 = this;
+if(((((0) <= n)) && ((n < rng__$1.cljs$core$ICounted$_count$arity$1(null))))){
+return (self__.start + (n * self__.step));
+} else {
+if(((((0) <= n)) && ((self__.start > self__.end)) && ((self__.step === (0))))){
+return self__.start;
+} else {
+throw (new Error("Index out of bounds"));
+}
+}
+});
+
+cljs.core.Range.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (rng,n,not_found){
+var self__ = this;
+var rng__$1 = this;
+if(((((0) <= n)) && ((n < rng__$1.cljs$core$ICounted$_count$arity$1(null))))){
+return (self__.start + (n * self__.step));
+} else {
+if(((((0) <= n)) && ((self__.start > self__.end)) && ((self__.step === (0))))){
+return self__.start;
+} else {
+return not_found;
+}
+}
+});
+
+cljs.core.Range.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.RangeIterator(self__.start,self__.end,self__.step));
+});
+
+cljs.core.Range.prototype.cljs$core$IMeta$_meta$arity$1 = (function (rng){
+var self__ = this;
+var rng__$1 = this;
+return self__.meta;
+});
+
+cljs.core.Range.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return (new cljs.core.Range(self__.meta,self__.start,self__.end,self__.step,self__.__hash));
+});
+
+cljs.core.Range.prototype.cljs$core$INext$_next$arity$1 = (function (rng){
+var self__ = this;
+var rng__$1 = this;
+if((self__.step > (0))){
+if(((self__.start + self__.step) < self__.end)){
+return (new cljs.core.Range(self__.meta,(self__.start + self__.step),self__.end,self__.step,null));
+} else {
+return null;
+}
+} else {
+if(((self__.start + self__.step) > self__.end)){
+return (new cljs.core.Range(self__.meta,(self__.start + self__.step),self__.end,self__.step,null));
+} else {
+return null;
+}
+}
+});
+
+cljs.core.Range.prototype.cljs$core$ICounted$_count$arity$1 = (function (rng){
+var self__ = this;
+var rng__$1 = this;
+if(cljs.core.not(rng__$1.cljs$core$ISeqable$_seq$arity$1(null))){
+return (0);
+} else {
+var G__12295 = ((self__.end - self__.start) / self__.step);
+return Math.ceil(G__12295);
+}
+});
+
+cljs.core.Range.prototype.cljs$core$IHash$_hash$arity$1 = (function (rng){
+var self__ = this;
+var rng__$1 = this;
+var h__8266__auto__ = self__.__hash;
+if((!((h__8266__auto__ == null)))){
+return h__8266__auto__;
+} else {
+var h__8266__auto____$1 = cljs.core.hash_ordered_coll(rng__$1);
+self__.__hash = h__8266__auto____$1;
+
+return h__8266__auto____$1;
+}
+});
+
+cljs.core.Range.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (rng,other){
+var self__ = this;
+var rng__$1 = this;
+return cljs.core.equiv_sequential(rng__$1,other);
+});
+
+cljs.core.Range.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (rng){
+var self__ = this;
+var rng__$1 = this;
+return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
+});
+
+cljs.core.Range.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (rng,f){
+var self__ = this;
+var rng__$1 = this;
+return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(rng__$1,f);
+});
+
+cljs.core.Range.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (rng,f,init){
+var self__ = this;
+var rng__$1 = this;
+var i = self__.start;
+var ret = init;
+while(true){
+if((((self__.step > (0)))?(i < self__.end):(i > self__.end))){
+var ret__$1 = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(ret,i) : f.call(null,ret,i));
+if(cljs.core.reduced_QMARK_(ret__$1)){
+return cljs.core.deref(ret__$1);
+} else {
+var G__12298 = (i + self__.step);
+var G__12299 = ret__$1;
+i = G__12298;
+ret = G__12299;
+continue;
+}
+} else {
+return ret;
+}
+break;
+}
+});
+
+cljs.core.Range.prototype.cljs$core$ISeq$_first$arity$1 = (function (rng){
+var self__ = this;
+var rng__$1 = this;
+if((rng__$1.cljs$core$ISeqable$_seq$arity$1(null) == null)){
+return null;
+} else {
+return self__.start;
+}
+});
+
+cljs.core.Range.prototype.cljs$core$ISeq$_rest$arity$1 = (function (rng){
+var self__ = this;
+var rng__$1 = this;
+if((!((rng__$1.cljs$core$ISeqable$_seq$arity$1(null) == null)))){
+return (new cljs.core.Range(self__.meta,(self__.start + self__.step),self__.end,self__.step,null));
+} else {
+return cljs.core.List.EMPTY;
+}
+});
+
+cljs.core.Range.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (rng){
+var self__ = this;
+var rng__$1 = this;
+if((self__.step > (0))){
+if((self__.start < self__.end)){
+return rng__$1;
+} else {
+return null;
+}
+} else {
+if((self__.step < (0))){
+if((self__.start > self__.end)){
+return rng__$1;
+} else {
+return null;
+}
+} else {
+if((self__.start === self__.end)){
+return null;
+} else {
+return rng__$1;
+}
+
+}
+}
+});
+
+cljs.core.Range.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (rng,meta__$1){
+var self__ = this;
+var rng__$1 = this;
+return (new cljs.core.Range(meta__$1,self__.start,self__.end,self__.step,self__.__hash));
+});
+
+cljs.core.Range.prototype.cljs$core$ICollection$_conj$arity$2 = (function (rng,o){
+var self__ = this;
+var rng__$1 = this;
+return cljs.core.cons(o,rng__$1);
+});
+
+cljs.core.Range.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"start","start",1285322546,null),new cljs.core.Symbol(null,"end","end",1372345569,null),new cljs.core.Symbol(null,"step","step",-1365547645,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Range.cljs$lang$type = true;
+
+cljs.core.Range.cljs$lang$ctorStr = "cljs.core/Range";
+
+cljs.core.Range.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Range");
+});
+
+/**
+ * Positional factory function for cljs.core/Range.
+ */
+cljs.core.__GT_Range = (function cljs$core$__GT_Range(meta,start,end,step,__hash){
+return (new cljs.core.Range(meta,start,end,step,__hash));
+});
+
+var G__12300_12303 = cljs.core.Range.prototype;
+var G__12301_12304 = cljs.core.ITER_SYMBOL;
+var G__12302_12305 = ((function (G__12300_12303,G__12301_12304){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__12300_12303,G__12301_12304))
+;
+goog.object.set(G__12300_12303,G__12301_12304,G__12302_12305);
+/**
+ * Returns a lazy seq of nums from start (inclusive) to end
+ * (exclusive), by step, where start defaults to 0, step to 1,
+ * and end to infinity.
+ */
+cljs.core.range = (function cljs$core$range(var_args){
+var G__12307 = arguments.length;
+switch (G__12307) {
+case 0:
+return cljs.core.range.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.range.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.range.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.range.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.range.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.range.cljs$core$IFn$_invoke$arity$3((0),Number.MAX_VALUE,(1));
+});
+
+cljs.core.range.cljs$core$IFn$_invoke$arity$1 = (function (end){
+return cljs.core.range.cljs$core$IFn$_invoke$arity$3((0),end,(1));
+});
+
+cljs.core.range.cljs$core$IFn$_invoke$arity$2 = (function (start,end){
+return cljs.core.range.cljs$core$IFn$_invoke$arity$3(start,end,(1));
+});
+
+cljs.core.range.cljs$core$IFn$_invoke$arity$3 = (function (start,end,step){
+return (new cljs.core.Range(null,start,end,step,null));
+});
+
+cljs.core.range.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Returns a lazy seq of every nth item in coll. Returns a stateful
+ * transducer when no collection is provided.
+ */
+cljs.core.take_nth = (function cljs$core$take_nth(var_args){
+var G__12310 = arguments.length;
+switch (G__12310) {
+case 1:
+return cljs.core.take_nth.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.take_nth.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.take_nth.cljs$core$IFn$_invoke$arity$1 = (function (n){
+if(typeof n === 'number'){
+} else {
+throw (new Error("Assert failed: (number? n)"));
+}
+
+return (function (rf){
+var ia = cljs.core.volatile_BANG_((-1));
+return ((function (ia){
+return (function() {
+var G__12312 = null;
+var G__12312__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__12312__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__12312__2 = (function (result,input){
+var i = ia.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,(ia.cljs$core$IDeref$_deref$arity$1(null) + (1)));
+if((cljs.core.rem(i,n) === (0))){
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input));
+} else {
+return result;
+}
+});
+G__12312 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__12312__0.call(this);
+case 1:
+return G__12312__1.call(this,result);
+case 2:
+return G__12312__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12312.cljs$core$IFn$_invoke$arity$0 = G__12312__0;
+G__12312.cljs$core$IFn$_invoke$arity$1 = G__12312__1;
+G__12312.cljs$core$IFn$_invoke$arity$2 = G__12312__2;
+return G__12312;
+})()
+;})(ia))
+});
+});
+
+cljs.core.take_nth.cljs$core$IFn$_invoke$arity$2 = (function (n,coll){
+if(typeof n === 'number'){
+} else {
+throw (new Error("Assert failed: (number? n)"));
+}
+
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+return cljs.core.cons(cljs.core.first(s),cljs.core.take_nth.cljs$core$IFn$_invoke$arity$2(n,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(n,s)));
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.take_nth.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a vector of [(take-while pred coll) (drop-while pred coll)]
+ */
+cljs.core.split_with = (function cljs$core$split_with(pred,coll){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(pred,coll),cljs.core.drop_while.cljs$core$IFn$_invoke$arity$2(pred,coll)], null);
+});
+/**
+ * Applies f to each value in coll, splitting it each time f returns a
+ * new value. Returns a lazy seq of partitions. Returns a stateful
+ * transducer when no collection is provided.
+ */
+cljs.core.partition_by = (function cljs$core$partition_by(var_args){
+var G__12315 = arguments.length;
+switch (G__12315) {
+case 1:
+return cljs.core.partition_by.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.partition_by.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.partition_by.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return (function (rf){
+var a = cljs.core.array_list();
+var pa = cljs.core.volatile_BANG_(new cljs.core.Keyword("cljs.core","none","cljs.core/none",926646439));
+return ((function (a,pa){
+return (function() {
+var G__12317 = null;
+var G__12317__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__12317__1 = (function (result){
+var result__$1 = (cljs.core.truth_(a.isEmpty())?result:(function (){var v = cljs.core.vec(a.toArray());
+a.clear();
+
+return cljs.core.unreduced((rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,v) : rf.call(null,result,v)));
+})());
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result__$1) : rf.call(null,result__$1));
+});
+var G__12317__2 = (function (result,input){
+var pval = cljs.core.deref(pa);
+var val = (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(input) : f.call(null,input));
+cljs.core.vreset_BANG_(pa,val);
+
+if(((cljs.core.keyword_identical_QMARK_(pval,new cljs.core.Keyword("cljs.core","none","cljs.core/none",926646439))) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(val,pval)))){
+a.add(input);
+
+return result;
+} else {
+var v = cljs.core.vec(a.toArray());
+a.clear();
+
+var ret = (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,v) : rf.call(null,result,v));
+if(cljs.core.reduced_QMARK_(ret)){
+} else {
+a.add(input);
+}
+
+return ret;
+}
+});
+G__12317 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__12317__0.call(this);
+case 1:
+return G__12317__1.call(this,result);
+case 2:
+return G__12317__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12317.cljs$core$IFn$_invoke$arity$0 = G__12317__0;
+G__12317.cljs$core$IFn$_invoke$arity$1 = G__12317__1;
+G__12317.cljs$core$IFn$_invoke$arity$2 = G__12317__2;
+return G__12317;
+})()
+;})(a,pa))
+});
+});
+
+cljs.core.partition_by.cljs$core$IFn$_invoke$arity$2 = (function (f,coll){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+var fst = cljs.core.first(s);
+var fv = (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(fst) : f.call(null,fst));
+var run = cljs.core.cons(fst,cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(((function (fst,fv,s,temp__4657__auto__){
+return (function (p1__12313_SHARP_){
+return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(fv,(f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(p1__12313_SHARP_) : f.call(null,p1__12313_SHARP_)));
+});})(fst,fv,s,temp__4657__auto__))
+,cljs.core.next(s)));
+return cljs.core.cons(run,cljs.core.partition_by.cljs$core$IFn$_invoke$arity$2(f,(new cljs.core.LazySeq(null,((function (fst,fv,run,s,temp__4657__auto__){
+return (function (){
+return cljs.core.drop.cljs$core$IFn$_invoke$arity$2(cljs.core.count(run),s);
+});})(fst,fv,run,s,temp__4657__auto__))
+,null,null))));
+} else {
+return null;
+}
+}),null,null));
+});
+
+cljs.core.partition_by.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a map from distinct items in coll to the number of times
+ * they appear.
+ */
+cljs.core.frequencies = (function cljs$core$frequencies(coll){
+return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (counts,x){
+return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(counts,x,(cljs.core.get.cljs$core$IFn$_invoke$arity$3(counts,x,(0)) + (1)));
+}),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),coll));
+});
+/**
+ * Returns a lazy seq of the intermediate values of the reduction (as
+ * per reduce) of coll by f, starting with init.
+ */
+cljs.core.reductions = (function cljs$core$reductions(var_args){
+var G__12319 = arguments.length;
+switch (G__12319) {
+case 2:
+return cljs.core.reductions.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.reductions.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.reductions.cljs$core$IFn$_invoke$arity$2 = (function (f,coll){
+return (new cljs.core.LazySeq(null,(function (){
+var temp__4655__auto__ = cljs.core.seq(coll);
+if(temp__4655__auto__){
+var s = temp__4655__auto__;
+return cljs.core.reductions.cljs$core$IFn$_invoke$arity$3(f,cljs.core.first(s),cljs.core.rest(s));
+} else {
+return (new cljs.core.List(null,(f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null)),null,(1),null));
+}
+}),null,null));
+});
+
+cljs.core.reductions.cljs$core$IFn$_invoke$arity$3 = (function (f,init,coll){
+if(cljs.core.reduced_QMARK_(init)){
+return (new cljs.core.List(null,cljs.core.deref(init),null,(1),null));
+} else {
+return cljs.core.cons(init,(new cljs.core.LazySeq(null,(function (){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+return cljs.core.reductions.cljs$core$IFn$_invoke$arity$3(f,(function (){var G__12320 = init;
+var G__12321 = cljs.core.first(s);
+return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12320,G__12321) : f.call(null,G__12320,G__12321));
+})(),cljs.core.rest(s));
+} else {
+return null;
+}
+}),null,null)));
+}
+});
+
+cljs.core.reductions.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Takes a set of functions and returns a fn that is the juxtaposition
+ * of those fns. The returned fn takes a variable number of args, and
+ * returns a vector containing the result of applying each fn to the
+ * args (left-to-right).
+ * ((juxt a b c) x) => [(a x) (b x) (c x)]
+ */
+cljs.core.juxt = (function cljs$core$juxt(var_args){
+var G__12338 = arguments.length;
+switch (G__12338) {
+case 1:
+return cljs.core.juxt.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.juxt.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.juxt.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___12340 = arguments.length;
+var i__9001__auto___12341 = (0);
+while(true){
+if((i__9001__auto___12341 < len__9000__auto___12340)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___12341]));
+
+var G__12342 = (i__9001__auto___12341 + (1));
+i__9001__auto___12341 = G__12342;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((3)),(0),null));
+return cljs.core.juxt.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.juxt.cljs$core$IFn$_invoke$arity$1 = (function (f){
+return (function() {
+var G__12343 = null;
+var G__12343__0 = (function (){
+return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null))],null));
+});
+var G__12343__1 = (function (x){
+return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(x) : f.call(null,x))],null));
+});
+var G__12343__2 = (function (x,y){
+return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(x,y) : f.call(null,x,y))],null));
+});
+var G__12343__3 = (function (x,y,z){
+return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(x,y,z) : f.call(null,x,y,z))],null));
+});
+var G__12343__4 = (function() {
+var G__12344__delegate = function (x,y,z,args){
+return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,x,y,z,args)],null));
+};
+var G__12344 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__12345__i = 0, G__12345__a = new Array(arguments.length - 3);
+while (G__12345__i < G__12345__a.length) {G__12345__a[G__12345__i] = arguments[G__12345__i + 3]; ++G__12345__i;}
+ args = new cljs.core.IndexedSeq(G__12345__a,0,null);
+}
+return G__12344__delegate.call(this,x,y,z,args);};
+G__12344.cljs$lang$maxFixedArity = 3;
+G__12344.cljs$lang$applyTo = (function (arglist__12346){
+var x = cljs.core.first(arglist__12346);
+arglist__12346 = cljs.core.next(arglist__12346);
+var y = cljs.core.first(arglist__12346);
+arglist__12346 = cljs.core.next(arglist__12346);
+var z = cljs.core.first(arglist__12346);
+var args = cljs.core.rest(arglist__12346);
+return G__12344__delegate(x,y,z,args);
+});
+G__12344.cljs$core$IFn$_invoke$arity$variadic = G__12344__delegate;
+return G__12344;
+})()
+;
+G__12343 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return G__12343__0.call(this);
+case 1:
+return G__12343__1.call(this,x);
+case 2:
+return G__12343__2.call(this,x,y);
+case 3:
+return G__12343__3.call(this,x,y,z);
+default:
+var G__12347 = null;
+if (arguments.length > 3) {
+var G__12348__i = 0, G__12348__a = new Array(arguments.length - 3);
+while (G__12348__i < G__12348__a.length) {G__12348__a[G__12348__i] = arguments[G__12348__i + 3]; ++G__12348__i;}
+G__12347 = new cljs.core.IndexedSeq(G__12348__a,0,null);
+}
+return G__12343__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__12347);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12343.cljs$lang$maxFixedArity = 3;
+G__12343.cljs$lang$applyTo = G__12343__4.cljs$lang$applyTo;
+G__12343.cljs$core$IFn$_invoke$arity$0 = G__12343__0;
+G__12343.cljs$core$IFn$_invoke$arity$1 = G__12343__1;
+G__12343.cljs$core$IFn$_invoke$arity$2 = G__12343__2;
+G__12343.cljs$core$IFn$_invoke$arity$3 = G__12343__3;
+G__12343.cljs$core$IFn$_invoke$arity$variadic = G__12343__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__12343;
+})()
+});
+
+cljs.core.juxt.cljs$core$IFn$_invoke$arity$2 = (function (f,g){
+return (function() {
+var G__12349 = null;
+var G__12349__0 = (function (){
+return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null)),(g.cljs$core$IFn$_invoke$arity$0 ? g.cljs$core$IFn$_invoke$arity$0() : g.call(null))],null));
+});
+var G__12349__1 = (function (x){
+return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(x) : f.call(null,x)),(g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(x) : g.call(null,x))],null));
+});
+var G__12349__2 = (function (x,y){
+return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(x,y) : f.call(null,x,y)),(g.cljs$core$IFn$_invoke$arity$2 ? g.cljs$core$IFn$_invoke$arity$2(x,y) : g.call(null,x,y))],null));
+});
+var G__12349__3 = (function (x,y,z){
+return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(x,y,z) : f.call(null,x,y,z)),(g.cljs$core$IFn$_invoke$arity$3 ? g.cljs$core$IFn$_invoke$arity$3(x,y,z) : g.call(null,x,y,z))],null));
+});
+var G__12349__4 = (function() {
+var G__12350__delegate = function (x,y,z,args){
+return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,x,y,z,args),cljs.core.apply.cljs$core$IFn$_invoke$arity$5(g,x,y,z,args)],null));
+};
+var G__12350 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__12351__i = 0, G__12351__a = new Array(arguments.length - 3);
+while (G__12351__i < G__12351__a.length) {G__12351__a[G__12351__i] = arguments[G__12351__i + 3]; ++G__12351__i;}
+ args = new cljs.core.IndexedSeq(G__12351__a,0,null);
+}
+return G__12350__delegate.call(this,x,y,z,args);};
+G__12350.cljs$lang$maxFixedArity = 3;
+G__12350.cljs$lang$applyTo = (function (arglist__12352){
+var x = cljs.core.first(arglist__12352);
+arglist__12352 = cljs.core.next(arglist__12352);
+var y = cljs.core.first(arglist__12352);
+arglist__12352 = cljs.core.next(arglist__12352);
+var z = cljs.core.first(arglist__12352);
+var args = cljs.core.rest(arglist__12352);
+return G__12350__delegate(x,y,z,args);
+});
+G__12350.cljs$core$IFn$_invoke$arity$variadic = G__12350__delegate;
+return G__12350;
+})()
+;
+G__12349 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return G__12349__0.call(this);
+case 1:
+return G__12349__1.call(this,x);
+case 2:
+return G__12349__2.call(this,x,y);
+case 3:
+return G__12349__3.call(this,x,y,z);
+default:
+var G__12353 = null;
+if (arguments.length > 3) {
+var G__12354__i = 0, G__12354__a = new Array(arguments.length - 3);
+while (G__12354__i < G__12354__a.length) {G__12354__a[G__12354__i] = arguments[G__12354__i + 3]; ++G__12354__i;}
+G__12353 = new cljs.core.IndexedSeq(G__12354__a,0,null);
+}
+return G__12349__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__12353);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12349.cljs$lang$maxFixedArity = 3;
+G__12349.cljs$lang$applyTo = G__12349__4.cljs$lang$applyTo;
+G__12349.cljs$core$IFn$_invoke$arity$0 = G__12349__0;
+G__12349.cljs$core$IFn$_invoke$arity$1 = G__12349__1;
+G__12349.cljs$core$IFn$_invoke$arity$2 = G__12349__2;
+G__12349.cljs$core$IFn$_invoke$arity$3 = G__12349__3;
+G__12349.cljs$core$IFn$_invoke$arity$variadic = G__12349__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__12349;
+})()
+});
+
+cljs.core.juxt.cljs$core$IFn$_invoke$arity$3 = (function (f,g,h){
+return (function() {
+var G__12355 = null;
+var G__12355__0 = (function (){
+return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null)),(g.cljs$core$IFn$_invoke$arity$0 ? g.cljs$core$IFn$_invoke$arity$0() : g.call(null)),(h.cljs$core$IFn$_invoke$arity$0 ? h.cljs$core$IFn$_invoke$arity$0() : h.call(null))],null));
+});
+var G__12355__1 = (function (x){
+return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(x) : f.call(null,x)),(g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(x) : g.call(null,x)),(h.cljs$core$IFn$_invoke$arity$1 ? h.cljs$core$IFn$_invoke$arity$1(x) : h.call(null,x))],null));
+});
+var G__12355__2 = (function (x,y){
+return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(x,y) : f.call(null,x,y)),(g.cljs$core$IFn$_invoke$arity$2 ? g.cljs$core$IFn$_invoke$arity$2(x,y) : g.call(null,x,y)),(h.cljs$core$IFn$_invoke$arity$2 ? h.cljs$core$IFn$_invoke$arity$2(x,y) : h.call(null,x,y))],null));
+});
+var G__12355__3 = (function (x,y,z){
+return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[(f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(x,y,z) : f.call(null,x,y,z)),(g.cljs$core$IFn$_invoke$arity$3 ? g.cljs$core$IFn$_invoke$arity$3(x,y,z) : g.call(null,x,y,z)),(h.cljs$core$IFn$_invoke$arity$3 ? h.cljs$core$IFn$_invoke$arity$3(x,y,z) : h.call(null,x,y,z))],null));
+});
+var G__12355__4 = (function() {
+var G__12356__delegate = function (x,y,z,args){
+return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,x,y,z,args),cljs.core.apply.cljs$core$IFn$_invoke$arity$5(g,x,y,z,args),cljs.core.apply.cljs$core$IFn$_invoke$arity$5(h,x,y,z,args)],null));
+};
+var G__12356 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__12357__i = 0, G__12357__a = new Array(arguments.length - 3);
+while (G__12357__i < G__12357__a.length) {G__12357__a[G__12357__i] = arguments[G__12357__i + 3]; ++G__12357__i;}
+ args = new cljs.core.IndexedSeq(G__12357__a,0,null);
+}
+return G__12356__delegate.call(this,x,y,z,args);};
+G__12356.cljs$lang$maxFixedArity = 3;
+G__12356.cljs$lang$applyTo = (function (arglist__12358){
+var x = cljs.core.first(arglist__12358);
+arglist__12358 = cljs.core.next(arglist__12358);
+var y = cljs.core.first(arglist__12358);
+arglist__12358 = cljs.core.next(arglist__12358);
+var z = cljs.core.first(arglist__12358);
+var args = cljs.core.rest(arglist__12358);
+return G__12356__delegate(x,y,z,args);
+});
+G__12356.cljs$core$IFn$_invoke$arity$variadic = G__12356__delegate;
+return G__12356;
+})()
+;
+G__12355 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return G__12355__0.call(this);
+case 1:
+return G__12355__1.call(this,x);
+case 2:
+return G__12355__2.call(this,x,y);
+case 3:
+return G__12355__3.call(this,x,y,z);
+default:
+var G__12359 = null;
+if (arguments.length > 3) {
+var G__12360__i = 0, G__12360__a = new Array(arguments.length - 3);
+while (G__12360__i < G__12360__a.length) {G__12360__a[G__12360__i] = arguments[G__12360__i + 3]; ++G__12360__i;}
+G__12359 = new cljs.core.IndexedSeq(G__12360__a,0,null);
+}
+return G__12355__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__12359);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12355.cljs$lang$maxFixedArity = 3;
+G__12355.cljs$lang$applyTo = G__12355__4.cljs$lang$applyTo;
+G__12355.cljs$core$IFn$_invoke$arity$0 = G__12355__0;
+G__12355.cljs$core$IFn$_invoke$arity$1 = G__12355__1;
+G__12355.cljs$core$IFn$_invoke$arity$2 = G__12355__2;
+G__12355.cljs$core$IFn$_invoke$arity$3 = G__12355__3;
+G__12355.cljs$core$IFn$_invoke$arity$variadic = G__12355__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__12355;
+})()
+});
+
+cljs.core.juxt.cljs$core$IFn$_invoke$arity$variadic = (function (f,g,h,fs){
+var fs__$1 = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(f,g,h,fs);
+return ((function (fs__$1){
+return (function() {
+var G__12361 = null;
+var G__12361__0 = (function (){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
+return (function (p1__12323_SHARP_,p2__12324_SHARP_){
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12323_SHARP_,(p2__12324_SHARP_.cljs$core$IFn$_invoke$arity$0 ? p2__12324_SHARP_.cljs$core$IFn$_invoke$arity$0() : p2__12324_SHARP_.call(null)));
+});})(fs__$1))
+,cljs.core.PersistentVector.EMPTY,fs__$1);
+});
+var G__12361__1 = (function (x){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
+return (function (p1__12325_SHARP_,p2__12326_SHARP_){
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12325_SHARP_,(p2__12326_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p2__12326_SHARP_.cljs$core$IFn$_invoke$arity$1(x) : p2__12326_SHARP_.call(null,x)));
+});})(fs__$1))
+,cljs.core.PersistentVector.EMPTY,fs__$1);
+});
+var G__12361__2 = (function (x,y){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
+return (function (p1__12327_SHARP_,p2__12328_SHARP_){
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12327_SHARP_,(p2__12328_SHARP_.cljs$core$IFn$_invoke$arity$2 ? p2__12328_SHARP_.cljs$core$IFn$_invoke$arity$2(x,y) : p2__12328_SHARP_.call(null,x,y)));
+});})(fs__$1))
+,cljs.core.PersistentVector.EMPTY,fs__$1);
+});
+var G__12361__3 = (function (x,y,z){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
+return (function (p1__12329_SHARP_,p2__12330_SHARP_){
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12329_SHARP_,(p2__12330_SHARP_.cljs$core$IFn$_invoke$arity$3 ? p2__12330_SHARP_.cljs$core$IFn$_invoke$arity$3(x,y,z) : p2__12330_SHARP_.call(null,x,y,z)));
+});})(fs__$1))
+,cljs.core.PersistentVector.EMPTY,fs__$1);
+});
+var G__12361__4 = (function() {
+var G__12362__delegate = function (x,y,z,args){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
+return (function (p1__12331_SHARP_,p2__12332_SHARP_){
+return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12331_SHARP_,cljs.core.apply.cljs$core$IFn$_invoke$arity$5(p2__12332_SHARP_,x,y,z,args));
+});})(fs__$1))
+,cljs.core.PersistentVector.EMPTY,fs__$1);
+};
+var G__12362 = function (x,y,z,var_args){
+var args = null;
+if (arguments.length > 3) {
+var G__12363__i = 0, G__12363__a = new Array(arguments.length - 3);
+while (G__12363__i < G__12363__a.length) {G__12363__a[G__12363__i] = arguments[G__12363__i + 3]; ++G__12363__i;}
+ args = new cljs.core.IndexedSeq(G__12363__a,0,null);
+}
+return G__12362__delegate.call(this,x,y,z,args);};
+G__12362.cljs$lang$maxFixedArity = 3;
+G__12362.cljs$lang$applyTo = (function (arglist__12364){
+var x = cljs.core.first(arglist__12364);
+arglist__12364 = cljs.core.next(arglist__12364);
+var y = cljs.core.first(arglist__12364);
+arglist__12364 = cljs.core.next(arglist__12364);
+var z = cljs.core.first(arglist__12364);
+var args = cljs.core.rest(arglist__12364);
+return G__12362__delegate(x,y,z,args);
+});
+G__12362.cljs$core$IFn$_invoke$arity$variadic = G__12362__delegate;
+return G__12362;
+})()
+;
+G__12361 = function(x,y,z,var_args){
+var args = var_args;
+switch(arguments.length){
+case 0:
+return G__12361__0.call(this);
+case 1:
+return G__12361__1.call(this,x);
+case 2:
+return G__12361__2.call(this,x,y);
+case 3:
+return G__12361__3.call(this,x,y,z);
+default:
+var G__12365 = null;
+if (arguments.length > 3) {
+var G__12366__i = 0, G__12366__a = new Array(arguments.length - 3);
+while (G__12366__i < G__12366__a.length) {G__12366__a[G__12366__i] = arguments[G__12366__i + 3]; ++G__12366__i;}
+G__12365 = new cljs.core.IndexedSeq(G__12366__a,0,null);
+}
+return G__12361__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__12365);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12361.cljs$lang$maxFixedArity = 3;
+G__12361.cljs$lang$applyTo = G__12361__4.cljs$lang$applyTo;
+G__12361.cljs$core$IFn$_invoke$arity$0 = G__12361__0;
+G__12361.cljs$core$IFn$_invoke$arity$1 = G__12361__1;
+G__12361.cljs$core$IFn$_invoke$arity$2 = G__12361__2;
+G__12361.cljs$core$IFn$_invoke$arity$3 = G__12361__3;
+G__12361.cljs$core$IFn$_invoke$arity$variadic = G__12361__4.cljs$core$IFn$_invoke$arity$variadic;
+return G__12361;
+})()
+;})(fs__$1))
+});
+
+/** @this {Function} */
+cljs.core.juxt.cljs$lang$applyTo = (function (seq12334){
+var G__12335 = cljs.core.first(seq12334);
+var seq12334__$1 = cljs.core.next(seq12334);
+var G__12336 = cljs.core.first(seq12334__$1);
+var seq12334__$2 = cljs.core.next(seq12334__$1);
+var G__12337 = cljs.core.first(seq12334__$2);
+var seq12334__$3 = cljs.core.next(seq12334__$2);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12335,G__12336,G__12337,seq12334__$3);
+});
+
+cljs.core.juxt.cljs$lang$maxFixedArity = (3);
+
+/**
+ * When lazy sequences are produced via functions that have side
+ * effects, any effects other than those needed to produce the first
+ * element in the seq do not occur until the seq is consumed. dorun can
+ * be used to force any effects. Walks through the successive nexts of
+ * the seq, does not retain the head and returns nil.
+ */
+cljs.core.dorun = (function cljs$core$dorun(var_args){
+var G__12368 = arguments.length;
+switch (G__12368) {
+case 1:
+return cljs.core.dorun.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.dorun.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.dorun.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+while(true){
+var temp__4657__auto__ = cljs.core.seq(coll);
+if(temp__4657__auto__){
+var s = temp__4657__auto__;
+var G__12370 = cljs.core.next(s);
+coll = G__12370;
+continue;
+} else {
+return null;
+}
+break;
+}
+});
+
+cljs.core.dorun.cljs$core$IFn$_invoke$arity$2 = (function (n,coll){
+while(true){
+if(((cljs.core.seq(coll)) && ((n > (0))))){
+var G__12371 = (n - (1));
+var G__12372 = cljs.core.next(coll);
+n = G__12371;
+coll = G__12372;
+continue;
+} else {
+return null;
+}
+break;
+}
+});
+
+cljs.core.dorun.cljs$lang$maxFixedArity = 2;
+
+/**
+ * When lazy sequences are produced via functions that have side
+ * effects, any effects other than those needed to produce the first
+ * element in the seq do not occur until the seq is consumed. doall can
+ * be used to force any effects. Walks through the successive nexts of
+ * the seq, retains the head and returns it, thus causing the entire
+ * seq to reside in memory at one time.
+ */
+cljs.core.doall = (function cljs$core$doall(var_args){
+var G__12374 = arguments.length;
+switch (G__12374) {
+case 1:
+return cljs.core.doall.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.doall.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.doall.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+cljs.core.dorun.cljs$core$IFn$_invoke$arity$1(coll);
+
+return coll;
+});
+
+cljs.core.doall.cljs$core$IFn$_invoke$arity$2 = (function (n,coll){
+cljs.core.dorun.cljs$core$IFn$_invoke$arity$2(n,coll);
+
+return coll;
+});
+
+cljs.core.doall.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns true if x is a JavaScript RegExp instance.
+ */
+cljs.core.regexp_QMARK_ = (function cljs$core$regexp_QMARK_(x){
+return (x instanceof RegExp);
+});
+/**
+ * Returns the result of (re-find re s) if re fully matches s.
+ */
+cljs.core.re_matches = (function cljs$core$re_matches(re,s){
+if(typeof s === 'string'){
+var matches = re.exec(s);
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.first(matches),s)){
+if((cljs.core.count(matches) === (1))){
+return cljs.core.first(matches);
+} else {
+return cljs.core.vec(matches);
+}
+} else {
+return null;
+}
+} else {
+throw (new TypeError("re-matches must match against a string."));
+}
+});
+/**
+ * Returns the first regex match, if any, of s to re, using
+ * re.exec(s). Returns a vector, containing first the matching
+ * substring, then any capturing groups if the regular expression contains
+ * capturing groups.
+ */
+cljs.core.re_find = (function cljs$core$re_find(re,s){
+if(typeof s === 'string'){
+var matches = re.exec(s);
+if((matches == null)){
+return null;
+} else {
+if((cljs.core.count(matches) === (1))){
+return cljs.core.first(matches);
+} else {
+return cljs.core.vec(matches);
+}
+}
+} else {
+throw (new TypeError("re-find must match against a string."));
+}
+});
+/**
+ * Returns a lazy sequence of successive matches of re in s.
+ */
+cljs.core.re_seq = (function cljs$core$re_seq(re,s){
+var match_data = cljs.core.re_find(re,s);
+var match_idx = s.search(re);
+var match_str = ((cljs.core.coll_QMARK_(match_data))?cljs.core.first(match_data):match_data);
+var post_idx = (match_idx + (function (){var x__8162__auto__ = (1);
+var y__8163__auto__ = cljs.core.count(match_str);
+return ((x__8162__auto__ > y__8163__auto__) ? x__8162__auto__ : y__8163__auto__);
+})());
+var post_match = cljs.core.subs.cljs$core$IFn$_invoke$arity$2(s,post_idx);
+if(cljs.core.truth_(match_data)){
+return (new cljs.core.LazySeq(null,((function (match_data,match_idx,match_str,post_idx,post_match){
+return (function (){
+return cljs.core.cons(match_data,(((post_idx <= cljs.core.count(s)))?(cljs.core.re_seq.cljs$core$IFn$_invoke$arity$2 ? cljs.core.re_seq.cljs$core$IFn$_invoke$arity$2(re,post_match) : cljs.core.re_seq.call(null,re,post_match)):null));
+});})(match_data,match_idx,match_str,post_idx,post_match))
+,null,null));
+} else {
+return null;
+}
+});
+/**
+ * Returns an instance of RegExp which has compiled the provided string.
+ */
+cljs.core.re_pattern = (function cljs$core$re_pattern(s){
+if((s instanceof RegExp)){
+return s;
+} else {
+var vec__12376 = cljs.core.re_find(/^\(\?([idmsux]*)\)/,s);
+var prefix = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12376,(0),null);
+var flags = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12376,(1),null);
+var pattern = cljs.core.subs.cljs$core$IFn$_invoke$arity$2(s,cljs.core.count(prefix));
+return (new RegExp(pattern,(function (){var or__7806__auto__ = flags;
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return "";
+}
+})()));
+}
+});
+cljs.core.pr_sequential_writer = (function cljs$core$pr_sequential_writer(writer,print_one,begin,sep,end,opts,coll){
+var _STAR_print_level_STAR__orig_val__12379 = cljs.core._STAR_print_level_STAR_;
+var _STAR_print_level_STAR__temp_val__12380 = (((cljs.core._STAR_print_level_STAR_ == null))?null:(cljs.core._STAR_print_level_STAR_ - (1)));
+cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR__temp_val__12380;
+
+try{if((((!((cljs.core._STAR_print_level_STAR_ == null)))) && ((cljs.core._STAR_print_level_STAR_ < (0))))){
+return cljs.core._write(writer,"#");
+} else {
+cljs.core._write(writer,begin);
+
+if((new cljs.core.Keyword(null,"print-length","print-length",1931866356).cljs$core$IFn$_invoke$arity$1(opts) === (0))){
+if(cljs.core.seq(coll)){
+cljs.core._write(writer,(function (){var or__7806__auto__ = new cljs.core.Keyword(null,"more-marker","more-marker",-14717935).cljs$core$IFn$_invoke$arity$1(opts);
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return "...";
+}
+})());
+} else {
+}
+} else {
+if(cljs.core.seq(coll)){
+var G__12381_12387 = cljs.core.first(coll);
+var G__12382_12388 = writer;
+var G__12383_12389 = opts;
+(print_one.cljs$core$IFn$_invoke$arity$3 ? print_one.cljs$core$IFn$_invoke$arity$3(G__12381_12387,G__12382_12388,G__12383_12389) : print_one.call(null,G__12381_12387,G__12382_12388,G__12383_12389));
+} else {
+}
+
+var coll_12390__$1 = cljs.core.next(coll);
+var n_12391 = (new cljs.core.Keyword(null,"print-length","print-length",1931866356).cljs$core$IFn$_invoke$arity$1(opts) - (1));
+while(true){
+if(((coll_12390__$1) && ((((n_12391 == null)) || ((!((n_12391 === (0))))))))){
+cljs.core._write(writer,sep);
+
+var G__12384_12392 = cljs.core.first(coll_12390__$1);
+var G__12385_12393 = writer;
+var G__12386_12394 = opts;
+(print_one.cljs$core$IFn$_invoke$arity$3 ? print_one.cljs$core$IFn$_invoke$arity$3(G__12384_12392,G__12385_12393,G__12386_12394) : print_one.call(null,G__12384_12392,G__12385_12393,G__12386_12394));
+
+var G__12395 = cljs.core.next(coll_12390__$1);
+var G__12396 = (n_12391 - (1));
+coll_12390__$1 = G__12395;
+n_12391 = G__12396;
+continue;
+} else {
+if(((cljs.core.seq(coll_12390__$1)) && ((n_12391 === (0))))){
+cljs.core._write(writer,sep);
+
+cljs.core._write(writer,(function (){var or__7806__auto__ = new cljs.core.Keyword(null,"more-marker","more-marker",-14717935).cljs$core$IFn$_invoke$arity$1(opts);
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return "...";
+}
+})());
+} else {
+}
+}
+break;
+}
+}
+
+return cljs.core._write(writer,end);
+}
+}finally {cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR__orig_val__12379;
+}});
+cljs.core.write_all = (function cljs$core$write_all(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12403 = arguments.length;
+var i__9001__auto___12404 = (0);
+while(true){
+if((i__9001__auto___12404 < len__9000__auto___12403)){
+args__9010__auto__.push((arguments[i__9001__auto___12404]));
+
+var G__12405 = (i__9001__auto___12404 + (1));
+i__9001__auto___12404 = G__12405;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((1) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((1)),(0),null)):null);
+return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9011__auto__);
+});
+
+cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic = (function (writer,ss){
+var seq__12399 = cljs.core.seq(ss);
+var chunk__12400 = null;
+var count__12401 = (0);
+var i__12402 = (0);
+while(true){
+if((i__12402 < count__12401)){
+var s = chunk__12400.cljs$core$IIndexed$_nth$arity$2(null,i__12402);
+cljs.core._write(writer,s);
+
+
+var G__12406 = seq__12399;
+var G__12407 = chunk__12400;
+var G__12408 = count__12401;
+var G__12409 = (i__12402 + (1));
+seq__12399 = G__12406;
+chunk__12400 = G__12407;
+count__12401 = G__12408;
+i__12402 = G__12409;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__12399);
+if(temp__4657__auto__){
+var seq__12399__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__12399__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__12399__$1);
+var G__12410 = cljs.core.chunk_rest(seq__12399__$1);
+var G__12411 = c__8664__auto__;
+var G__12412 = cljs.core.count(c__8664__auto__);
+var G__12413 = (0);
+seq__12399 = G__12410;
+chunk__12400 = G__12411;
+count__12401 = G__12412;
+i__12402 = G__12413;
+continue;
+} else {
+var s = cljs.core.first(seq__12399__$1);
+cljs.core._write(writer,s);
+
+
+var G__12414 = cljs.core.next(seq__12399__$1);
+var G__12415 = null;
+var G__12416 = (0);
+var G__12417 = (0);
+seq__12399 = G__12414;
+chunk__12400 = G__12415;
+count__12401 = G__12416;
+i__12402 = G__12417;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+});
+
+cljs.core.write_all.cljs$lang$maxFixedArity = (1);
+
+/** @this {Function} */
+cljs.core.write_all.cljs$lang$applyTo = (function (seq12397){
+var G__12398 = cljs.core.first(seq12397);
+var seq12397__$1 = cljs.core.next(seq12397);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12398,seq12397__$1);
+});
+
+cljs.core.string_print = (function cljs$core$string_print(x){
+if((cljs.core._STAR_print_fn_STAR_ == null)){
+throw (new Error("No *print-fn* fn set for evaluation environment"));
+} else {
+}
+
+(cljs.core._STAR_print_fn_STAR_.cljs$core$IFn$_invoke$arity$1 ? cljs.core._STAR_print_fn_STAR_.cljs$core$IFn$_invoke$arity$1(x) : cljs.core._STAR_print_fn_STAR_.call(null,x));
+
+return null;
+});
+cljs.core.flush = (function cljs$core$flush(){
+return null;
+});
+cljs.core.char_escapes = (function (){var obj12419 = {"\"":"\\\"","\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"};
+return obj12419;
+})();
+cljs.core.quote_string = (function cljs$core$quote_string(s){
+return [cljs.core.str.cljs$core$IFn$_invoke$arity$1("\""),cljs.core.str.cljs$core$IFn$_invoke$arity$1(s.replace(RegExp("[\\\\\"\b\f\n\r\t]","g"),(function (match){
+return (cljs.core.char_escapes[match]);
+}))),cljs.core.str.cljs$core$IFn$_invoke$arity$1("\"")].join('');
+});
+cljs.core.print_meta_QMARK_ = (function cljs$core$print_meta_QMARK_(opts,obj){
+var and__7791__auto__ = cljs.core.boolean$(cljs.core.get.cljs$core$IFn$_invoke$arity$2(opts,new cljs.core.Keyword(null,"meta","meta",1499536964)));
+if(and__7791__auto__){
+var and__7791__auto____$1 = (((!((obj == null))))?(((((obj.cljs$lang$protocol_mask$partition0$ & (131072))) || ((cljs.core.PROTOCOL_SENTINEL === obj.cljs$core$IMeta$))))?true:false):false);
+if(and__7791__auto____$1){
+return (!((cljs.core.meta(obj) == null)));
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+});
+cljs.core.pr_writer_impl = (function cljs$core$pr_writer_impl(obj,writer,opts){
+if((obj == null)){
+return cljs.core._write(writer,"nil");
+} else {
+if(cljs.core.print_meta_QMARK_(opts,obj)){
+cljs.core._write(writer,"^");
+
+cljs.core.pr_writer(cljs.core.meta(obj),writer,opts);
+
+cljs.core._write(writer," ");
+} else {
+}
+
+if(obj.cljs$lang$type){
+return obj.cljs$lang$ctorPrWriter(obj,writer,opts);
+} else {
+if((((!((obj == null))))?(((((obj.cljs$lang$protocol_mask$partition0$ & (2147483648))) || ((cljs.core.PROTOCOL_SENTINEL === obj.cljs$core$IPrintWithWriter$))))?true:(((!obj.cljs$lang$protocol_mask$partition0$))?cljs.core.native_satisfies_QMARK_(cljs.core.IPrintWithWriter,obj):false)):cljs.core.native_satisfies_QMARK_(cljs.core.IPrintWithWriter,obj))){
+return cljs.core._pr_writer(obj,writer,opts);
+} else {
+if(((obj === true) || (obj === false))){
+return cljs.core._write(writer,cljs.core.str.cljs$core$IFn$_invoke$arity$1(obj));
+} else {
+if(typeof obj === 'number'){
+return cljs.core._write(writer,((isNaN(obj))?"##NaN":(((obj === Number.POSITIVE_INFINITY))?"##Inf":(((obj === Number.NEGATIVE_INFINITY))?"##-Inf":cljs.core.str.cljs$core$IFn$_invoke$arity$1(obj)
+))));
+} else {
+if(cljs.core.object_QMARK_(obj)){
+cljs.core._write(writer,"#js ");
+
+return cljs.core.print_map(cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (k){
+return (new cljs.core.MapEntry((function (){var G__12424 = k;
+if((!((cljs.core.re_matches(/[A-Za-z_\*\+\?!\-'][\w\*\+\?!\-']*/,k) == null)))){
+return cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(G__12424);
+} else {
+return G__12424;
+}
+})(),(obj[k]),null));
+}),cljs.core.js_keys(obj)),cljs.core.pr_writer,writer,opts);
+} else {
+if(cljs.core.array_QMARK_(obj)){
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"#js ["," ","]",opts,obj);
+} else {
+if(goog.isString(obj)){
+if(cljs.core.truth_(new cljs.core.Keyword(null,"readably","readably",1129599760).cljs$core$IFn$_invoke$arity$1(opts))){
+return cljs.core._write(writer,cljs.core.quote_string(obj));
+} else {
+return cljs.core._write(writer,obj);
+}
+} else {
+if(goog.isFunction(obj)){
+var name = obj.name;
+var name__$1 = (cljs.core.truth_((function (){var or__7806__auto__ = (name == null);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return goog.string.isEmpty(name);
+}
+})())?"Function":name);
+return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(["#object[",name__$1,((cljs.core._STAR_print_fn_bodies_STAR_)?[" \"",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.str.cljs$core$IFn$_invoke$arity$1(obj)),"\""].join(''):""),"]"], 0));
+} else {
+if((obj instanceof Date)){
+var normalize = (function (n,len){
+var ns = cljs.core.str.cljs$core$IFn$_invoke$arity$1(n);
+while(true){
+if((cljs.core.count(ns) < len)){
+var G__12427 = ["0",cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns)].join('');
+ns = G__12427;
+continue;
+} else {
+return ns;
+}
+break;
+}
+});
+return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(["#inst \"",cljs.core.str.cljs$core$IFn$_invoke$arity$1(obj.getUTCFullYear()),"-",normalize((obj.getUTCMonth() + (1)),(2)),"-",normalize(obj.getUTCDate(),(2)),"T",normalize(obj.getUTCHours(),(2)),":",normalize(obj.getUTCMinutes(),(2)),":",normalize(obj.getUTCSeconds(),(2)),".",normalize(obj.getUTCMilliseconds(),(3)),"-","00:00\""], 0));
+} else {
+if(cljs.core.regexp_QMARK_(obj)){
+return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(["#\"",obj.source,"\""], 0));
+} else {
+if(cljs.core.truth_((function (){var G__12425 = obj;
+var G__12425__$1 = (((G__12425 == null))?null:G__12425.constructor);
+if((G__12425__$1 == null)){
+return null;
+} else {
+return G__12425__$1.cljs$lang$ctorStr;
+}
+})())){
+return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(["#object[",obj.constructor.cljs$lang$ctorStr.replace((new RegExp("/","g")),"."),"]"], 0));
+} else {
+var name = (function (){var G__12426 = obj;
+var G__12426__$1 = (((G__12426 == null))?null:G__12426.constructor);
+if((G__12426__$1 == null)){
+return null;
+} else {
+return G__12426__$1.name;
+}
+})();
+var name__$1 = (cljs.core.truth_((function (){var or__7806__auto__ = (name == null);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return goog.string.isEmpty(name);
+}
+})())?"Object":name);
+if((obj.constructor == null)){
+return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(["#object[",name__$1,"]"], 0));
+} else {
+return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(["#object[",name__$1," ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(obj),"]"], 0));
+}
+}
+
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+
+}
+});
+/**
+ * Prefer this to pr-seq, because it makes the printing function
+ * configurable, allowing efficient implementations such as appending
+ * to a StringBuffer.
+ */
+cljs.core.pr_writer = (function cljs$core$pr_writer(obj,writer,opts){
+var temp__4655__auto__ = new cljs.core.Keyword(null,"alt-impl","alt-impl",670969595).cljs$core$IFn$_invoke$arity$1(opts);
+if(cljs.core.truth_(temp__4655__auto__)){
+var alt_impl = temp__4655__auto__;
+var G__12428 = obj;
+var G__12429 = writer;
+var G__12430 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(opts,new cljs.core.Keyword(null,"fallback-impl","fallback-impl",-1501286995),cljs.core.pr_writer_impl);
+return (alt_impl.cljs$core$IFn$_invoke$arity$3 ? alt_impl.cljs$core$IFn$_invoke$arity$3(G__12428,G__12429,G__12430) : alt_impl.call(null,G__12428,G__12429,G__12430));
+} else {
+return cljs.core.pr_writer_impl(obj,writer,opts);
+}
+});
+cljs.core.pr_seq_writer = (function cljs$core$pr_seq_writer(objs,writer,opts){
+cljs.core.pr_writer(cljs.core.first(objs),writer,opts);
+
+var seq__12431 = cljs.core.seq(cljs.core.next(objs));
+var chunk__12432 = null;
+var count__12433 = (0);
+var i__12434 = (0);
+while(true){
+if((i__12434 < count__12433)){
+var obj = chunk__12432.cljs$core$IIndexed$_nth$arity$2(null,i__12434);
+cljs.core._write(writer," ");
+
+cljs.core.pr_writer(obj,writer,opts);
+
+
+var G__12435 = seq__12431;
+var G__12436 = chunk__12432;
+var G__12437 = count__12433;
+var G__12438 = (i__12434 + (1));
+seq__12431 = G__12435;
+chunk__12432 = G__12436;
+count__12433 = G__12437;
+i__12434 = G__12438;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__12431);
+if(temp__4657__auto__){
+var seq__12431__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__12431__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__12431__$1);
+var G__12439 = cljs.core.chunk_rest(seq__12431__$1);
+var G__12440 = c__8664__auto__;
+var G__12441 = cljs.core.count(c__8664__auto__);
+var G__12442 = (0);
+seq__12431 = G__12439;
+chunk__12432 = G__12440;
+count__12433 = G__12441;
+i__12434 = G__12442;
+continue;
+} else {
+var obj = cljs.core.first(seq__12431__$1);
+cljs.core._write(writer," ");
+
+cljs.core.pr_writer(obj,writer,opts);
+
+
+var G__12443 = cljs.core.next(seq__12431__$1);
+var G__12444 = null;
+var G__12445 = (0);
+var G__12446 = (0);
+seq__12431 = G__12443;
+chunk__12432 = G__12444;
+count__12433 = G__12445;
+i__12434 = G__12446;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+});
+cljs.core.pr_sb_with_opts = (function cljs$core$pr_sb_with_opts(objs,opts){
+var sb = (new goog.string.StringBuffer());
+var writer = (new cljs.core.StringBufferWriter(sb));
+cljs.core.pr_seq_writer(objs,writer,opts);
+
+writer.cljs$core$IWriter$_flush$arity$1(null);
+
+return sb;
+});
+/**
+ * Prints a sequence of objects to a string, observing all the
+ * options given in opts
+ */
+cljs.core.pr_str_with_opts = (function cljs$core$pr_str_with_opts(objs,opts){
+if(cljs.core.empty_QMARK_(objs)){
+return "";
+} else {
+return cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.pr_sb_with_opts(objs,opts));
+}
+});
+/**
+ * Same as pr-str-with-opts followed by (newline)
+ */
+cljs.core.prn_str_with_opts = (function cljs$core$prn_str_with_opts(objs,opts){
+if(cljs.core.empty_QMARK_(objs)){
+return "\n";
+} else {
+var sb = cljs.core.pr_sb_with_opts(objs,opts);
+sb.append("\n");
+
+return cljs.core.str.cljs$core$IFn$_invoke$arity$1(sb);
+}
+});
+/**
+ * Prints a sequence of objects using string-print, observing all
+ * the options given in opts
+ */
+cljs.core.pr_with_opts = (function cljs$core$pr_with_opts(objs,opts){
+return cljs.core.string_print(cljs.core.pr_str_with_opts(objs,opts));
+});
+/**
+ * Prints a newline using *print-fn*
+ */
+cljs.core.newline = (function cljs$core$newline(var_args){
+var G__12448 = arguments.length;
+switch (G__12448) {
+case 0:
+return cljs.core.newline.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.newline.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.newline.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.newline.cljs$core$IFn$_invoke$arity$1(null);
+});
+
+cljs.core.newline.cljs$core$IFn$_invoke$arity$1 = (function (opts){
+cljs.core.string_print("\n");
+
+if(cljs.core.truth_(cljs.core.get.cljs$core$IFn$_invoke$arity$2(opts,new cljs.core.Keyword(null,"flush-on-newline","flush-on-newline",-151457939)))){
+return cljs.core.flush();
+} else {
+return null;
+}
+});
+
+cljs.core.newline.cljs$lang$maxFixedArity = 1;
+
+/**
+ * pr to a string, returning it. Fundamental entrypoint to IPrintWithWriter.
+ */
+cljs.core.pr_str = (function cljs$core$pr_str(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12451 = arguments.length;
+var i__9001__auto___12452 = (0);
+while(true){
+if((i__9001__auto___12452 < len__9000__auto___12451)){
+args__9010__auto__.push((arguments[i__9001__auto___12452]));
+
+var G__12453 = (i__9001__auto___12452 + (1));
+i__9001__auto___12452 = G__12453;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic = (function (objs){
+return cljs.core.pr_str_with_opts(objs,cljs.core.pr_opts());
+});
+
+cljs.core.pr_str.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.pr_str.cljs$lang$applyTo = (function (seq12450){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12450));
+});
+
+/**
+ * Same as pr-str followed by (newline)
+ */
+cljs.core.prn_str = (function cljs$core$prn_str(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12455 = arguments.length;
+var i__9001__auto___12456 = (0);
+while(true){
+if((i__9001__auto___12456 < len__9000__auto___12455)){
+args__9010__auto__.push((arguments[i__9001__auto___12456]));
+
+var G__12457 = (i__9001__auto___12456 + (1));
+i__9001__auto___12456 = G__12457;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.prn_str.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.prn_str.cljs$core$IFn$_invoke$arity$variadic = (function (objs){
+return cljs.core.prn_str_with_opts(objs,cljs.core.pr_opts());
+});
+
+cljs.core.prn_str.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.prn_str.cljs$lang$applyTo = (function (seq12454){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12454));
+});
+
+/**
+ * Prints the object(s) using string-print. Prints the
+ * object(s), separated by spaces if there is more than one.
+ * By default, pr and prn print in a way that objects can be
+ * read by the reader
+ */
+cljs.core.pr = (function cljs$core$pr(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12459 = arguments.length;
+var i__9001__auto___12460 = (0);
+while(true){
+if((i__9001__auto___12460 < len__9000__auto___12459)){
+args__9010__auto__.push((arguments[i__9001__auto___12460]));
+
+var G__12461 = (i__9001__auto___12460 + (1));
+i__9001__auto___12460 = G__12461;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.pr.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.pr.cljs$core$IFn$_invoke$arity$variadic = (function (objs){
+return cljs.core.pr_with_opts(objs,cljs.core.pr_opts());
+});
+
+cljs.core.pr.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.pr.cljs$lang$applyTo = (function (seq12458){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12458));
+});
+
+/**
+ * Prints the object(s) using string-print.
+ * print and println produce output for human consumption.
+ * @param {...*} var_args
+ */
+cljs.core.print = (function() {
+var cljs$core$cljs_core_print__delegate = function (objs){
+return cljs.core.pr_with_opts(objs,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.pr_opts(),new cljs.core.Keyword(null,"readably","readably",1129599760),false));
+};
+var cljs$core$cljs_core_print = function (var_args){
+var objs = null;
+if (arguments.length > 0) {
+var G__12462__i = 0, G__12462__a = new Array(arguments.length - 0);
+while (G__12462__i < G__12462__a.length) {G__12462__a[G__12462__i] = arguments[G__12462__i + 0]; ++G__12462__i;}
+ objs = new cljs.core.IndexedSeq(G__12462__a,0,null);
+}
+return cljs$core$cljs_core_print__delegate.call(this,objs);};
+cljs$core$cljs_core_print.cljs$lang$maxFixedArity = 0;
+cljs$core$cljs_core_print.cljs$lang$applyTo = (function (arglist__12463){
+var objs = cljs.core.seq(arglist__12463);
+return cljs$core$cljs_core_print__delegate(objs);
+});
+cljs$core$cljs_core_print.cljs$core$IFn$_invoke$arity$variadic = cljs$core$cljs_core_print__delegate;
+return cljs$core$cljs_core_print;
+})()
+;
+/**
+ * print to a string, returning it
+ */
+cljs.core.print_str = (function cljs$core$print_str(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12465 = arguments.length;
+var i__9001__auto___12466 = (0);
+while(true){
+if((i__9001__auto___12466 < len__9000__auto___12465)){
+args__9010__auto__.push((arguments[i__9001__auto___12466]));
+
+var G__12467 = (i__9001__auto___12466 + (1));
+i__9001__auto___12466 = G__12467;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.print_str.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.print_str.cljs$core$IFn$_invoke$arity$variadic = (function (objs){
+return cljs.core.pr_str_with_opts(objs,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.pr_opts(),new cljs.core.Keyword(null,"readably","readably",1129599760),false));
+});
+
+cljs.core.print_str.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.print_str.cljs$lang$applyTo = (function (seq12464){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12464));
+});
+
+/**
+ * Same as print followed by (newline)
+ */
+cljs.core.println = (function cljs$core$println(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12469 = arguments.length;
+var i__9001__auto___12470 = (0);
+while(true){
+if((i__9001__auto___12470 < len__9000__auto___12469)){
+args__9010__auto__.push((arguments[i__9001__auto___12470]));
+
+var G__12471 = (i__9001__auto___12470 + (1));
+i__9001__auto___12470 = G__12471;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.println.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.println.cljs$core$IFn$_invoke$arity$variadic = (function (objs){
+cljs.core.pr_with_opts(objs,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.pr_opts(),new cljs.core.Keyword(null,"readably","readably",1129599760),false));
+
+if(cljs.core._STAR_print_newline_STAR_){
+return cljs.core.newline.cljs$core$IFn$_invoke$arity$1(cljs.core.pr_opts());
+} else {
+return null;
+}
+});
+
+cljs.core.println.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.println.cljs$lang$applyTo = (function (seq12468){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12468));
+});
+
+/**
+ * println to a string, returning it
+ */
+cljs.core.println_str = (function cljs$core$println_str(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12473 = arguments.length;
+var i__9001__auto___12474 = (0);
+while(true){
+if((i__9001__auto___12474 < len__9000__auto___12473)){
+args__9010__auto__.push((arguments[i__9001__auto___12474]));
+
+var G__12475 = (i__9001__auto___12474 + (1));
+i__9001__auto___12474 = G__12475;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.println_str.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.println_str.cljs$core$IFn$_invoke$arity$variadic = (function (objs){
+return cljs.core.prn_str_with_opts(objs,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.pr_opts(),new cljs.core.Keyword(null,"readably","readably",1129599760),false));
+});
+
+cljs.core.println_str.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.println_str.cljs$lang$applyTo = (function (seq12472){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12472));
+});
+
+/**
+ * Same as pr followed by (newline).
+ */
+cljs.core.prn = (function cljs$core$prn(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12477 = arguments.length;
+var i__9001__auto___12478 = (0);
+while(true){
+if((i__9001__auto___12478 < len__9000__auto___12477)){
+args__9010__auto__.push((arguments[i__9001__auto___12478]));
+
+var G__12479 = (i__9001__auto___12478 + (1));
+i__9001__auto___12478 = G__12479;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.prn.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.prn.cljs$core$IFn$_invoke$arity$variadic = (function (objs){
+cljs.core.pr_with_opts(objs,cljs.core.pr_opts());
+
+if(cljs.core._STAR_print_newline_STAR_){
+return cljs.core.newline.cljs$core$IFn$_invoke$arity$1(cljs.core.pr_opts());
+} else {
+return null;
+}
+});
+
+cljs.core.prn.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.prn.cljs$lang$applyTo = (function (seq12476){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12476));
+});
+
+cljs.core.strip_ns = (function cljs$core$strip_ns(named){
+if((named instanceof cljs.core.Symbol)){
+return cljs.core.symbol.cljs$core$IFn$_invoke$arity$2(null,cljs.core.name(named));
+} else {
+return cljs.core.keyword.cljs$core$IFn$_invoke$arity$2(null,cljs.core.name(named));
+}
+});
+/**
+ * Returns [lifted-ns lifted-map] or nil if m can't be lifted.
+ */
+cljs.core.lift_ns = (function cljs$core$lift_ns(m){
+if(cljs.core._STAR_print_namespace_maps_STAR_){
+var ns = null;
+var G__12486 = cljs.core.seq(m);
+var vec__12487 = G__12486;
+var seq__12488 = cljs.core.seq(vec__12487);
+var first__12489 = cljs.core.first(seq__12488);
+var seq__12488__$1 = cljs.core.next(seq__12488);
+var vec__12490 = first__12489;
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12490,(0),null);
+var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12490,(1),null);
+var entry = vec__12490;
+var entries = seq__12488__$1;
+var lm = cljs.core.empty(m);
+var ns__$1 = ns;
+var G__12486__$1 = G__12486;
+var lm__$1 = lm;
+while(true){
+var ns__$2 = ns__$1;
+var vec__12493 = G__12486__$1;
+var seq__12494 = cljs.core.seq(vec__12493);
+var first__12495 = cljs.core.first(seq__12494);
+var seq__12494__$1 = cljs.core.next(seq__12494);
+var vec__12496 = first__12495;
+var k__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12496,(0),null);
+var v__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12496,(1),null);
+var entry__$1 = vec__12496;
+var entries__$1 = seq__12494__$1;
+var lm__$2 = lm__$1;
+if(cljs.core.truth_(entry__$1)){
+if((((k__$1 instanceof cljs.core.Keyword)) || ((k__$1 instanceof cljs.core.Symbol)))){
+if(cljs.core.truth_(ns__$2)){
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(ns__$2,cljs.core.namespace(k__$1))){
+var G__12499 = ns__$2;
+var G__12500 = entries__$1;
+var G__12501 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(lm__$2,cljs.core.strip_ns(k__$1),v__$1);
+ns__$1 = G__12499;
+G__12486__$1 = G__12500;
+lm__$1 = G__12501;
+continue;
+} else {
+return null;
+}
+} else {
+var temp__4657__auto__ = cljs.core.namespace(k__$1);
+if(cljs.core.truth_(temp__4657__auto__)){
+var new_ns = temp__4657__auto__;
+var G__12502 = new_ns;
+var G__12503 = entries__$1;
+var G__12504 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(lm__$2,cljs.core.strip_ns(k__$1),v__$1);
+ns__$1 = G__12502;
+G__12486__$1 = G__12503;
+lm__$1 = G__12504;
+continue;
+} else {
+return null;
+}
+}
+} else {
+return null;
+}
+} else {
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [ns__$2,lm__$2], null);
+}
+break;
+}
+} else {
+return null;
+}
+});
+cljs.core.print_prefix_map = (function cljs$core$print_prefix_map(prefix,m,print_one,writer,opts){
+return cljs.core.pr_sequential_writer(writer,(function (e,w,opts__$1){
+var G__12505_12511 = cljs.core.key(e);
+var G__12506_12512 = w;
+var G__12507_12513 = opts__$1;
+(print_one.cljs$core$IFn$_invoke$arity$3 ? print_one.cljs$core$IFn$_invoke$arity$3(G__12505_12511,G__12506_12512,G__12507_12513) : print_one.call(null,G__12505_12511,G__12506_12512,G__12507_12513));
+
+cljs.core._write(w," ");
+
+var G__12508 = cljs.core.val(e);
+var G__12509 = w;
+var G__12510 = opts__$1;
+return (print_one.cljs$core$IFn$_invoke$arity$3 ? print_one.cljs$core$IFn$_invoke$arity$3(G__12508,G__12509,G__12510) : print_one.call(null,G__12508,G__12509,G__12510));
+}),[cljs.core.str.cljs$core$IFn$_invoke$arity$1(prefix),"{"].join(''),", ","}",opts,cljs.core.seq(m));
+});
+cljs.core.print_map = (function cljs$core$print_map(m,print_one,writer,opts){
+var vec__12514 = ((cljs.core.map_QMARK_(m))?cljs.core.lift_ns(m):null);
+var ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12514,(0),null);
+var lift_map = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12514,(1),null);
+if(cljs.core.truth_(ns)){
+return cljs.core.print_prefix_map(["#:",cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns)].join(''),lift_map,print_one,writer,opts);
+} else {
+return cljs.core.print_prefix_map(null,m,print_one,writer,opts);
+}
+});
+cljs.core.Volatile.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Volatile.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (a,writer,opts){
+var a__$1 = this;
+cljs.core._write(writer,"#object [cljs.core.Volatile ");
+
+cljs.core.pr_writer(new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"val","val",128701612),a__$1.state], null),writer,opts);
+
+return cljs.core._write(writer,"]");
+});
+
+cljs.core.Var.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Var.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (a,writer,opts){
+var a__$1 = this;
+cljs.core._write(writer,"#'");
+
+return cljs.core.pr_writer(a__$1.sym,writer,opts);
+});
+
+cljs.core.IndexedSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.IndexedSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.LazySeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.LazySeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.MapEntry.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"["," ","]",opts,coll__$1);
+});
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.NodeSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.NodeSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.BlackNode.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"["," ","]",opts,coll__$1);
+});
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.ES6IteratorSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.ES6IteratorSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentTreeSet.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"#{"," ","}",opts,coll__$1);
+});
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.ChunkedSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.ObjMap.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.ObjMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.print_map(coll__$1,cljs.core.pr_writer,writer,opts);
+});
+
+cljs.core.Cons.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Cons.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.Iterate.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Iterate.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.RSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.RSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentHashMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.print_map(coll__$1,cljs.core.pr_writer,writer,opts);
+});
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.Subvec.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Subvec.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"["," ","]",opts,coll__$1);
+});
+
+cljs.core.Cycle.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Cycle.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentTreeMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.print_map(coll__$1,cljs.core.pr_writer,writer,opts);
+});
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentHashSet.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"#{"," ","}",opts,coll__$1);
+});
+
+cljs.core.ChunkedCons.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.ChunkedCons.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.Atom.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Atom.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (a,writer,opts){
+var a__$1 = this;
+cljs.core._write(writer,"#object [cljs.core.Atom ");
+
+cljs.core.pr_writer(new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"val","val",128701612),a__$1.state], null),writer,opts);
+
+return cljs.core._write(writer,"]");
+});
+
+cljs.core.ValSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.ValSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.RedNode.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.RedNode.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"["," ","]",opts,coll__$1);
+});
+
+cljs.core.Repeat.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Repeat.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentVector.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"["," ","]",opts,coll__$1);
+});
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.EmptyList.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.EmptyList.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core._write(writer,"()");
+});
+
+cljs.core.PersistentQueue.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentQueue.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"#queue ["," ","]",opts,cljs.core.seq(coll__$1));
+});
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentArrayMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.print_map(coll__$1,cljs.core.pr_writer,writer,opts);
+});
+
+cljs.core.Range.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Range.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.TransformerIterator.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.TransformerIterator.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.KeySeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.KeySeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+
+cljs.core.List.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.List.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
+var coll__$1 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
+});
+cljs.core.Symbol.prototype.cljs$core$IComparable$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Symbol.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
+var x__$1 = this;
+if((y instanceof cljs.core.Symbol)){
+return cljs.core.compare_symbols(x__$1,y);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x__$1)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(y)].join('')));
+}
+});
+
+cljs.core.Keyword.prototype.cljs$core$IComparable$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Keyword.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
+var x__$1 = this;
+if((y instanceof cljs.core.Keyword)){
+return cljs.core.compare_keywords(x__$1,y);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x__$1)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(y)].join('')));
+}
+});
+
+cljs.core.Subvec.prototype.cljs$core$IComparable$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.Subvec.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
+var x__$1 = this;
+if(cljs.core.vector_QMARK_(y)){
+return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$2(x__$1,y);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x__$1)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(y)].join('')));
+}
+});
+
+cljs.core.PersistentVector.prototype.cljs$core$IComparable$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.PersistentVector.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
+var x__$1 = this;
+if(cljs.core.vector_QMARK_(y)){
+return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$2(x__$1,y);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x__$1)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(y)].join('')));
+}
+});
+
+cljs.core.MapEntry.prototype.cljs$core$IComparable$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.MapEntry.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
+var x__$1 = this;
+if(cljs.core.vector_QMARK_(y)){
+return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$2(x__$1,y);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x__$1)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(y)].join('')));
+}
+});
+
+cljs.core.BlackNode.prototype.cljs$core$IComparable$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.BlackNode.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
+var x__$1 = this;
+if(cljs.core.vector_QMARK_(y)){
+return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$2(x__$1,y);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x__$1)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(y)].join('')));
+}
+});
+
+cljs.core.RedNode.prototype.cljs$core$IComparable$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.RedNode.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
+var x__$1 = this;
+if(cljs.core.vector_QMARK_(y)){
+return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$2(x__$1,y);
+} else {
+throw (new Error(["Cannot compare ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(x__$1)," to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(y)].join('')));
+}
+});
+/**
+ * Atomically sets the metadata for a namespace/var/ref/agent/atom to be:
+ *
+ * (apply f its-current-meta args)
+ *
+ * f must be free of side-effects
+ */
+cljs.core.alter_meta_BANG_ = (function cljs$core$alter_meta_BANG_(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12520 = arguments.length;
+var i__9001__auto___12521 = (0);
+while(true){
+if((i__9001__auto___12521 < len__9000__auto___12520)){
+args__9010__auto__.push((arguments[i__9001__auto___12521]));
+
+var G__12522 = (i__9001__auto___12521 + (1));
+i__9001__auto___12521 = G__12522;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((2) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((2)),(0),null)):null);
+return cljs.core.alter_meta_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9011__auto__);
+});
+
+cljs.core.alter_meta_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (iref,f,args){
+return iref.meta = cljs.core.apply.cljs$core$IFn$_invoke$arity$3(f,iref.meta,args);
+});
+
+cljs.core.alter_meta_BANG_.cljs$lang$maxFixedArity = (2);
+
+/** @this {Function} */
+cljs.core.alter_meta_BANG_.cljs$lang$applyTo = (function (seq12517){
+var G__12518 = cljs.core.first(seq12517);
+var seq12517__$1 = cljs.core.next(seq12517);
+var G__12519 = cljs.core.first(seq12517__$1);
+var seq12517__$2 = cljs.core.next(seq12517__$1);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12518,G__12519,seq12517__$2);
+});
+
+/**
+ * Atomically resets the metadata for an atom
+ */
+cljs.core.reset_meta_BANG_ = (function cljs$core$reset_meta_BANG_(iref,m){
+return iref.meta = m;
+});
+/**
+ * Adds a watch function to an atom reference. The watch fn must be a
+ * fn of 4 args: a key, the reference, its old-state, its
+ * new-state. Whenever the reference's state might have been changed,
+ * any registered watches will have their functions called. The watch
+ * fn will be called synchronously. Note that an atom's state
+ * may have changed again prior to the fn call, so use old/new-state
+ * rather than derefing the reference. Keys must be unique per
+ * reference, and can be used to remove the watch with remove-watch,
+ * but are otherwise considered opaque by the watch mechanism. Bear in
+ * mind that regardless of the result or action of the watch fns the
+ * atom's value will change. Example:
+ *
+ * (def a (atom 0))
+ * (add-watch a :inc (fn [k r o n] (assert (== 0 n))))
+ * (swap! a inc)
+ * ;; Assertion Error
+ * (deref a)
+ * ;=> 1
+ */
+cljs.core.add_watch = (function cljs$core$add_watch(iref,key,f){
+cljs.core._add_watch(iref,key,f);
+
+return iref;
+});
+/**
+ * Removes a watch (set by add-watch) from a reference
+ */
+cljs.core.remove_watch = (function cljs$core$remove_watch(iref,key){
+cljs.core._remove_watch(iref,key);
+
+return iref;
+});
+/**
+ * @type {*}
+ */
+cljs.core.gensym_counter = null;
+/**
+ * Returns a new symbol with a unique name. If a prefix string is
+ * supplied, the name is prefix# where # is some unique number. If
+ * prefix is not supplied, the prefix is 'G__'.
+ */
+cljs.core.gensym = (function cljs$core$gensym(var_args){
+var G__12524 = arguments.length;
+switch (G__12524) {
+case 0:
+return cljs.core.gensym.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.gensym.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.gensym.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.gensym.cljs$core$IFn$_invoke$arity$1("G__");
+});
+
+cljs.core.gensym.cljs$core$IFn$_invoke$arity$1 = (function (prefix_string){
+if((cljs.core.gensym_counter == null)){
+cljs.core.gensym_counter = cljs.core.atom.cljs$core$IFn$_invoke$arity$1((0));
+} else {
+}
+
+return cljs.core.symbol.cljs$core$IFn$_invoke$arity$1([cljs.core.str.cljs$core$IFn$_invoke$arity$1(prefix_string),cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(cljs.core.gensym_counter,cljs.core.inc))].join(''));
+});
+
+cljs.core.gensym.cljs$lang$maxFixedArity = 1;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IPending}
+ * @implements {cljs.core.IDeref}
+ * @implements {cljs.core.IPrintWithWriter}
+*/
+cljs.core.Delay = (function (f,value){
+this.f = f;
+this.value = value;
+this.cljs$lang$protocol_mask$partition0$ = 2147516416;
+this.cljs$lang$protocol_mask$partition1$ = 1;
+});
+cljs.core.Delay.prototype.cljs$core$IDeref$_deref$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+if(cljs.core.truth_(self__.f)){
+self__.value = (self__.f.cljs$core$IFn$_invoke$arity$0 ? self__.f.cljs$core$IFn$_invoke$arity$0() : self__.f.call(null));
+
+self__.f = null;
+} else {
+}
+
+return self__.value;
+});
+
+cljs.core.Delay.prototype.cljs$core$IPending$_realized_QMARK_$arity$1 = (function (x){
+var self__ = this;
+var x__$1 = this;
+return cljs.core.not(self__.f);
+});
+
+cljs.core.Delay.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (x,writer,opts){
+var self__ = this;
+var x__$1 = this;
+cljs.core._write(writer,"#object[cljs.core.Delay ");
+
+cljs.core.pr_writer(new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"status","status",-1997798413),(((self__.f == null))?new cljs.core.Keyword(null,"ready","ready",1086465795):new cljs.core.Keyword(null,"pending","pending",-220036727)),new cljs.core.Keyword(null,"val","val",128701612),self__.value], null),writer,opts);
+
+return cljs.core._write(writer,"]");
+});
+
+cljs.core.Delay.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"f","f",43394975,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"value","value",1946509744,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.Delay.cljs$lang$type = true;
+
+cljs.core.Delay.cljs$lang$ctorStr = "cljs.core/Delay";
+
+cljs.core.Delay.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Delay");
+});
+
+/**
+ * Positional factory function for cljs.core/Delay.
+ */
+cljs.core.__GT_Delay = (function cljs$core$__GT_Delay(f,value){
+return (new cljs.core.Delay(f,value));
+});
+
+/**
+ * returns true if x is a Delay created with delay
+ */
+cljs.core.delay_QMARK_ = (function cljs$core$delay_QMARK_(x){
+return (x instanceof cljs.core.Delay);
+});
+/**
+ * If x is a Delay, returns the (possibly cached) value of its expression, else returns x
+ */
+cljs.core.force = (function cljs$core$force(x){
+if(cljs.core.delay_QMARK_(x)){
+return cljs.core.deref(x);
+} else {
+return x;
+}
+});
+/**
+ * Returns true if a value has been produced for a delay or lazy sequence.
+ */
+cljs.core.realized_QMARK_ = (function cljs$core$realized_QMARK_(x){
+return cljs.core._realized_QMARK_(x);
+});
+cljs.core.preserving_reduced = (function cljs$core$preserving_reduced(rf){
+return (function (p1__12526_SHARP_,p2__12527_SHARP_){
+var ret = (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(p1__12526_SHARP_,p2__12527_SHARP_) : rf.call(null,p1__12526_SHARP_,p2__12527_SHARP_));
+if(cljs.core.reduced_QMARK_(ret)){
+return cljs.core.reduced(ret);
+} else {
+return ret;
+}
+});
+});
+/**
+ * A transducer which concatenates the contents of each input, which must be a
+ * collection, into the reduction.
+ */
+cljs.core.cat = (function cljs$core$cat(rf){
+var rf1 = cljs.core.preserving_reduced(rf);
+return ((function (rf1){
+return (function() {
+var G__12528 = null;
+var G__12528__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__12528__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__12528__2 = (function (result,input){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(rf1,result,input);
+});
+G__12528 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__12528__0.call(this);
+case 1:
+return G__12528__1.call(this,result);
+case 2:
+return G__12528__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12528.cljs$core$IFn$_invoke$arity$0 = G__12528__0;
+G__12528.cljs$core$IFn$_invoke$arity$1 = G__12528__1;
+G__12528.cljs$core$IFn$_invoke$arity$2 = G__12528__2;
+return G__12528;
+})()
+;})(rf1))
+});
+/**
+ * Returns a transducer that ends transduction when pred returns true
+ * for an input. When retf is supplied it must be a fn of 2 arguments -
+ * it will be passed the (completed) result so far and the input that
+ * triggered the predicate, and its return value (if it does not throw
+ * an exception) will be the return value of the transducer. If retf
+ * is not supplied, the input that triggered the predicate will be
+ * returned. If the predicate never returns true the transduction is
+ * unaffected.
+ */
+cljs.core.halt_when = (function cljs$core$halt_when(var_args){
+var G__12530 = arguments.length;
+switch (G__12530) {
+case 1:
+return cljs.core.halt_when.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.halt_when.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.halt_when.cljs$core$IFn$_invoke$arity$1 = (function (pred){
+return cljs.core.halt_when.cljs$core$IFn$_invoke$arity$2(pred,null);
+});
+
+cljs.core.halt_when.cljs$core$IFn$_invoke$arity$2 = (function (pred,retf){
+return (function (rf){
+return (function() {
+var G__12534 = null;
+var G__12534__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__12534__1 = (function (result){
+if(((cljs.core.map_QMARK_(result)) && (cljs.core.contains_QMARK_(result,new cljs.core.Keyword("cljs.core","halt","cljs.core/halt",-1049036715))))){
+return new cljs.core.Keyword("cljs.core","halt","cljs.core/halt",-1049036715).cljs$core$IFn$_invoke$arity$1(result);
+} else {
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+}
+});
+var G__12534__2 = (function (result,input){
+if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(input) : pred.call(null,input)))){
+return cljs.core.reduced(new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("cljs.core","halt","cljs.core/halt",-1049036715),(cljs.core.truth_(retf)?(function (){var G__12531 = (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+var G__12532 = input;
+return (retf.cljs$core$IFn$_invoke$arity$2 ? retf.cljs$core$IFn$_invoke$arity$2(G__12531,G__12532) : retf.call(null,G__12531,G__12532));
+})():input)], null));
+} else {
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input));
+}
+});
+G__12534 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__12534__0.call(this);
+case 1:
+return G__12534__1.call(this,result);
+case 2:
+return G__12534__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12534.cljs$core$IFn$_invoke$arity$0 = G__12534__0;
+G__12534.cljs$core$IFn$_invoke$arity$1 = G__12534__1;
+G__12534.cljs$core$IFn$_invoke$arity$2 = G__12534__2;
+return G__12534;
+})()
+});
+});
+
+cljs.core.halt_when.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns a lazy sequence removing consecutive duplicates in coll.
+ * Returns a transducer when no collection is provided.
+ */
+cljs.core.dedupe = (function cljs$core$dedupe(var_args){
+var G__12536 = arguments.length;
+switch (G__12536) {
+case 0:
+return cljs.core.dedupe.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.dedupe.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.dedupe.cljs$core$IFn$_invoke$arity$0 = (function (){
+return (function (rf){
+var pa = cljs.core.volatile_BANG_(new cljs.core.Keyword("cljs.core","none","cljs.core/none",926646439));
+return ((function (pa){
+return (function() {
+var G__12538 = null;
+var G__12538__0 = (function (){
+return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
+});
+var G__12538__1 = (function (result){
+return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(result) : rf.call(null,result));
+});
+var G__12538__2 = (function (result,input){
+var prior = cljs.core.deref(pa);
+cljs.core.vreset_BANG_(pa,input);
+
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(prior,input)){
+return result;
+} else {
+return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(result,input) : rf.call(null,result,input));
+}
+});
+G__12538 = function(result,input){
+switch(arguments.length){
+case 0:
+return G__12538__0.call(this);
+case 1:
+return G__12538__1.call(this,result);
+case 2:
+return G__12538__2.call(this,result,input);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12538.cljs$core$IFn$_invoke$arity$0 = G__12538__0;
+G__12538.cljs$core$IFn$_invoke$arity$1 = G__12538__1;
+G__12538.cljs$core$IFn$_invoke$arity$2 = G__12538__2;
+return G__12538;
+})()
+;})(pa))
+});
+});
+
+cljs.core.dedupe.cljs$core$IFn$_invoke$arity$1 = (function (coll){
+return cljs.core.sequence.cljs$core$IFn$_invoke$arity$2(cljs.core.dedupe.cljs$core$IFn$_invoke$arity$0(),coll);
+});
+
+cljs.core.dedupe.cljs$lang$maxFixedArity = 1;
+
+/**
+ * Returns items from coll with random probability of prob (0.0 -
+ * 1.0). Returns a transducer when no collection is provided.
+ */
+cljs.core.random_sample = (function cljs$core$random_sample(var_args){
+var G__12540 = arguments.length;
+switch (G__12540) {
+case 1:
+return cljs.core.random_sample.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.random_sample.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.random_sample.cljs$core$IFn$_invoke$arity$1 = (function (prob){
+return cljs.core.filter.cljs$core$IFn$_invoke$arity$1((function (_){
+return (cljs.core.rand.cljs$core$IFn$_invoke$arity$0() < prob);
+}));
+});
+
+cljs.core.random_sample.cljs$core$IFn$_invoke$arity$2 = (function (prob,coll){
+return cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (_){
+return (cljs.core.rand.cljs$core$IFn$_invoke$arity$0() < prob);
+}),coll);
+});
+
+cljs.core.random_sample.cljs$lang$maxFixedArity = 2;
+
+
+/**
+* @constructor
+ * @implements {cljs.core.ISeqable}
+ * @implements {cljs.core.IPrintWithWriter}
+ * @implements {cljs.core.IIterable}
+ * @implements {cljs.core.ISequential}
+ * @implements {cljs.core.IReduce}
+*/
+cljs.core.Eduction = (function (xform,coll){
+this.xform = xform;
+this.coll = coll;
+this.cljs$lang$protocol_mask$partition0$ = 2173173760;
+this.cljs$lang$protocol_mask$partition1$ = 131072;
+});
+cljs.core.Eduction.prototype.indexOf = (function() {
+var G__12542 = null;
+var G__12542__1 = (function (x){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll__$1,x,(0));
+});
+var G__12542__2 = (function (x,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._indexOf.cljs$core$IFn$_invoke$arity$3(coll__$1,x,start);
+});
+G__12542 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__12542__1.call(this,x);
+case 2:
+return G__12542__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12542.cljs$core$IFn$_invoke$arity$1 = G__12542__1;
+G__12542.cljs$core$IFn$_invoke$arity$2 = G__12542__2;
+return G__12542;
+})()
+;
+
+cljs.core.Eduction.prototype.lastIndexOf = (function() {
+var G__12543 = null;
+var G__12543__1 = (function (x){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll__$1,x,cljs.core.count(coll__$1));
+});
+var G__12543__2 = (function (x,start){
+var self__ = this;
+var coll__$1 = this;
+return cljs.core._lastIndexOf.cljs$core$IFn$_invoke$arity$3(coll__$1,x,start);
+});
+G__12543 = function(x,start){
+switch(arguments.length){
+case 1:
+return G__12543__1.call(this,x);
+case 2:
+return G__12543__2.call(this,x,start);
+}
+throw(new Error('Invalid arity: ' + arguments.length));
+};
+G__12543.cljs$core$IFn$_invoke$arity$1 = G__12543__1;
+G__12543.cljs$core$IFn$_invoke$arity$2 = G__12543__2;
+return G__12543;
+})()
+;
+
+cljs.core.Eduction.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return cljs.core.TransformerIterator.create(self__.xform,cljs.core.iter(self__.coll));
+});
+
+cljs.core.Eduction.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return cljs.core.seq(cljs.core.sequence.cljs$core$IFn$_invoke$arity$2(self__.xform,self__.coll));
+});
+
+cljs.core.Eduction.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (_,f){
+var self__ = this;
+var ___$1 = this;
+return cljs.core.transduce.cljs$core$IFn$_invoke$arity$3(self__.xform,cljs.core.completing.cljs$core$IFn$_invoke$arity$1(f),self__.coll);
+});
+
+cljs.core.Eduction.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (_,f,init){
+var self__ = this;
+var ___$1 = this;
+return cljs.core.transduce.cljs$core$IFn$_invoke$arity$4(self__.xform,cljs.core.completing.cljs$core$IFn$_invoke$arity$1(f),init,self__.coll);
+});
+
+cljs.core.Eduction.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll__$1,writer,opts){
+var self__ = this;
+var coll__$2 = this;
+return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$2);
+});
+
+cljs.core.Eduction.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"xform","xform",-85179481,null),new cljs.core.Symbol(null,"coll","coll",-1006698606,null)], null);
+});
+
+cljs.core.Eduction.cljs$lang$type = true;
+
+cljs.core.Eduction.cljs$lang$ctorStr = "cljs.core/Eduction";
+
+cljs.core.Eduction.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Eduction");
+});
+
+/**
+ * Positional factory function for cljs.core/Eduction.
+ */
+cljs.core.__GT_Eduction = (function cljs$core$__GT_Eduction(xform,coll){
+return (new cljs.core.Eduction(xform,coll));
+});
+
+var G__12544_12547 = cljs.core.Eduction.prototype;
+var G__12545_12548 = cljs.core.ITER_SYMBOL;
+var G__12546_12549 = ((function (G__12544_12547,G__12545_12548){
+return (function (){
+var this__8871__auto__ = this;
+return cljs.core.es6_iterator(this__8871__auto__);
+});})(G__12544_12547,G__12545_12548))
+;
+goog.object.set(G__12544_12547,G__12545_12548,G__12546_12549);
+/**
+ * Returns a reducible/iterable application of the transducers
+ * to the items in coll. Transducers are applied in order as if
+ * combined with comp. Note that these applications will be
+ * performed every time reduce/iterator is called.
+ */
+cljs.core.eduction = (function cljs$core$eduction(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12551 = arguments.length;
+var i__9001__auto___12552 = (0);
+while(true){
+if((i__9001__auto___12552 < len__9000__auto___12551)){
+args__9010__auto__.push((arguments[i__9001__auto___12552]));
+
+var G__12553 = (i__9001__auto___12552 + (1));
+i__9001__auto___12552 = G__12553;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((0) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((0)),(0),null)):null);
+return cljs.core.eduction.cljs$core$IFn$_invoke$arity$variadic(argseq__9011__auto__);
+});
+
+cljs.core.eduction.cljs$core$IFn$_invoke$arity$variadic = (function (xforms){
+return (new cljs.core.Eduction(cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.comp,cljs.core.butlast(xforms)),cljs.core.last(xforms)));
+});
+
+cljs.core.eduction.cljs$lang$maxFixedArity = (0);
+
+/** @this {Function} */
+cljs.core.eduction.cljs$lang$applyTo = (function (seq12550){
+var self__8988__auto__ = this;
+return self__8988__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq12550));
+});
+
+/**
+ * Runs the supplied procedure (via reduce), for purposes of side
+ * effects, on successive items in the collection. Returns nil
+ */
+cljs.core.run_BANG_ = (function cljs$core$run_BANG_(proc,coll){
+cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p1__12555_SHARP_,p2__12554_SHARP_){
+return (proc.cljs$core$IFn$_invoke$arity$1 ? proc.cljs$core$IFn$_invoke$arity$1(p2__12554_SHARP_) : proc.call(null,p2__12554_SHARP_));
+}),null,coll);
+
+return null;
+});
+
+/**
+ * @interface
+ */
+cljs.core.IEncodeJS = function(){};
+
+/**
+ * Recursively transforms clj values to JavaScript
+ */
+cljs.core._clj__GT_js = (function cljs$core$_clj__GT_js(x){
+if((((!((x == null)))) && ((!((x.cljs$core$IEncodeJS$_clj__GT_js$arity$1 == null)))))){
+return x.cljs$core$IEncodeJS$_clj__GT_js$arity$1(x);
+} else {
+var x__8502__auto__ = (((x == null))?null:x);
+var m__8503__auto__ = (cljs.core._clj__GT_js[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto__.call(null,x));
+} else {
+var m__8503__auto____$1 = (cljs.core._clj__GT_js["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto____$1.call(null,x));
+} else {
+throw cljs.core.missing_protocol("IEncodeJS.-clj->js",x);
+}
+}
+}
+});
+
+/**
+ * Transforms map keys to valid JavaScript keys. Arbitrary keys are
+ * encoded to their string representation via (pr-str x)
+ */
+cljs.core._key__GT_js = (function cljs$core$_key__GT_js(x){
+if((((!((x == null)))) && ((!((x.cljs$core$IEncodeJS$_key__GT_js$arity$1 == null)))))){
+return x.cljs$core$IEncodeJS$_key__GT_js$arity$1(x);
+} else {
+var x__8502__auto__ = (((x == null))?null:x);
+var m__8503__auto__ = (cljs.core._key__GT_js[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto__.call(null,x));
+} else {
+var m__8503__auto____$1 = (cljs.core._key__GT_js["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(x) : m__8503__auto____$1.call(null,x));
+} else {
+throw cljs.core.missing_protocol("IEncodeJS.-key->js",x);
+}
+}
+}
+});
+
+cljs.core.key__GT_js = (function cljs$core$key__GT_js(var_args){
+var G__12557 = arguments.length;
+switch (G__12557) {
+case 1:
+return cljs.core.key__GT_js.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.key__GT_js.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.key__GT_js.cljs$core$IFn$_invoke$arity$1 = (function (k){
+return cljs.core.key__GT_js.cljs$core$IFn$_invoke$arity$2(k,cljs.core.clj__GT_js);
+});
+
+cljs.core.key__GT_js.cljs$core$IFn$_invoke$arity$2 = (function (k,primitive_fn){
+if((((!((k == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === k.cljs$core$IEncodeJS$))))?true:(((!k.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeJS,k):false)):cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeJS,k))){
+return cljs.core._clj__GT_js(k);
+} else {
+if(((typeof k === 'string') || (typeof k === 'number') || ((k instanceof cljs.core.Keyword)) || ((k instanceof cljs.core.Symbol)))){
+return (primitive_fn.cljs$core$IFn$_invoke$arity$1 ? primitive_fn.cljs$core$IFn$_invoke$arity$1(k) : primitive_fn.call(null,k));
+} else {
+return cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([k], 0));
+
+}
+}
+});
+
+cljs.core.key__GT_js.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Recursively transforms ClojureScript values to JavaScript.
+ * sets/vectors/lists become Arrays, Keywords and Symbol become Strings,
+ * Maps become Objects. Arbitrary keys are encoded to by `key->js`.
+ * Options is a key-value pair, where the only valid key is
+ * :keyword-fn, which should point to a single-argument function to be
+ * called on keyword keys. Default to `name`.
+ */
+cljs.core.clj__GT_js = (function cljs$core$clj__GT_js(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12611 = arguments.length;
+var i__9001__auto___12612 = (0);
+while(true){
+if((i__9001__auto___12612 < len__9000__auto___12611)){
+args__9010__auto__.push((arguments[i__9001__auto___12612]));
+
+var G__12613 = (i__9001__auto___12612 + (1));
+i__9001__auto___12612 = G__12613;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((1) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((1)),(0),null)):null);
+return cljs.core.clj__GT_js.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9011__auto__);
+});
+
+cljs.core.clj__GT_js.cljs$core$IFn$_invoke$arity$variadic = (function (x,p__12562){
+var map__12563 = p__12562;
+var map__12563__$1 = (((((!((map__12563 == null))))?(((((map__12563.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__12563.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__12563):map__12563);
+var options = map__12563__$1;
+var keyword_fn = cljs.core.get.cljs$core$IFn$_invoke$arity$3(map__12563__$1,new cljs.core.Keyword(null,"keyword-fn","keyword-fn",-64566675),cljs.core.name);
+var keyfn = ((function (map__12563,map__12563__$1,options,keyword_fn){
+return (function cljs$core$keyfn(k){
+return cljs.core.key__GT_js.cljs$core$IFn$_invoke$arity$2(k,thisfn);
+});})(map__12563,map__12563__$1,options,keyword_fn))
+;
+var thisfn = ((function (map__12563,map__12563__$1,options,keyword_fn){
+return (function cljs$core$thisfn(x__$1){
+if((x__$1 == null)){
+return null;
+} else {
+if((((!((x__$1 == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === x__$1.cljs$core$IEncodeJS$))))?true:(((!x__$1.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeJS,x__$1):false)):cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeJS,x__$1))){
+return cljs.core._clj__GT_js(x__$1);
+} else {
+if((x__$1 instanceof cljs.core.Keyword)){
+return (keyword_fn.cljs$core$IFn$_invoke$arity$1 ? keyword_fn.cljs$core$IFn$_invoke$arity$1(x__$1) : keyword_fn.call(null,x__$1));
+} else {
+if((x__$1 instanceof cljs.core.Symbol)){
+return cljs.core.str.cljs$core$IFn$_invoke$arity$1(x__$1);
+} else {
+if(cljs.core.map_QMARK_(x__$1)){
+var m = {};
+var seq__12591_12614 = cljs.core.seq(x__$1);
+var chunk__12592_12615 = null;
+var count__12593_12616 = (0);
+var i__12594_12617 = (0);
+while(true){
+if((i__12594_12617 < count__12593_12616)){
+var vec__12595_12618 = chunk__12592_12615.cljs$core$IIndexed$_nth$arity$2(null,i__12594_12617);
+var k_12619 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12595_12618,(0),null);
+var v_12620 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12595_12618,(1),null);
+var G__12598_12621 = m;
+var G__12599_12622 = keyfn(k_12619);
+var G__12600_12623 = cljs$core$thisfn(v_12620);
+goog.object.set(G__12598_12621,G__12599_12622,G__12600_12623);
+
+
+var G__12624 = seq__12591_12614;
+var G__12625 = chunk__12592_12615;
+var G__12626 = count__12593_12616;
+var G__12627 = (i__12594_12617 + (1));
+seq__12591_12614 = G__12624;
+chunk__12592_12615 = G__12625;
+count__12593_12616 = G__12626;
+i__12594_12617 = G__12627;
+continue;
+} else {
+var temp__4657__auto___12628 = cljs.core.seq(seq__12591_12614);
+if(temp__4657__auto___12628){
+var seq__12591_12629__$1 = temp__4657__auto___12628;
+if(cljs.core.chunked_seq_QMARK_(seq__12591_12629__$1)){
+var c__8664__auto___12630 = cljs.core.chunk_first(seq__12591_12629__$1);
+var G__12631 = cljs.core.chunk_rest(seq__12591_12629__$1);
+var G__12632 = c__8664__auto___12630;
+var G__12633 = cljs.core.count(c__8664__auto___12630);
+var G__12634 = (0);
+seq__12591_12614 = G__12631;
+chunk__12592_12615 = G__12632;
+count__12593_12616 = G__12633;
+i__12594_12617 = G__12634;
+continue;
+} else {
+var vec__12601_12635 = cljs.core.first(seq__12591_12629__$1);
+var k_12636 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12601_12635,(0),null);
+var v_12637 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12601_12635,(1),null);
+var G__12604_12638 = m;
+var G__12605_12639 = keyfn(k_12636);
+var G__12606_12640 = cljs$core$thisfn(v_12637);
+goog.object.set(G__12604_12638,G__12605_12639,G__12606_12640);
+
+
+var G__12641 = cljs.core.next(seq__12591_12629__$1);
+var G__12642 = null;
+var G__12643 = (0);
+var G__12644 = (0);
+seq__12591_12614 = G__12641;
+chunk__12592_12615 = G__12642;
+count__12593_12616 = G__12643;
+i__12594_12617 = G__12644;
+continue;
+}
+} else {
+}
+}
+break;
+}
+
+return m;
+} else {
+if(cljs.core.coll_QMARK_(x__$1)){
+var arr = [];
+var seq__12607_12645 = cljs.core.seq(cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs$core$thisfn,x__$1));
+var chunk__12608_12646 = null;
+var count__12609_12647 = (0);
+var i__12610_12648 = (0);
+while(true){
+if((i__12610_12648 < count__12609_12647)){
+var x_12649__$2 = chunk__12608_12646.cljs$core$IIndexed$_nth$arity$2(null,i__12610_12648);
+arr.push(x_12649__$2);
+
+
+var G__12650 = seq__12607_12645;
+var G__12651 = chunk__12608_12646;
+var G__12652 = count__12609_12647;
+var G__12653 = (i__12610_12648 + (1));
+seq__12607_12645 = G__12650;
+chunk__12608_12646 = G__12651;
+count__12609_12647 = G__12652;
+i__12610_12648 = G__12653;
+continue;
+} else {
+var temp__4657__auto___12654 = cljs.core.seq(seq__12607_12645);
+if(temp__4657__auto___12654){
+var seq__12607_12655__$1 = temp__4657__auto___12654;
+if(cljs.core.chunked_seq_QMARK_(seq__12607_12655__$1)){
+var c__8664__auto___12656 = cljs.core.chunk_first(seq__12607_12655__$1);
+var G__12657 = cljs.core.chunk_rest(seq__12607_12655__$1);
+var G__12658 = c__8664__auto___12656;
+var G__12659 = cljs.core.count(c__8664__auto___12656);
+var G__12660 = (0);
+seq__12607_12645 = G__12657;
+chunk__12608_12646 = G__12658;
+count__12609_12647 = G__12659;
+i__12610_12648 = G__12660;
+continue;
+} else {
+var x_12661__$2 = cljs.core.first(seq__12607_12655__$1);
+arr.push(x_12661__$2);
+
+
+var G__12662 = cljs.core.next(seq__12607_12655__$1);
+var G__12663 = null;
+var G__12664 = (0);
+var G__12665 = (0);
+seq__12607_12645 = G__12662;
+chunk__12608_12646 = G__12663;
+count__12609_12647 = G__12664;
+i__12610_12648 = G__12665;
+continue;
+}
+} else {
+}
+}
+break;
+}
+
+return arr;
+} else {
+return x__$1;
+
+}
+}
+}
+}
+}
+}
+});})(map__12563,map__12563__$1,options,keyword_fn))
+;
+return thisfn(x);
+});
+
+cljs.core.clj__GT_js.cljs$lang$maxFixedArity = (1);
+
+/** @this {Function} */
+cljs.core.clj__GT_js.cljs$lang$applyTo = (function (seq12560){
+var G__12561 = cljs.core.first(seq12560);
+var seq12560__$1 = cljs.core.next(seq12560);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12561,seq12560__$1);
+});
+
+
+/**
+ * @interface
+ */
+cljs.core.IEncodeClojure = function(){};
+
+/**
+ * Transforms JavaScript values to Clojure
+ */
+cljs.core._js__GT_clj = (function cljs$core$_js__GT_clj(x,options){
+if((((!((x == null)))) && ((!((x.cljs$core$IEncodeClojure$_js__GT_clj$arity$2 == null)))))){
+return x.cljs$core$IEncodeClojure$_js__GT_clj$arity$2(x,options);
+} else {
+var x__8502__auto__ = (((x == null))?null:x);
+var m__8503__auto__ = (cljs.core._js__GT_clj[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(x,options) : m__8503__auto__.call(null,x,options));
+} else {
+var m__8503__auto____$1 = (cljs.core._js__GT_clj["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(x,options) : m__8503__auto____$1.call(null,x,options));
+} else {
+throw cljs.core.missing_protocol("IEncodeClojure.-js->clj",x);
+}
+}
+}
+});
+
+/**
+ * Recursively transforms JavaScript arrays into ClojureScript
+ * vectors, and JavaScript objects into ClojureScript maps. With
+ * option ':keywordize-keys true' will convert object fields from
+ * strings to keywords.
+ */
+cljs.core.js__GT_clj = (function cljs$core$js__GT_clj(var_args){
+var G__12671 = arguments.length;
+switch (G__12671) {
+case 1:
+return cljs.core.js__GT_clj.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___12676 = arguments.length;
+var i__9001__auto___12677 = (0);
+while(true){
+if((i__9001__auto___12677 < len__9000__auto___12676)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___12677]));
+
+var G__12678 = (i__9001__auto___12677 + (1));
+i__9001__auto___12677 = G__12678;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((1)),(0),null));
+return cljs.core.js__GT_clj.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.js__GT_clj.cljs$core$IFn$_invoke$arity$1 = (function (x){
+return cljs.core.js__GT_clj.cljs$core$IFn$_invoke$arity$variadic(x,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"keywordize-keys","keywordize-keys",1310784252),false], 0));
+});
+
+cljs.core.js__GT_clj.cljs$core$IFn$_invoke$arity$variadic = (function (x,opts){
+var map__12672 = opts;
+var map__12672__$1 = (((((!((map__12672 == null))))?(((((map__12672.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__12672.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__12672):map__12672);
+var keywordize_keys = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__12672__$1,new cljs.core.Keyword(null,"keywordize-keys","keywordize-keys",1310784252));
+var keyfn = (cljs.core.truth_(keywordize_keys)?cljs.core.keyword:cljs.core.str);
+var f = ((function (map__12672,map__12672__$1,keywordize_keys,keyfn){
+return (function cljs$core$thisfn(x__$1){
+if((((!((x__$1 == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === x__$1.cljs$core$IEncodeClojure$))))?true:(((!x__$1.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeClojure,x__$1):false)):cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeClojure,x__$1))){
+return cljs.core._js__GT_clj(x__$1,cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.array_map,opts));
+} else {
+if(cljs.core.seq_QMARK_(x__$1)){
+return cljs.core.doall.cljs$core$IFn$_invoke$arity$1(cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs$core$thisfn,x__$1));
+} else {
+if(cljs.core.map_entry_QMARK_(x__$1)){
+return (new cljs.core.MapEntry(cljs$core$thisfn(cljs.core.key(x__$1)),cljs$core$thisfn(cljs.core.val(x__$1)),null));
+} else {
+if(cljs.core.coll_QMARK_(x__$1)){
+return cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.empty(x__$1),cljs.core.map.cljs$core$IFn$_invoke$arity$1(cljs$core$thisfn),x__$1);
+} else {
+if(cljs.core.array_QMARK_(x__$1)){
+return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (map__12672,map__12672__$1,keywordize_keys,keyfn){
+return (function (p1__12666_SHARP_,p2__12667_SHARP_){
+return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(p1__12666_SHARP_,cljs$core$thisfn(p2__12667_SHARP_));
+});})(map__12672,map__12672__$1,keywordize_keys,keyfn))
+,cljs.core.transient$(cljs.core.PersistentVector.EMPTY),x__$1));
+} else {
+if((cljs.core.type(x__$1) === Object)){
+return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (map__12672,map__12672__$1,keywordize_keys,keyfn){
+return (function (r,k){
+return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(r,(keyfn.cljs$core$IFn$_invoke$arity$1 ? keyfn.cljs$core$IFn$_invoke$arity$1(k) : keyfn.call(null,k)),cljs$core$thisfn(goog.object.get(x__$1,k)));
+});})(map__12672,map__12672__$1,keywordize_keys,keyfn))
+,cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),cljs.core.js_keys(x__$1)));
+} else {
+return x__$1;
+
+}
+}
+}
+}
+}
+}
+});})(map__12672,map__12672__$1,keywordize_keys,keyfn))
+;
+return f(x);
+});
+
+/** @this {Function} */
+cljs.core.js__GT_clj.cljs$lang$applyTo = (function (seq12669){
+var G__12670 = cljs.core.first(seq12669);
+var seq12669__$1 = cljs.core.next(seq12669);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12670,seq12669__$1);
+});
+
+cljs.core.js__GT_clj.cljs$lang$maxFixedArity = (1);
+
+/**
+ * Returns a memoized version of a referentially transparent function. The
+ * memoized version of the function keeps a cache of the mapping from arguments
+ * to results and, when calls with the same arguments are repeated often, has
+ * higher performance at the expense of higher memory use.
+ */
+cljs.core.memoize = (function cljs$core$memoize(f){
+var mem = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);
+return ((function (mem){
+return (function() {
+var G__12679__delegate = function (args){
+var v = cljs.core.get.cljs$core$IFn$_invoke$arity$3(cljs.core.deref(mem),args,cljs.core.lookup_sentinel);
+if((v === cljs.core.lookup_sentinel)){
+var ret = cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,args);
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(mem,cljs.core.assoc,args,ret);
+
+return ret;
+} else {
+return v;
+}
+};
+var G__12679 = function (var_args){
+var args = null;
+if (arguments.length > 0) {
+var G__12680__i = 0, G__12680__a = new Array(arguments.length - 0);
+while (G__12680__i < G__12680__a.length) {G__12680__a[G__12680__i] = arguments[G__12680__i + 0]; ++G__12680__i;}
+ args = new cljs.core.IndexedSeq(G__12680__a,0,null);
+}
+return G__12679__delegate.call(this,args);};
+G__12679.cljs$lang$maxFixedArity = 0;
+G__12679.cljs$lang$applyTo = (function (arglist__12681){
+var args = cljs.core.seq(arglist__12681);
+return G__12679__delegate(args);
+});
+G__12679.cljs$core$IFn$_invoke$arity$variadic = G__12679__delegate;
+return G__12679;
+})()
+;
+;})(mem))
+});
+/**
+ * trampoline can be used to convert algorithms requiring mutual
+ * recursion without stack consumption. Calls f with supplied args, if
+ * any. If f returns a fn, calls that fn with no arguments, and
+ * continues to repeat, until the return value is not a fn, then
+ * returns that non-fn value. Note that if you want to return a fn as a
+ * final value, you must wrap it in some data structure and unpack it
+ * after trampoline returns.
+ */
+cljs.core.trampoline = (function cljs$core$trampoline(var_args){
+var G__12685 = arguments.length;
+switch (G__12685) {
+case 1:
+return cljs.core.trampoline.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+var args_arr__9025__auto__ = [];
+var len__9000__auto___12687 = arguments.length;
+var i__9001__auto___12688 = (0);
+while(true){
+if((i__9001__auto___12688 < len__9000__auto___12687)){
+args_arr__9025__auto__.push((arguments[i__9001__auto___12688]));
+
+var G__12689 = (i__9001__auto___12688 + (1));
+i__9001__auto___12688 = G__12689;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9026__auto__ = (new cljs.core.IndexedSeq(args_arr__9025__auto__.slice((1)),(0),null));
+return cljs.core.trampoline.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9026__auto__);
+
+}
+});
+
+cljs.core.trampoline.cljs$core$IFn$_invoke$arity$1 = (function (f){
+while(true){
+var ret = (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
+if(cljs.core.fn_QMARK_(ret)){
+var G__12690 = ret;
+f = G__12690;
+continue;
+} else {
+return ret;
+}
+break;
+}
+});
+
+cljs.core.trampoline.cljs$core$IFn$_invoke$arity$variadic = (function (f,args){
+return cljs.core.trampoline.cljs$core$IFn$_invoke$arity$1((function (){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,args);
+}));
+});
+
+/** @this {Function} */
+cljs.core.trampoline.cljs$lang$applyTo = (function (seq12683){
+var G__12684 = cljs.core.first(seq12683);
+var seq12683__$1 = cljs.core.next(seq12683);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12684,seq12683__$1);
+});
+
+cljs.core.trampoline.cljs$lang$maxFixedArity = (1);
+
+/**
+ * Returns a random floating point number between 0 (inclusive) and
+ * n (default 1) (exclusive).
+ */
+cljs.core.rand = (function cljs$core$rand(var_args){
+var G__12692 = arguments.length;
+switch (G__12692) {
+case 0:
+return cljs.core.rand.cljs$core$IFn$_invoke$arity$0();
+
+break;
+case 1:
+return cljs.core.rand.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.rand.cljs$core$IFn$_invoke$arity$0 = (function (){
+return cljs.core.rand.cljs$core$IFn$_invoke$arity$1((1));
+});
+
+cljs.core.rand.cljs$core$IFn$_invoke$arity$1 = (function (n){
+return (Math.random() * n);
+});
+
+cljs.core.rand.cljs$lang$maxFixedArity = 1;
+
+/**
+ * Returns a random integer between 0 (inclusive) and n (exclusive).
+ */
+cljs.core.rand_int = (function cljs$core$rand_int(n){
+var G__12694 = (Math.random() * n);
+return Math.floor(G__12694);
+});
+/**
+ * Return a random element of the (sequential) collection. Will have
+ * the same performance characteristics as nth for the given
+ * collection.
+ */
+cljs.core.rand_nth = (function cljs$core$rand_nth(coll){
+return cljs.core.nth.cljs$core$IFn$_invoke$arity$2(coll,cljs.core.rand_int(cljs.core.count(coll)));
+});
+/**
+ * Returns a map of the elements of coll keyed by the result of
+ * f on each element. The value at each key will be a vector of the
+ * corresponding elements, in the order they appeared in coll.
+ */
+cljs.core.group_by = (function cljs$core$group_by(f,coll){
+return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret,x){
+var k = (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(x) : f.call(null,x));
+return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(ret,k,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(ret,k,cljs.core.PersistentVector.EMPTY),x));
+}),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),coll));
+});
+/**
+ * Creates a hierarchy object for use with derive, isa? etc.
+ */
+cljs.core.make_hierarchy = (function cljs$core$make_hierarchy(){
+return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"parents","parents",-2027538891),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"descendants","descendants",1824886031),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"ancestors","ancestors",-776045424),cljs.core.PersistentArrayMap.EMPTY], null);
+});
+/**
+ * @type {*}
+ */
+cljs.core._global_hierarchy = null;
+cljs.core.get_global_hierarchy = (function cljs$core$get_global_hierarchy(){
+if((cljs.core._global_hierarchy == null)){
+cljs.core._global_hierarchy = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.make_hierarchy());
+} else {
+}
+
+return cljs.core._global_hierarchy;
+});
+cljs.core.swap_global_hierarchy_BANG_ = (function cljs$core$swap_global_hierarchy_BANG_(var_args){
+var args__9010__auto__ = [];
+var len__9000__auto___12697 = arguments.length;
+var i__9001__auto___12698 = (0);
+while(true){
+if((i__9001__auto___12698 < len__9000__auto___12697)){
+args__9010__auto__.push((arguments[i__9001__auto___12698]));
+
+var G__12699 = (i__9001__auto___12698 + (1));
+i__9001__auto___12698 = G__12699;
+continue;
+} else {
+}
+break;
+}
+
+var argseq__9011__auto__ = ((((1) < args__9010__auto__.length))?(new cljs.core.IndexedSeq(args__9010__auto__.slice((1)),(0),null)):null);
+return cljs.core.swap_global_hierarchy_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__9011__auto__);
+});
+
+cljs.core.swap_global_hierarchy_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (f,args){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$4(cljs.core.swap_BANG_,cljs.core.get_global_hierarchy(),f,args);
+});
+
+cljs.core.swap_global_hierarchy_BANG_.cljs$lang$maxFixedArity = (1);
+
+/** @this {Function} */
+cljs.core.swap_global_hierarchy_BANG_.cljs$lang$applyTo = (function (seq12695){
+var G__12696 = cljs.core.first(seq12695);
+var seq12695__$1 = cljs.core.next(seq12695);
+var self__8987__auto__ = this;
+return self__8987__auto__.cljs$core$IFn$_invoke$arity$variadic(G__12696,seq12695__$1);
+});
+
+/**
+ * Returns true if (= child parent), or child is directly or indirectly derived from
+ * parent, either via a JavaScript type inheritance relationship or a
+ * relationship established via derive. h must be a hierarchy obtained
+ * from make-hierarchy, if not supplied defaults to the global
+ * hierarchy
+ */
+cljs.core.isa_QMARK_ = (function cljs$core$isa_QMARK_(var_args){
+var G__12701 = arguments.length;
+switch (G__12701) {
+case 2:
+return cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$2 = (function (child,parent){
+return cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$3(cljs.core.deref(cljs.core.get_global_hierarchy()),child,parent);
+});
+
+cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$3 = (function (h,child,parent){
+var or__7806__auto__ = cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(child,parent);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = cljs.core.contains_QMARK_((function (){var fexpr__12704 = new cljs.core.Keyword(null,"ancestors","ancestors",-776045424).cljs$core$IFn$_invoke$arity$1(h);
+return (fexpr__12704.cljs$core$IFn$_invoke$arity$1 ? fexpr__12704.cljs$core$IFn$_invoke$arity$1(child) : fexpr__12704.call(null,child));
+})(),parent);
+if(or__7806__auto____$1){
+return or__7806__auto____$1;
+} else {
+var and__7791__auto__ = cljs.core.vector_QMARK_(parent);
+if(and__7791__auto__){
+var and__7791__auto____$1 = cljs.core.vector_QMARK_(child);
+if(and__7791__auto____$1){
+var and__7791__auto____$2 = (cljs.core.count(parent) === cljs.core.count(child));
+if(and__7791__auto____$2){
+var ret = true;
+var i = (0);
+while(true){
+if((((!(ret))) || ((i === cljs.core.count(parent))))){
+return ret;
+} else {
+var G__12706 = cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$3(h,(child.cljs$core$IFn$_invoke$arity$1 ? child.cljs$core$IFn$_invoke$arity$1(i) : child.call(null,i)),(parent.cljs$core$IFn$_invoke$arity$1 ? parent.cljs$core$IFn$_invoke$arity$1(i) : parent.call(null,i)));
+var G__12707 = (i + (1));
+ret = G__12706;
+i = G__12707;
+continue;
+}
+break;
+}
+} else {
+return and__7791__auto____$2;
+}
+} else {
+return and__7791__auto____$1;
+}
+} else {
+return and__7791__auto__;
+}
+}
+}
+});
+
+cljs.core.isa_QMARK_.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Returns the immediate parents of tag, either via a JavaScript type
+ * inheritance relationship or a relationship established via derive. h
+ * must be a hierarchy obtained from make-hierarchy, if not supplied
+ * defaults to the global hierarchy
+ */
+cljs.core.parents = (function cljs$core$parents(var_args){
+var G__12709 = arguments.length;
+switch (G__12709) {
+case 1:
+return cljs.core.parents.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.parents.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.parents.cljs$core$IFn$_invoke$arity$1 = (function (tag){
+return cljs.core.parents.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(cljs.core.get_global_hierarchy()),tag);
+});
+
+cljs.core.parents.cljs$core$IFn$_invoke$arity$2 = (function (h,tag){
+return cljs.core.not_empty(cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"parents","parents",-2027538891).cljs$core$IFn$_invoke$arity$1(h),tag));
+});
+
+cljs.core.parents.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns the immediate and indirect parents of tag, either via a JavaScript type
+ * inheritance relationship or a relationship established via derive. h
+ * must be a hierarchy obtained from make-hierarchy, if not supplied
+ * defaults to the global hierarchy
+ */
+cljs.core.ancestors = (function cljs$core$ancestors(var_args){
+var G__12712 = arguments.length;
+switch (G__12712) {
+case 1:
+return cljs.core.ancestors.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.ancestors.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.ancestors.cljs$core$IFn$_invoke$arity$1 = (function (tag){
+return cljs.core.ancestors.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(cljs.core.get_global_hierarchy()),tag);
+});
+
+cljs.core.ancestors.cljs$core$IFn$_invoke$arity$2 = (function (h,tag){
+return cljs.core.not_empty(cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"ancestors","ancestors",-776045424).cljs$core$IFn$_invoke$arity$1(h),tag));
+});
+
+cljs.core.ancestors.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns the immediate and indirect children of tag, through a
+ * relationship established via derive. h must be a hierarchy obtained
+ * from make-hierarchy, if not supplied defaults to the global
+ * hierarchy. Note: does not work on JavaScript type inheritance
+ * relationships.
+ */
+cljs.core.descendants = (function cljs$core$descendants(var_args){
+var G__12715 = arguments.length;
+switch (G__12715) {
+case 1:
+return cljs.core.descendants.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.descendants.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.descendants.cljs$core$IFn$_invoke$arity$1 = (function (tag){
+return cljs.core.descendants.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(cljs.core.get_global_hierarchy()),tag);
+});
+
+cljs.core.descendants.cljs$core$IFn$_invoke$arity$2 = (function (h,tag){
+return cljs.core.not_empty(cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"descendants","descendants",1824886031).cljs$core$IFn$_invoke$arity$1(h),tag));
+});
+
+cljs.core.descendants.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Establishes a parent/child relationship between parent and
+ * tag. Parent must be a namespace-qualified symbol or keyword and
+ * child can be either a namespace-qualified symbol or keyword or a
+ * class. h must be a hierarchy obtained from make-hierarchy, if not
+ * supplied defaults to, and modifies, the global hierarchy.
+ */
+cljs.core.derive = (function cljs$core$derive(var_args){
+var G__12718 = arguments.length;
+switch (G__12718) {
+case 2:
+return cljs.core.derive.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.derive.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.derive.cljs$core$IFn$_invoke$arity$2 = (function (tag,parent){
+if(cljs.core.truth_(cljs.core.namespace(parent))){
+} else {
+throw (new Error("Assert failed: (namespace parent)"));
+}
+
+cljs.core.swap_global_hierarchy_BANG_.cljs$core$IFn$_invoke$arity$variadic(cljs.core.derive,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([tag,parent], 0));
+
+return null;
+});
+
+cljs.core.derive.cljs$core$IFn$_invoke$arity$3 = (function (h,tag,parent){
+if(cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(tag,parent)){
+} else {
+throw (new Error("Assert failed: (not= tag parent)"));
+}
+
+var tp = new cljs.core.Keyword(null,"parents","parents",-2027538891).cljs$core$IFn$_invoke$arity$1(h);
+var td = new cljs.core.Keyword(null,"descendants","descendants",1824886031).cljs$core$IFn$_invoke$arity$1(h);
+var ta = new cljs.core.Keyword(null,"ancestors","ancestors",-776045424).cljs$core$IFn$_invoke$arity$1(h);
+var tf = ((function (tp,td,ta){
+return (function (m,source,sources,target,targets){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (tp,td,ta){
+return (function (ret,k){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(ret,k,cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.conj,cljs.core.get.cljs$core$IFn$_invoke$arity$3(targets,k,cljs.core.PersistentHashSet.EMPTY),cljs.core.cons(target,(targets.cljs$core$IFn$_invoke$arity$1 ? targets.cljs$core$IFn$_invoke$arity$1(target) : targets.call(null,target)))));
+});})(tp,td,ta))
+,m,cljs.core.cons(source,(sources.cljs$core$IFn$_invoke$arity$1 ? sources.cljs$core$IFn$_invoke$arity$1(source) : sources.call(null,source))));
+});})(tp,td,ta))
+;
+var or__7806__auto__ = ((cljs.core.contains_QMARK_((tp.cljs$core$IFn$_invoke$arity$1 ? tp.cljs$core$IFn$_invoke$arity$1(tag) : tp.call(null,tag)),parent))?null:(function (){
+if(cljs.core.contains_QMARK_((ta.cljs$core$IFn$_invoke$arity$1 ? ta.cljs$core$IFn$_invoke$arity$1(tag) : ta.call(null,tag)),parent)){
+throw (new Error([cljs.core.str.cljs$core$IFn$_invoke$arity$1(tag),"already has",cljs.core.str.cljs$core$IFn$_invoke$arity$1(parent),"as ancestor"].join('')));
+} else {
+}
+
+if(cljs.core.contains_QMARK_((ta.cljs$core$IFn$_invoke$arity$1 ? ta.cljs$core$IFn$_invoke$arity$1(parent) : ta.call(null,parent)),tag)){
+throw (new Error(["Cyclic derivation:",cljs.core.str.cljs$core$IFn$_invoke$arity$1(parent),"has",cljs.core.str.cljs$core$IFn$_invoke$arity$1(tag),"as ancestor"].join('')));
+} else {
+}
+
+return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"parents","parents",-2027538891),cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.Keyword(null,"parents","parents",-2027538891).cljs$core$IFn$_invoke$arity$1(h),tag,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(tp,tag,cljs.core.PersistentHashSet.EMPTY),parent)),new cljs.core.Keyword(null,"ancestors","ancestors",-776045424),tf(new cljs.core.Keyword(null,"ancestors","ancestors",-776045424).cljs$core$IFn$_invoke$arity$1(h),tag,td,parent,ta),new cljs.core.Keyword(null,"descendants","descendants",1824886031),tf(new cljs.core.Keyword(null,"descendants","descendants",1824886031).cljs$core$IFn$_invoke$arity$1(h),parent,ta,tag,td)], null);
+})()
+);
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return h;
+}
+});
+
+cljs.core.derive.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Removes a parent/child relationship between parent and
+ * tag. h must be a hierarchy obtained from make-hierarchy, if not
+ * supplied defaults to, and modifies, the global hierarchy.
+ */
+cljs.core.underive = (function cljs$core$underive(var_args){
+var G__12724 = arguments.length;
+switch (G__12724) {
+case 2:
+return cljs.core.underive.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.underive.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.underive.cljs$core$IFn$_invoke$arity$2 = (function (tag,parent){
+cljs.core.swap_global_hierarchy_BANG_.cljs$core$IFn$_invoke$arity$variadic(cljs.core.underive,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([tag,parent], 0));
+
+return null;
+});
+
+cljs.core.underive.cljs$core$IFn$_invoke$arity$3 = (function (h,tag,parent){
+var parentMap = new cljs.core.Keyword(null,"parents","parents",-2027538891).cljs$core$IFn$_invoke$arity$1(h);
+var childsParents = (cljs.core.truth_((parentMap.cljs$core$IFn$_invoke$arity$1 ? parentMap.cljs$core$IFn$_invoke$arity$1(tag) : parentMap.call(null,tag)))?cljs.core.disj.cljs$core$IFn$_invoke$arity$2((parentMap.cljs$core$IFn$_invoke$arity$1 ? parentMap.cljs$core$IFn$_invoke$arity$1(tag) : parentMap.call(null,tag)),parent):cljs.core.PersistentHashSet.EMPTY);
+var newParents = (cljs.core.truth_(cljs.core.not_empty(childsParents))?cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(parentMap,tag,childsParents):cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(parentMap,tag));
+var deriv_seq = cljs.core.flatten(cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (parentMap,childsParents,newParents){
+return (function (p1__12720_SHARP_){
+return cljs.core.cons(cljs.core.first(p1__12720_SHARP_),cljs.core.interpose.cljs$core$IFn$_invoke$arity$2(cljs.core.first(p1__12720_SHARP_),cljs.core.second(p1__12720_SHARP_)));
+});})(parentMap,childsParents,newParents))
+,cljs.core.seq(newParents)));
+if(cljs.core.contains_QMARK_((parentMap.cljs$core$IFn$_invoke$arity$1 ? parentMap.cljs$core$IFn$_invoke$arity$1(tag) : parentMap.call(null,tag)),parent)){
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (parentMap,childsParents,newParents,deriv_seq){
+return (function (p1__12721_SHARP_,p2__12722_SHARP_){
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(cljs.core.derive,p1__12721_SHARP_,p2__12722_SHARP_);
+});})(parentMap,childsParents,newParents,deriv_seq))
+,cljs.core.make_hierarchy(),cljs.core.partition.cljs$core$IFn$_invoke$arity$2((2),deriv_seq));
+} else {
+return h;
+}
+});
+
+cljs.core.underive.cljs$lang$maxFixedArity = 3;
+
+cljs.core.reset_cache = (function cljs$core$reset_cache(method_cache,method_table,cached_hierarchy,hierarchy){
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(method_cache,(function (_){
+return cljs.core.deref(method_table);
+}));
+
+return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(cached_hierarchy,(function (_){
+return cljs.core.deref(hierarchy);
+}));
+});
+cljs.core.prefers_STAR_ = (function cljs$core$prefers_STAR_(x,y,prefer_table){
+var xprefs = (function (){var fexpr__12726 = cljs.core.deref(prefer_table);
+return (fexpr__12726.cljs$core$IFn$_invoke$arity$1 ? fexpr__12726.cljs$core$IFn$_invoke$arity$1(x) : fexpr__12726.call(null,x));
+})();
+var or__7806__auto__ = (cljs.core.truth_((function (){var and__7791__auto__ = xprefs;
+if(cljs.core.truth_(and__7791__auto__)){
+return (xprefs.cljs$core$IFn$_invoke$arity$1 ? xprefs.cljs$core$IFn$_invoke$arity$1(y) : xprefs.call(null,y));
+} else {
+return and__7791__auto__;
+}
+})())?true:null);
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+var or__7806__auto____$1 = (function (){var ps = cljs.core.parents.cljs$core$IFn$_invoke$arity$1(y);
+while(true){
+if((cljs.core.count(ps) > (0))){
+if(cljs.core.truth_((function (){var G__12730 = x;
+var G__12731 = cljs.core.first(ps);
+var G__12732 = prefer_table;
+return (cljs.core.prefers_STAR_.cljs$core$IFn$_invoke$arity$3 ? cljs.core.prefers_STAR_.cljs$core$IFn$_invoke$arity$3(G__12730,G__12731,G__12732) : cljs.core.prefers_STAR_.call(null,G__12730,G__12731,G__12732));
+})())){
+} else {
+}
+
+var G__12739 = cljs.core.rest(ps);
+ps = G__12739;
+continue;
+} else {
+return null;
+}
+break;
+}
+})();
+if(cljs.core.truth_(or__7806__auto____$1)){
+return or__7806__auto____$1;
+} else {
+var or__7806__auto____$2 = (function (){var ps = cljs.core.parents.cljs$core$IFn$_invoke$arity$1(x);
+while(true){
+if((cljs.core.count(ps) > (0))){
+if(cljs.core.truth_((function (){var G__12736 = cljs.core.first(ps);
+var G__12737 = y;
+var G__12738 = prefer_table;
+return (cljs.core.prefers_STAR_.cljs$core$IFn$_invoke$arity$3 ? cljs.core.prefers_STAR_.cljs$core$IFn$_invoke$arity$3(G__12736,G__12737,G__12738) : cljs.core.prefers_STAR_.call(null,G__12736,G__12737,G__12738));
+})())){
+} else {
+}
+
+var G__12740 = cljs.core.rest(ps);
+ps = G__12740;
+continue;
+} else {
+return null;
+}
+break;
+}
+})();
+if(cljs.core.truth_(or__7806__auto____$2)){
+return or__7806__auto____$2;
+} else {
+return false;
+}
+}
+}
+});
+cljs.core.dominates = (function cljs$core$dominates(x,y,prefer_table,hierarchy){
+var or__7806__auto__ = cljs.core.prefers_STAR_(x,y,prefer_table);
+if(cljs.core.truth_(or__7806__auto__)){
+return or__7806__auto__;
+} else {
+return cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$3(hierarchy,x,y);
+}
+});
+cljs.core.find_and_cache_best_method = (function cljs$core$find_and_cache_best_method(name,dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy,default_dispatch_val){
+var best_entry = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (be,p__12741){
+var vec__12742 = p__12741;
+var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12742,(0),null);
+var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12742,(1),null);
+var e = vec__12742;
+if(cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$3(cljs.core.deref(hierarchy),dispatch_val,k)){
+var be2 = (cljs.core.truth_((function (){var or__7806__auto__ = (be == null);
+if(or__7806__auto__){
+return or__7806__auto__;
+} else {
+return cljs.core.dominates(k,cljs.core.first(be),prefer_table,cljs.core.deref(hierarchy));
+}
+})())?e:be);
+if(cljs.core.truth_(cljs.core.dominates(cljs.core.first(be2),k,prefer_table,cljs.core.deref(hierarchy)))){
+} else {
+throw (new Error(["Multiple methods in multimethod '",cljs.core.str.cljs$core$IFn$_invoke$arity$1(name),"' match dispatch value: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(dispatch_val)," -> ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(k)," and ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.first(be2)),", and neither is preferred"].join('')));
+}
+
+return be2;
+} else {
+return be;
+}
+}),null,cljs.core.deref(method_table));
+var best_entry__$1 = (function (){var temp__4655__auto__ = (function (){var and__7791__auto__ = (best_entry == null);
+if(and__7791__auto__){
+var fexpr__12746 = cljs.core.deref(method_table);
+return (fexpr__12746.cljs$core$IFn$_invoke$arity$1 ? fexpr__12746.cljs$core$IFn$_invoke$arity$1(default_dispatch_val) : fexpr__12746.call(null,default_dispatch_val));
+} else {
+return and__7791__auto__;
+}
+})();
+if(cljs.core.truth_(temp__4655__auto__)){
+var entry = temp__4655__auto__;
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [default_dispatch_val,entry], null);
+} else {
+return best_entry;
+}
+})();
+if(cljs.core.truth_(best_entry__$1)){
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(cached_hierarchy),cljs.core.deref(hierarchy))){
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(method_cache,cljs.core.assoc,dispatch_val,cljs.core.second(best_entry__$1));
+
+return cljs.core.second(best_entry__$1);
+} else {
+cljs.core.reset_cache(method_cache,method_table,cached_hierarchy,hierarchy);
+
+return (cljs.core.find_and_cache_best_method.cljs$core$IFn$_invoke$arity$8 ? cljs.core.find_and_cache_best_method.cljs$core$IFn$_invoke$arity$8(name,dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy,default_dispatch_val) : cljs.core.find_and_cache_best_method.call(null,name,dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy,default_dispatch_val));
+}
+} else {
+return null;
+}
+});
+
+/**
+ * @interface
+ */
+cljs.core.IMultiFn = function(){};
+
+cljs.core._reset = (function cljs$core$_reset(mf){
+if((((!((mf == null)))) && ((!((mf.cljs$core$IMultiFn$_reset$arity$1 == null)))))){
+return mf.cljs$core$IMultiFn$_reset$arity$1(mf);
+} else {
+var x__8502__auto__ = (((mf == null))?null:mf);
+var m__8503__auto__ = (cljs.core._reset[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto__.call(null,mf));
+} else {
+var m__8503__auto____$1 = (cljs.core._reset["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto____$1.call(null,mf));
+} else {
+throw cljs.core.missing_protocol("IMultiFn.-reset",mf);
+}
+}
+}
+});
+
+cljs.core._add_method = (function cljs$core$_add_method(mf,dispatch_val,method){
+if((((!((mf == null)))) && ((!((mf.cljs$core$IMultiFn$_add_method$arity$3 == null)))))){
+return mf.cljs$core$IMultiFn$_add_method$arity$3(mf,dispatch_val,method);
+} else {
+var x__8502__auto__ = (((mf == null))?null:mf);
+var m__8503__auto__ = (cljs.core._add_method[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(mf,dispatch_val,method) : m__8503__auto__.call(null,mf,dispatch_val,method));
+} else {
+var m__8503__auto____$1 = (cljs.core._add_method["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(mf,dispatch_val,method) : m__8503__auto____$1.call(null,mf,dispatch_val,method));
+} else {
+throw cljs.core.missing_protocol("IMultiFn.-add-method",mf);
+}
+}
+}
+});
+
+cljs.core._remove_method = (function cljs$core$_remove_method(mf,dispatch_val){
+if((((!((mf == null)))) && ((!((mf.cljs$core$IMultiFn$_remove_method$arity$2 == null)))))){
+return mf.cljs$core$IMultiFn$_remove_method$arity$2(mf,dispatch_val);
+} else {
+var x__8502__auto__ = (((mf == null))?null:mf);
+var m__8503__auto__ = (cljs.core._remove_method[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(mf,dispatch_val) : m__8503__auto__.call(null,mf,dispatch_val));
+} else {
+var m__8503__auto____$1 = (cljs.core._remove_method["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(mf,dispatch_val) : m__8503__auto____$1.call(null,mf,dispatch_val));
+} else {
+throw cljs.core.missing_protocol("IMultiFn.-remove-method",mf);
+}
+}
+}
+});
+
+cljs.core._prefer_method = (function cljs$core$_prefer_method(mf,dispatch_val,dispatch_val_y){
+if((((!((mf == null)))) && ((!((mf.cljs$core$IMultiFn$_prefer_method$arity$3 == null)))))){
+return mf.cljs$core$IMultiFn$_prefer_method$arity$3(mf,dispatch_val,dispatch_val_y);
+} else {
+var x__8502__auto__ = (((mf == null))?null:mf);
+var m__8503__auto__ = (cljs.core._prefer_method[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$3(mf,dispatch_val,dispatch_val_y) : m__8503__auto__.call(null,mf,dispatch_val,dispatch_val_y));
+} else {
+var m__8503__auto____$1 = (cljs.core._prefer_method["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$3(mf,dispatch_val,dispatch_val_y) : m__8503__auto____$1.call(null,mf,dispatch_val,dispatch_val_y));
+} else {
+throw cljs.core.missing_protocol("IMultiFn.-prefer-method",mf);
+}
+}
+}
+});
+
+cljs.core._get_method = (function cljs$core$_get_method(mf,dispatch_val){
+if((((!((mf == null)))) && ((!((mf.cljs$core$IMultiFn$_get_method$arity$2 == null)))))){
+return mf.cljs$core$IMultiFn$_get_method$arity$2(mf,dispatch_val);
+} else {
+var x__8502__auto__ = (((mf == null))?null:mf);
+var m__8503__auto__ = (cljs.core._get_method[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$2(mf,dispatch_val) : m__8503__auto__.call(null,mf,dispatch_val));
+} else {
+var m__8503__auto____$1 = (cljs.core._get_method["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$2(mf,dispatch_val) : m__8503__auto____$1.call(null,mf,dispatch_val));
+} else {
+throw cljs.core.missing_protocol("IMultiFn.-get-method",mf);
+}
+}
+}
+});
+
+cljs.core._methods = (function cljs$core$_methods(mf){
+if((((!((mf == null)))) && ((!((mf.cljs$core$IMultiFn$_methods$arity$1 == null)))))){
+return mf.cljs$core$IMultiFn$_methods$arity$1(mf);
+} else {
+var x__8502__auto__ = (((mf == null))?null:mf);
+var m__8503__auto__ = (cljs.core._methods[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto__.call(null,mf));
+} else {
+var m__8503__auto____$1 = (cljs.core._methods["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto____$1.call(null,mf));
+} else {
+throw cljs.core.missing_protocol("IMultiFn.-methods",mf);
+}
+}
+}
+});
+
+cljs.core._prefers = (function cljs$core$_prefers(mf){
+if((((!((mf == null)))) && ((!((mf.cljs$core$IMultiFn$_prefers$arity$1 == null)))))){
+return mf.cljs$core$IMultiFn$_prefers$arity$1(mf);
+} else {
+var x__8502__auto__ = (((mf == null))?null:mf);
+var m__8503__auto__ = (cljs.core._prefers[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto__.call(null,mf));
+} else {
+var m__8503__auto____$1 = (cljs.core._prefers["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto____$1.call(null,mf));
+} else {
+throw cljs.core.missing_protocol("IMultiFn.-prefers",mf);
+}
+}
+}
+});
+
+cljs.core._default_dispatch_val = (function cljs$core$_default_dispatch_val(mf){
+if((((!((mf == null)))) && ((!((mf.cljs$core$IMultiFn$_default_dispatch_val$arity$1 == null)))))){
+return mf.cljs$core$IMultiFn$_default_dispatch_val$arity$1(mf);
+} else {
+var x__8502__auto__ = (((mf == null))?null:mf);
+var m__8503__auto__ = (cljs.core._default_dispatch_val[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto__.call(null,mf));
+} else {
+var m__8503__auto____$1 = (cljs.core._default_dispatch_val["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto____$1.call(null,mf));
+} else {
+throw cljs.core.missing_protocol("IMultiFn.-default-dispatch-val",mf);
+}
+}
+}
+});
+
+cljs.core._dispatch_fn = (function cljs$core$_dispatch_fn(mf){
+if((((!((mf == null)))) && ((!((mf.cljs$core$IMultiFn$_dispatch_fn$arity$1 == null)))))){
+return mf.cljs$core$IMultiFn$_dispatch_fn$arity$1(mf);
+} else {
+var x__8502__auto__ = (((mf == null))?null:mf);
+var m__8503__auto__ = (cljs.core._dispatch_fn[goog.typeOf(x__8502__auto__)]);
+if((!((m__8503__auto__ == null)))){
+return (m__8503__auto__.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto__.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto__.call(null,mf));
+} else {
+var m__8503__auto____$1 = (cljs.core._dispatch_fn["_"]);
+if((!((m__8503__auto____$1 == null)))){
+return (m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1 ? m__8503__auto____$1.cljs$core$IFn$_invoke$arity$1(mf) : m__8503__auto____$1.call(null,mf));
+} else {
+throw cljs.core.missing_protocol("IMultiFn.-dispatch-fn",mf);
+}
+}
+}
+});
+
+cljs.core.throw_no_method_error = (function cljs$core$throw_no_method_error(name,dispatch_val){
+throw (new Error(["No method in multimethod '",cljs.core.str.cljs$core$IFn$_invoke$arity$1(name),"' for dispatch value: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(dispatch_val)].join('')));
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IFn}
+ * @implements {cljs.core.IMultiFn}
+ * @implements {cljs.core.INamed}
+*/
+cljs.core.MultiFn = (function (name,dispatch_fn,default_dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy){
+this.name = name;
+this.dispatch_fn = dispatch_fn;
+this.default_dispatch_val = default_dispatch_val;
+this.hierarchy = hierarchy;
+this.method_table = method_table;
+this.prefer_table = prefer_table;
+this.method_cache = method_cache;
+this.cached_hierarchy = cached_hierarchy;
+this.cljs$lang$protocol_mask$partition0$ = 4194305;
+this.cljs$lang$protocol_mask$partition1$ = 4352;
+});
+cljs.core.MultiFn.prototype.call = (function() {
+var G__12749 = null;
+var G__12749__1 = (function (self__){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$0 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$0() : self__.dispatch_fn.call(null));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$0 ? target_fn.cljs$core$IFn$_invoke$arity$0() : target_fn.call(null));
+});
+var G__12749__2 = (function (self__,a){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$1 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$1(a) : self__.dispatch_fn.call(null,a));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$1 ? target_fn.cljs$core$IFn$_invoke$arity$1(a) : target_fn.call(null,a));
+});
+var G__12749__3 = (function (self__,a,b){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$2 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$2(a,b) : self__.dispatch_fn.call(null,a,b));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$2 ? target_fn.cljs$core$IFn$_invoke$arity$2(a,b) : target_fn.call(null,a,b));
+});
+var G__12749__4 = (function (self__,a,b,c){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$3 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$3(a,b,c) : self__.dispatch_fn.call(null,a,b,c));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$3 ? target_fn.cljs$core$IFn$_invoke$arity$3(a,b,c) : target_fn.call(null,a,b,c));
+});
+var G__12749__5 = (function (self__,a,b,c,d){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$4 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$4(a,b,c,d) : self__.dispatch_fn.call(null,a,b,c,d));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$4 ? target_fn.cljs$core$IFn$_invoke$arity$4(a,b,c,d) : target_fn.call(null,a,b,c,d));
+});
+var G__12749__6 = (function (self__,a,b,c,d,e){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$5 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$5(a,b,c,d,e) : self__.dispatch_fn.call(null,a,b,c,d,e));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$5 ? target_fn.cljs$core$IFn$_invoke$arity$5(a,b,c,d,e) : target_fn.call(null,a,b,c,d,e));
+});
+var G__12749__7 = (function (self__,a,b,c,d,e,f){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$6 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$6(a,b,c,d,e,f) : self__.dispatch_fn.call(null,a,b,c,d,e,f));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$6 ? target_fn.cljs$core$IFn$_invoke$arity$6(a,b,c,d,e,f) : target_fn.call(null,a,b,c,d,e,f));
+});
+var G__12749__8 = (function (self__,a,b,c,d,e,f,g){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$7 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$7(a,b,c,d,e,f,g) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$7 ? target_fn.cljs$core$IFn$_invoke$arity$7(a,b,c,d,e,f,g) : target_fn.call(null,a,b,c,d,e,f,g));
+});
+var G__12749__9 = (function (self__,a,b,c,d,e,f,g,h){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$8 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$8(a,b,c,d,e,f,g,h) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$8 ? target_fn.cljs$core$IFn$_invoke$arity$8(a,b,c,d,e,f,g,h) : target_fn.call(null,a,b,c,d,e,f,g,h));
+});
+var G__12749__10 = (function (self__,a,b,c,d,e,f,g,h,i){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$9 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$9(a,b,c,d,e,f,g,h,i) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$9 ? target_fn.cljs$core$IFn$_invoke$arity$9(a,b,c,d,e,f,g,h,i) : target_fn.call(null,a,b,c,d,e,f,g,h,i));
+});
+var G__12749__11 = (function (self__,a,b,c,d,e,f,g,h,i,j){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$10 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$10(a,b,c,d,e,f,g,h,i,j) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$10 ? target_fn.cljs$core$IFn$_invoke$arity$10(a,b,c,d,e,f,g,h,i,j) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j));
+});
+var G__12749__12 = (function (self__,a,b,c,d,e,f,g,h,i,j,k){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$11 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$11(a,b,c,d,e,f,g,h,i,j,k) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$11 ? target_fn.cljs$core$IFn$_invoke$arity$11(a,b,c,d,e,f,g,h,i,j,k) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k));
+});
+var G__12749__13 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$12 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$12(a,b,c,d,e,f,g,h,i,j,k,l) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$12 ? target_fn.cljs$core$IFn$_invoke$arity$12(a,b,c,d,e,f,g,h,i,j,k,l) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l));
+});
+var G__12749__14 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$13 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$13(a,b,c,d,e,f,g,h,i,j,k,l,m) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$13 ? target_fn.cljs$core$IFn$_invoke$arity$13(a,b,c,d,e,f,g,h,i,j,k,l,m) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m));
+});
+var G__12749__15 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$14 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$14 ? target_fn.cljs$core$IFn$_invoke$arity$14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+});
+var G__12749__16 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$15 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$15 ? target_fn.cljs$core$IFn$_invoke$arity$15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+});
+var G__12749__17 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$16 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$16 ? target_fn.cljs$core$IFn$_invoke$arity$16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+});
+var G__12749__18 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$17 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$17(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$17 ? target_fn.cljs$core$IFn$_invoke$arity$17(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+});
+var G__12749__19 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$18 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$18(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$18 ? target_fn.cljs$core$IFn$_invoke$arity$18(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+});
+var G__12749__20 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$19 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$19(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$19 ? target_fn.cljs$core$IFn$_invoke$arity$19(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+});
+var G__12749__21 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$20 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$20 ? target_fn.cljs$core$IFn$_invoke$arity$20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+});
+var G__12749__22 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+var self__ = this;
+var self____$1 = this;
+var mf = self____$1;
+var dispatch_val = cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(self__.dispatch_fn,a,b,c,d,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(target_fn,a,b,c,d,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
+});
+G__12749 = function(self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+switch(arguments.length){
+case 1:
+return G__12749__1.call(this,self__);
+case 2:
+return G__12749__2.call(this,self__,a);
+case 3:
+return G__12749__3.call(this,self__,a,b);
+case 4:
+return G__12749__4.call(this,self__,a,b,c);
+case 5:
+return G__12749__5.call(this,self__,a,b,c,d);
+case 6:
+return G__12749__6.call(this,self__,a,b,c,d,e);
+case 7:
+return G__12749__7.call(this,self__,a,b,c,d,e,f);
+case 8:
+return G__12749__8.call(this,self__,a,b,c,d,e,f,g);
+case 9:
+return G__12749__9.call(this,self__,a,b,c,d,e,f,g,h);
+case 10:
+return G__12749__10.call(this,self__,a,b,c,d,e,f,g,h,i);
+case 11:
+return G__12749__11.call(this,self__,a,b,c,d,e,f,g,h,i,j);
+case 12:
+return G__12749__12.call(this,self__,a,b,c,d,e,f,g,h,i,j,k);
+case 13:
+return G__12749__13.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l);
+case 14:
+return G__12749__14.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m);
+case 15:
+return G__12749__15.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
+case 16:
+return G__12749__16.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
+case 17:
+return G__12749__17.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
+case 18:
+return G__12749__18.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
+case 19:
+return G__12749__19.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
+case 20:
+return G__12749__20.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
+case 21:
+return G__12749__21.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
+case 22:
+return G__12749__22.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
+}
+throw(new Error('Invalid arity: ' + (arguments.length - 1)));
+};
+G__12749.cljs$core$IFn$_invoke$arity$1 = G__12749__1;
+G__12749.cljs$core$IFn$_invoke$arity$2 = G__12749__2;
+G__12749.cljs$core$IFn$_invoke$arity$3 = G__12749__3;
+G__12749.cljs$core$IFn$_invoke$arity$4 = G__12749__4;
+G__12749.cljs$core$IFn$_invoke$arity$5 = G__12749__5;
+G__12749.cljs$core$IFn$_invoke$arity$6 = G__12749__6;
+G__12749.cljs$core$IFn$_invoke$arity$7 = G__12749__7;
+G__12749.cljs$core$IFn$_invoke$arity$8 = G__12749__8;
+G__12749.cljs$core$IFn$_invoke$arity$9 = G__12749__9;
+G__12749.cljs$core$IFn$_invoke$arity$10 = G__12749__10;
+G__12749.cljs$core$IFn$_invoke$arity$11 = G__12749__11;
+G__12749.cljs$core$IFn$_invoke$arity$12 = G__12749__12;
+G__12749.cljs$core$IFn$_invoke$arity$13 = G__12749__13;
+G__12749.cljs$core$IFn$_invoke$arity$14 = G__12749__14;
+G__12749.cljs$core$IFn$_invoke$arity$15 = G__12749__15;
+G__12749.cljs$core$IFn$_invoke$arity$16 = G__12749__16;
+G__12749.cljs$core$IFn$_invoke$arity$17 = G__12749__17;
+G__12749.cljs$core$IFn$_invoke$arity$18 = G__12749__18;
+G__12749.cljs$core$IFn$_invoke$arity$19 = G__12749__19;
+G__12749.cljs$core$IFn$_invoke$arity$20 = G__12749__20;
+G__12749.cljs$core$IFn$_invoke$arity$21 = G__12749__21;
+G__12749.cljs$core$IFn$_invoke$arity$22 = G__12749__22;
+return G__12749;
+})()
+;
+
+cljs.core.MultiFn.prototype.apply = (function (self__,args12747){
+var self__ = this;
+var self____$1 = this;
+return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12747)));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$0 = (function (){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$0 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$0() : self__.dispatch_fn.call(null));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$0 ? target_fn.cljs$core$IFn$_invoke$arity$0() : target_fn.call(null));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$1 = (function (a){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$1 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$1(a) : self__.dispatch_fn.call(null,a));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$1 ? target_fn.cljs$core$IFn$_invoke$arity$1(a) : target_fn.call(null,a));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$2 = (function (a,b){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$2 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$2(a,b) : self__.dispatch_fn.call(null,a,b));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$2 ? target_fn.cljs$core$IFn$_invoke$arity$2(a,b) : target_fn.call(null,a,b));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$3 = (function (a,b,c){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$3 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$3(a,b,c) : self__.dispatch_fn.call(null,a,b,c));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$3 ? target_fn.cljs$core$IFn$_invoke$arity$3(a,b,c) : target_fn.call(null,a,b,c));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$4 = (function (a,b,c,d){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$4 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$4(a,b,c,d) : self__.dispatch_fn.call(null,a,b,c,d));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$4 ? target_fn.cljs$core$IFn$_invoke$arity$4(a,b,c,d) : target_fn.call(null,a,b,c,d));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$5 = (function (a,b,c,d,e){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$5 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$5(a,b,c,d,e) : self__.dispatch_fn.call(null,a,b,c,d,e));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$5 ? target_fn.cljs$core$IFn$_invoke$arity$5(a,b,c,d,e) : target_fn.call(null,a,b,c,d,e));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$6 = (function (a,b,c,d,e,f){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$6 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$6(a,b,c,d,e,f) : self__.dispatch_fn.call(null,a,b,c,d,e,f));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$6 ? target_fn.cljs$core$IFn$_invoke$arity$6(a,b,c,d,e,f) : target_fn.call(null,a,b,c,d,e,f));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$7 = (function (a,b,c,d,e,f,g){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$7 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$7(a,b,c,d,e,f,g) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$7 ? target_fn.cljs$core$IFn$_invoke$arity$7(a,b,c,d,e,f,g) : target_fn.call(null,a,b,c,d,e,f,g));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$8 = (function (a,b,c,d,e,f,g,h){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$8 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$8(a,b,c,d,e,f,g,h) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$8 ? target_fn.cljs$core$IFn$_invoke$arity$8(a,b,c,d,e,f,g,h) : target_fn.call(null,a,b,c,d,e,f,g,h));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$9 = (function (a,b,c,d,e,f,g,h,i){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$9 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$9(a,b,c,d,e,f,g,h,i) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$9 ? target_fn.cljs$core$IFn$_invoke$arity$9(a,b,c,d,e,f,g,h,i) : target_fn.call(null,a,b,c,d,e,f,g,h,i));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$10 = (function (a,b,c,d,e,f,g,h,i,j){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$10 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$10(a,b,c,d,e,f,g,h,i,j) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$10 ? target_fn.cljs$core$IFn$_invoke$arity$10(a,b,c,d,e,f,g,h,i,j) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$11 = (function (a,b,c,d,e,f,g,h,i,j,k){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$11 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$11(a,b,c,d,e,f,g,h,i,j,k) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$11 ? target_fn.cljs$core$IFn$_invoke$arity$11(a,b,c,d,e,f,g,h,i,j,k) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$12 = (function (a,b,c,d,e,f,g,h,i,j,k,l){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$12 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$12(a,b,c,d,e,f,g,h,i,j,k,l) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$12 ? target_fn.cljs$core$IFn$_invoke$arity$12(a,b,c,d,e,f,g,h,i,j,k,l) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$13 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$13 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$13(a,b,c,d,e,f,g,h,i,j,k,l,m) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$13 ? target_fn.cljs$core$IFn$_invoke$arity$13(a,b,c,d,e,f,g,h,i,j,k,l,m) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$14 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$14 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$14 ? target_fn.cljs$core$IFn$_invoke$arity$14(a,b,c,d,e,f,g,h,i,j,k,l,m,n) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$15 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$15 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$15 ? target_fn.cljs$core$IFn$_invoke$arity$15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$16 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$16 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$16 ? target_fn.cljs$core$IFn$_invoke$arity$16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$17 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$17 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$17(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$17 ? target_fn.cljs$core$IFn$_invoke$arity$17(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$18 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$18 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$18(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$18 ? target_fn.cljs$core$IFn$_invoke$arity$18(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$19 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$19 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$19(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$19 ? target_fn.cljs$core$IFn$_invoke$arity$19(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$20 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
+var self__ = this;
+var mf = this;
+var dispatch_val = (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$20 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : self__.dispatch_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return (target_fn.cljs$core$IFn$_invoke$arity$20 ? target_fn.cljs$core$IFn$_invoke$arity$20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) : target_fn.call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$21 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
+var self__ = this;
+var mf = this;
+var dispatch_val = cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(self__.dispatch_fn,a,b,c,d,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
+var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
+if(cljs.core.truth_(target_fn)){
+} else {
+cljs.core.throw_no_method_error(self__.name,dispatch_val);
+}
+
+return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(target_fn,a,b,c,d,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_prefer_method$arity$3 = (function (mf,dispatch_val_x,dispatch_val_y){
+var self__ = this;
+var mf__$1 = this;
+if(cljs.core.truth_(cljs.core.prefers_STAR_(dispatch_val_x,dispatch_val_y,self__.prefer_table))){
+throw (new Error(["Preference conflict in multimethod '",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.name),"': ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(dispatch_val_y)," is already preferred to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(dispatch_val_x)].join('')));
+} else {
+}
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.prefer_table,((function (mf__$1){
+return (function (old){
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(old,dispatch_val_x,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(old,dispatch_val_x,cljs.core.PersistentHashSet.EMPTY),dispatch_val_y));
+});})(mf__$1))
+);
+
+return cljs.core.reset_cache(self__.method_cache,self__.method_table,self__.cached_hierarchy,self__.hierarchy);
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_default_dispatch_val$arity$1 = (function (mf){
+var self__ = this;
+var mf__$1 = this;
+return self__.default_dispatch_val;
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_remove_method$arity$2 = (function (mf,dispatch_val){
+var self__ = this;
+var mf__$1 = this;
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(self__.method_table,cljs.core.dissoc,dispatch_val);
+
+cljs.core.reset_cache(self__.method_cache,self__.method_table,self__.cached_hierarchy,self__.hierarchy);
+
+return mf__$1;
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_methods$arity$1 = (function (mf){
+var self__ = this;
+var mf__$1 = this;
+return cljs.core.deref(self__.method_table);
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_prefers$arity$1 = (function (mf){
+var self__ = this;
+var mf__$1 = this;
+return cljs.core.deref(self__.prefer_table);
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_dispatch_fn$arity$1 = (function (mf){
+var self__ = this;
+var mf__$1 = this;
+return self__.dispatch_fn;
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_add_method$arity$3 = (function (mf,dispatch_val,method){
+var self__ = this;
+var mf__$1 = this;
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(self__.method_table,cljs.core.assoc,dispatch_val,method);
+
+cljs.core.reset_cache(self__.method_cache,self__.method_table,self__.cached_hierarchy,self__.hierarchy);
+
+return mf__$1;
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_reset$arity$1 = (function (mf){
+var self__ = this;
+var mf__$1 = this;
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.method_table,((function (mf__$1){
+return (function (mf__$2){
+return cljs.core.PersistentArrayMap.EMPTY;
+});})(mf__$1))
+);
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.method_cache,((function (mf__$1){
+return (function (mf__$2){
+return cljs.core.PersistentArrayMap.EMPTY;
+});})(mf__$1))
+);
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.prefer_table,((function (mf__$1){
+return (function (mf__$2){
+return cljs.core.PersistentArrayMap.EMPTY;
+});})(mf__$1))
+);
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.cached_hierarchy,((function (mf__$1){
+return (function (mf__$2){
+return null;
+});})(mf__$1))
+);
+
+return mf__$1;
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_get_method$arity$2 = (function (mf,dispatch_val){
+var self__ = this;
+var mf__$1 = this;
+if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(self__.cached_hierarchy),cljs.core.deref(self__.hierarchy))){
+} else {
+cljs.core.reset_cache(self__.method_cache,self__.method_table,self__.cached_hierarchy,self__.hierarchy);
+}
+
+var temp__4655__auto__ = (function (){var fexpr__12748 = cljs.core.deref(self__.method_cache);
+return (fexpr__12748.cljs$core$IFn$_invoke$arity$1 ? fexpr__12748.cljs$core$IFn$_invoke$arity$1(dispatch_val) : fexpr__12748.call(null,dispatch_val));
+})();
+if(cljs.core.truth_(temp__4655__auto__)){
+var target_fn = temp__4655__auto__;
+return target_fn;
+} else {
+return cljs.core.find_and_cache_best_method(self__.name,dispatch_val,self__.hierarchy,self__.method_table,self__.prefer_table,self__.method_cache,self__.cached_hierarchy,self__.default_dispatch_val);
+}
+});
+
+cljs.core.MultiFn.prototype.cljs$core$INamed$_name$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return cljs.core._name(self__.name);
+});
+
+cljs.core.MultiFn.prototype.cljs$core$INamed$_namespace$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return cljs.core._namespace(self__.name);
+});
+
+cljs.core.MultiFn.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return goog.getUid(this$__$1);
+});
+
+cljs.core.MultiFn.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 8, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"name","name",-810760592,null),new cljs.core.Symbol(null,"dispatch-fn","dispatch-fn",-1401088155,null),new cljs.core.Symbol(null,"default-dispatch-val","default-dispatch-val",-1231201266,null),new cljs.core.Symbol(null,"hierarchy","hierarchy",587061186,null),new cljs.core.Symbol(null,"method-table","method-table",-1878263165,null),new cljs.core.Symbol(null,"prefer-table","prefer-table",462168584,null),new cljs.core.Symbol(null,"method-cache","method-cache",1230193905,null),new cljs.core.Symbol(null,"cached-hierarchy","cached-hierarchy",-1085460203,null)], null);
+});
+
+cljs.core.MultiFn.cljs$lang$type = true;
+
+cljs.core.MultiFn.cljs$lang$ctorStr = "cljs.core/MultiFn";
+
+cljs.core.MultiFn.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/MultiFn");
+});
+
+/**
+ * Positional factory function for cljs.core/MultiFn.
+ */
+cljs.core.__GT_MultiFn = (function cljs$core$__GT_MultiFn(name,dispatch_fn,default_dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy){
+return (new cljs.core.MultiFn(name,dispatch_fn,default_dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy));
+});
+
+/**
+ * Removes all of the methods of multimethod.
+ */
+cljs.core.remove_all_methods = (function cljs$core$remove_all_methods(multifn){
+return cljs.core._reset(multifn);
+});
+/**
+ * Removes the method of multimethod associated with dispatch-value.
+ */
+cljs.core.remove_method = (function cljs$core$remove_method(multifn,dispatch_val){
+return cljs.core._remove_method(multifn,dispatch_val);
+});
+/**
+ * Causes the multimethod to prefer matches of dispatch-val-x over dispatch-val-y
+ * when there is a conflict
+ */
+cljs.core.prefer_method = (function cljs$core$prefer_method(multifn,dispatch_val_x,dispatch_val_y){
+return cljs.core._prefer_method(multifn,dispatch_val_x,dispatch_val_y);
+});
+/**
+ * Given a multimethod, returns a map of dispatch values -> dispatch fns
+ */
+cljs.core.methods$ = (function cljs$core$methods(multifn){
+return cljs.core._methods(multifn);
+});
+/**
+ * Given a multimethod and a dispatch value, returns the dispatch fn
+ * that would apply to that value, or nil if none apply and no default
+ */
+cljs.core.get_method = (function cljs$core$get_method(multifn,dispatch_val){
+return cljs.core._get_method(multifn,dispatch_val);
+});
+/**
+ * Given a multimethod, returns a map of preferred value -> set of other values
+ */
+cljs.core.prefers = (function cljs$core$prefers(multifn){
+return cljs.core._prefers(multifn);
+});
+/**
+ * Given a multimethod, return it's default-dispatch-val.
+ */
+cljs.core.default_dispatch_val = (function cljs$core$default_dispatch_val(multifn){
+return cljs.core._default_dispatch_val(multifn);
+});
+/**
+ * Given a multimethod, return it's dispatch-fn.
+ */
+cljs.core.dispatch_fn = (function cljs$core$dispatch_fn(multifn){
+return cljs.core._dispatch_fn(multifn);
+});
+
+/**
+ * A marker protocol for UUIDs
+ * @interface
+ */
+cljs.core.IUUID = function(){};
+
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IPrintWithWriter}
+ * @implements {cljs.core.IComparable}
+ * @implements {cljs.core.IUUID}
+*/
+cljs.core.UUID = (function (uuid,__hash){
+this.uuid = uuid;
+this.__hash = __hash;
+this.cljs$lang$protocol_mask$partition0$ = 2153775104;
+this.cljs$lang$protocol_mask$partition1$ = 2048;
+});
+cljs.core.UUID.prototype.cljs$core$IUUID$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.UUID.prototype.toString = (function (){
+var self__ = this;
+var _ = this;
+return self__.uuid;
+});
+
+cljs.core.UUID.prototype.equiv = (function (other){
+var self__ = this;
+var this$ = this;
+return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
+});
+
+cljs.core.UUID.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (_,other){
+var self__ = this;
+var ___$1 = this;
+return (((other instanceof cljs.core.UUID)) && ((self__.uuid === other.uuid)));
+});
+
+cljs.core.UUID.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (_,writer,___$1){
+var self__ = this;
+var ___$2 = this;
+return cljs.core._write(writer,["#uuid \"",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.uuid),"\""].join(''));
+});
+
+cljs.core.UUID.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+if((self__.__hash == null)){
+self__.__hash = cljs.core.hash(self__.uuid);
+} else {
+}
+
+return self__.__hash;
+});
+
+cljs.core.UUID.prototype.cljs$core$IComparable$_compare$arity$2 = (function (_,other){
+var self__ = this;
+var ___$1 = this;
+var G__12750 = self__.uuid;
+var G__12751 = other.uuid;
+return goog.array.defaultCompare(G__12750,G__12751);
+});
+
+cljs.core.UUID.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"uuid","uuid",-504564192,null),cljs.core.with_meta(new cljs.core.Symbol(null,"__hash","__hash",-1328796629,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
+});
+
+cljs.core.UUID.cljs$lang$type = true;
+
+cljs.core.UUID.cljs$lang$ctorStr = "cljs.core/UUID";
+
+cljs.core.UUID.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/UUID");
+});
+
+/**
+ * Positional factory function for cljs.core/UUID.
+ */
+cljs.core.__GT_UUID = (function cljs$core$__GT_UUID(uuid,__hash){
+return (new cljs.core.UUID(uuid,__hash));
+});
+
+cljs.core.uuid = (function cljs$core$uuid(s){
+if(typeof s === 'string'){
+} else {
+throw (new Error("Assert failed: (string? s)"));
+}
+
+return (new cljs.core.UUID(s.toLowerCase(),null));
+});
+cljs.core.random_uuid = (function cljs$core$random_uuid(){
+var hex = (function cljs$core$random_uuid_$_hex(){
+return cljs.core.rand_int((16)).toString((16));
+});
+var rhex = ((8) | ((3) & cljs.core.rand_int((16)))).toString((16));
+return cljs.core.uuid([cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),"-",cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),"-","4",cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),"-",cljs.core.str.cljs$core$IFn$_invoke$arity$1(rhex),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),"-",cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hex())].join(''));
+});
+cljs.core.uuid_QMARK_ = (function cljs$core$uuid_QMARK_(x){
+if((!((x == null)))){
+if(((false) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$IUUID$)))){
+return true;
+} else {
+return false;
+}
+} else {
+return false;
+}
+});
+cljs.core.pr_writer_ex_info = (function cljs$core$pr_writer_ex_info(obj,writer,opts){
+cljs.core._write(writer,"#error {:message ");
+
+cljs.core.pr_writer(obj.message,writer,opts);
+
+if(cljs.core.truth_(obj.data)){
+cljs.core._write(writer,", :data ");
+
+cljs.core.pr_writer(obj.data,writer,opts);
+} else {
+}
+
+if(cljs.core.truth_(obj.cause)){
+cljs.core._write(writer,", :cause ");
+
+cljs.core.pr_writer(obj.cause,writer,opts);
+} else {
+}
+
+return cljs.core._write(writer,"}");
+});
+/**
+ * @constructor
+ */
+cljs.core.ExceptionInfo = (function cljs$core$ExceptionInfo(message,data,cause){
+var e = (new Error(message));
+var this$ = this;
+this$.message = message;
+
+this$.data = data;
+
+this$.cause = cause;
+
+this$.name = e.name;
+
+this$.description = e.description;
+
+this$.number = e.number;
+
+this$.fileName = e.fileName;
+
+this$.lineNumber = e.lineNumber;
+
+this$.columnNumber = e.columnNumber;
+
+this$.stack = e.stack;
+
+return this$;
+});
+cljs.core.ExceptionInfo.prototype.__proto__ = Error.prototype;
+cljs.core.ExceptionInfo.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
+
+cljs.core.ExceptionInfo.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (obj,writer,opts){
+var obj__$1 = this;
+return cljs.core.pr_writer_ex_info(obj__$1,writer,opts);
+});
+cljs.core.ExceptionInfo.prototype.toString = (function (){
+var this$ = this;
+return cljs.core.pr_str_STAR_(this$);
+});
+/**
+ * Create an instance of ExceptionInfo, an Error type that carries a
+ * map of additional data.
+ */
+cljs.core.ex_info = (function cljs$core$ex_info(var_args){
+var G__12754 = arguments.length;
+switch (G__12754) {
+case 2:
+return cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+case 3:
+return cljs.core.ex_info.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2 = (function (msg,data){
+return cljs.core.ex_info.cljs$core$IFn$_invoke$arity$3(msg,data,null);
+});
+
+cljs.core.ex_info.cljs$core$IFn$_invoke$arity$3 = (function (msg,data,cause){
+return (new cljs.core.ExceptionInfo(msg,data,cause));
+});
+
+cljs.core.ex_info.cljs$lang$maxFixedArity = 3;
+
+/**
+ * Returns exception data (a map) if ex is an ExceptionInfo.
+ * Otherwise returns nil.
+ */
+cljs.core.ex_data = (function cljs$core$ex_data(ex){
+if((ex instanceof cljs.core.ExceptionInfo)){
+return ex.data;
+} else {
+return null;
+}
+});
+/**
+ * Returns the message attached to the given Error / ExceptionInfo object.
+ * For non-Errors returns nil.
+ */
+cljs.core.ex_message = (function cljs$core$ex_message(ex){
+if((ex instanceof Error)){
+return ex.message;
+} else {
+return null;
+}
+});
+/**
+ * Returns exception cause (an Error / ExceptionInfo) if ex is an
+ * ExceptionInfo.
+ * Otherwise returns nil.
+ */
+cljs.core.ex_cause = (function cljs$core$ex_cause(ex){
+if((ex instanceof cljs.core.ExceptionInfo)){
+return ex.cause;
+} else {
+return null;
+}
+});
+/**
+ * Returns an JavaScript compatible comparator based upon pred.
+ */
+cljs.core.comparator = (function cljs$core$comparator(pred){
+return (function (x,y){
+if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$2 ? pred.cljs$core$IFn$_invoke$arity$2(x,y) : pred.call(null,x,y)))){
+return (-1);
+} else {
+if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$2 ? pred.cljs$core$IFn$_invoke$arity$2(y,x) : pred.call(null,y,x)))){
+return (1);
+} else {
+return (0);
+
+}
+}
+});
+});
+/**
+ * Returns true if x names a special form
+ */
+cljs.core.special_symbol_QMARK_ = (function cljs$core$special_symbol_QMARK_(x){
+return cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 24, [new cljs.core.Symbol(null,"&","&",-2144855648,null),"null",new cljs.core.Symbol(null,"case*","case*",-1938255072,null),"null",new cljs.core.Symbol(null,"defrecord*","defrecord*",-1936366207,null),"null",new cljs.core.Symbol(null,"try","try",-1273693247,null),"null",new cljs.core.Symbol(null,"ns*","ns*",1840949383,null),"null",new cljs.core.Symbol(null,"finally","finally",-1065347064,null),"null",new cljs.core.Symbol(null,"loop*","loop*",615029416,null),"null",new cljs.core.Symbol(null,"do","do",1686842252,null),"null",new cljs.core.Symbol(null,"letfn*","letfn*",-110097810,null),"null",new cljs.core.Symbol(null,"if","if",1181717262,null),"null",new cljs.core.Symbol(null,"new","new",-444906321,null),"null",new cljs.core.Symbol(null,"ns","ns",2082130287,null),"null",new cljs.core.Symbol(null,"deftype*","deftype*",962659890,null),"null",new cljs.core.Symbol(null,"let*","let*",1920721458,null),"null",new cljs.core.Symbol(null,"js*","js*",-1134233646,null),"null",new cljs.core.Symbol(null,"fn*","fn*",-752876845,null),"null",new cljs.core.Symbol(null,"recur","recur",1202958259,null),"null",new cljs.core.Symbol(null,"set!","set!",250714521,null),"null",new cljs.core.Symbol(null,".",".",1975675962,null),"null",new cljs.core.Symbol(null,"var","var",870848730,null),"null",new cljs.core.Symbol(null,"quote","quote",1377916282,null),"null",new cljs.core.Symbol(null,"catch","catch",-1616370245,null),"null",new cljs.core.Symbol(null,"throw","throw",595905694,null),"null",new cljs.core.Symbol(null,"def","def",597100991,null),"null"], null), null),x);
+});
+/**
+ * test [v] finds fn at key :test in var metadata and calls it,
+ * presuming failure will throw exception
+ */
+cljs.core.test = (function cljs$core$test(v){
+var f = v.cljs$lang$test;
+if(cljs.core.truth_(f)){
+(f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
+
+return new cljs.core.Keyword(null,"ok","ok",967785236);
+} else {
+return new cljs.core.Keyword(null,"no-test","no-test",-1679482642);
+}
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+ * @implements {cljs.core.IPrintWithWriter}
+ * @implements {cljs.core.ILookup}
+*/
+cljs.core.TaggedLiteral = (function (tag,form){
+this.tag = tag;
+this.form = form;
+this.cljs$lang$protocol_mask$partition0$ = 2153775360;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.TaggedLiteral.prototype.toString = (function (){
+var self__ = this;
+var coll = this;
+return cljs.core.pr_str_STAR_(coll);
+});
+
+cljs.core.TaggedLiteral.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this$,other){
+var self__ = this;
+var this$__$1 = this;
+return (((other instanceof cljs.core.TaggedLiteral)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(self__.tag,other.tag)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(self__.form,other.form)));
+});
+
+cljs.core.TaggedLiteral.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
+var self__ = this;
+var this$__$1 = this;
+return (((31) * cljs.core.hash(self__.tag)) + cljs.core.hash(self__.form));
+});
+
+cljs.core.TaggedLiteral.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this$,v){
+var self__ = this;
+var this$__$1 = this;
+return this$__$1.cljs$core$ILookup$_lookup$arity$3(null,v,null);
+});
+
+cljs.core.TaggedLiteral.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this$,v,not_found){
+var self__ = this;
+var this$__$1 = this;
+var G__12756 = v;
+var G__12756__$1 = (((G__12756 instanceof cljs.core.Keyword))?G__12756.fqn:null);
+switch (G__12756__$1) {
+case "tag":
+return self__.tag;
+
+break;
+case "form":
+return self__.form;
+
+break;
+default:
+return not_found;
+
+}
+});
+
+cljs.core.TaggedLiteral.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (o,writer,opts){
+var self__ = this;
+var o__$1 = this;
+cljs.core._write(writer,["#",cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.tag)," "].join(''));
+
+return cljs.core.pr_writer(self__.form,writer,opts);
+});
+
+cljs.core.TaggedLiteral.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"tag","tag",350170304,null),new cljs.core.Symbol(null,"form","form",16469056,null)], null);
+});
+
+cljs.core.TaggedLiteral.cljs$lang$type = true;
+
+cljs.core.TaggedLiteral.cljs$lang$ctorStr = "cljs.core/TaggedLiteral";
+
+cljs.core.TaggedLiteral.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/TaggedLiteral");
+});
+
+/**
+ * Positional factory function for cljs.core/TaggedLiteral.
+ */
+cljs.core.__GT_TaggedLiteral = (function cljs$core$__GT_TaggedLiteral(tag,form){
+return (new cljs.core.TaggedLiteral(tag,form));
+});
+
+/**
+ * Return true if the value is the data representation of a tagged literal
+ */
+cljs.core.tagged_literal_QMARK_ = (function cljs$core$tagged_literal_QMARK_(value){
+return (value instanceof cljs.core.TaggedLiteral);
+});
+/**
+ * Construct a data representation of a tagged literal from a
+ * tag symbol and a form.
+ */
+cljs.core.tagged_literal = (function cljs$core$tagged_literal(tag,form){
+if((tag instanceof cljs.core.Symbol)){
+} else {
+throw (new Error("Assert failed: (symbol? tag)"));
+}
+
+return (new cljs.core.TaggedLiteral(tag,form));
+});
+/**
+ * @type {*}
+ */
+cljs.core.js_reserved_arr = ["arguments","abstract","await","boolean","break","byte","case","catch","char","class","const","continue","debugger","default","delete","do","double","else","enum","export","extends","final","finally","float","for","function","goto","if","implements","import","in","instanceof","int","interface","let","long","native","new","package","private","protected","public","return","short","static","super","switch","synchronized","this","throw","throws","transient","try","typeof","var","void","volatile","while","with","yield","methods","null","constructor"];
+/**
+ * @type {null|Object}
+ */
+cljs.core.js_reserved = null;
+cljs.core.js_reserved_QMARK_ = (function cljs$core$js_reserved_QMARK_(x){
+if((cljs.core.js_reserved == null)){
+cljs.core.js_reserved = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p1__12758_SHARP_,p2__12759_SHARP_){
+goog.object.set(p1__12758_SHARP_,p2__12759_SHARP_,true);
+
+return p1__12758_SHARP_;
+}),({}),cljs.core.js_reserved_arr);
+} else {
+}
+
+return cljs.core.js_reserved.hasOwnProperty(x);
+});
+cljs.core.demunge_pattern = (function cljs$core$demunge_pattern(){
+if(cljs.core.truth_(cljs.core.DEMUNGE_PATTERN)){
+} else {
+cljs.core.DEMUNGE_PATTERN = (function (){var ks = cljs.core.sort.cljs$core$IFn$_invoke$arity$2((function (a,b){
+return (b.length - a.length);
+}),cljs.core.js_keys(cljs.core.DEMUNGE_MAP));
+var ks__$1 = ks;
+var ret = "";
+while(true){
+if(cljs.core.seq(ks__$1)){
+var G__12761 = cljs.core.next(ks__$1);
+var G__12762 = [cljs.core.str.cljs$core$IFn$_invoke$arity$1((function (){var G__12760 = ret;
+if((!((ret === "")))){
+return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__12760),"|"].join('');
+} else {
+return G__12760;
+}
+})()),cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.first(ks__$1))].join('');
+ks__$1 = G__12761;
+ret = G__12762;
+continue;
+} else {
+return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(ret),"|\\$"].join('');
+}
+break;
+}
+})();
+}
+
+return cljs.core.DEMUNGE_PATTERN;
+});
+cljs.core.munge_str = (function cljs$core$munge_str(name){
+var sb = (new goog.string.StringBuffer());
+var i_12763 = (0);
+while(true){
+if((i_12763 < name.length)){
+var c_12764 = name.charAt(i_12763);
+var sub_12765 = goog.object.get(cljs.core.CHAR_MAP,c_12764);
+if((!((sub_12765 == null)))){
+sb.append(sub_12765);
+} else {
+sb.append(c_12764);
+}
+
+var G__12766 = (i_12763 + (1));
+i_12763 = G__12766;
+continue;
+} else {
+}
+break;
+}
+
+return sb.toString();
+});
+cljs.core.munge = (function cljs$core$munge(name){
+var name_SINGLEQUOTE_ = cljs.core.munge_str(cljs.core.str.cljs$core$IFn$_invoke$arity$1(name));
+var name_SINGLEQUOTE___$1 = (((name_SINGLEQUOTE_ === ".."))?"_DOT__DOT_":(cljs.core.truth_(cljs.core.js_reserved_QMARK_(name_SINGLEQUOTE_))?[cljs.core.str.cljs$core$IFn$_invoke$arity$1(name_SINGLEQUOTE_),"$"].join(''):name_SINGLEQUOTE_
+));
+if((name instanceof cljs.core.Symbol)){
+return cljs.core.symbol.cljs$core$IFn$_invoke$arity$1(name_SINGLEQUOTE___$1);
+} else {
+return name_SINGLEQUOTE___$1;
+}
+});
+cljs.core.demunge_str = (function cljs$core$demunge_str(munged_name){
+var r = (new RegExp(cljs.core.demunge_pattern(),"g"));
+var munged_name__$1 = (cljs.core.truth_(goog.string.endsWith(munged_name,"$"))?munged_name.substring((0),(munged_name.length - (1))):munged_name);
+var ret = "";
+var last_match_end = (0);
+while(true){
+var temp__4655__auto__ = r.exec(munged_name__$1);
+if(cljs.core.truth_(temp__4655__auto__)){
+var match = temp__4655__auto__;
+var vec__12767 = match;
+var x = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12767,(0),null);
+var G__12770 = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(ret),cljs.core.str.cljs$core$IFn$_invoke$arity$1(munged_name__$1.substring(last_match_end,(r.lastIndex - x.length))),cljs.core.str.cljs$core$IFn$_invoke$arity$1((((x === "$"))?"/":goog.object.get(cljs.core.DEMUNGE_MAP,x)))].join('');
+var G__12771 = r.lastIndex;
+ret = G__12770;
+last_match_end = G__12771;
+continue;
+} else {
+return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(ret),cljs.core.str.cljs$core$IFn$_invoke$arity$1(munged_name__$1.substring(last_match_end,munged_name__$1.length))].join('');
+}
+break;
+}
+});
+cljs.core.demunge = (function cljs$core$demunge(name){
+var G__12773 = (function (){var name_SINGLEQUOTE_ = cljs.core.str.cljs$core$IFn$_invoke$arity$1(name);
+if((name_SINGLEQUOTE_ === "_DOT__DOT_")){
+return "..";
+} else {
+return cljs.core.demunge_str(name_SINGLEQUOTE_);
+}
+})();
+var fexpr__12772 = (((name instanceof cljs.core.Symbol))?cljs.core.symbol:cljs.core.str);
+return (fexpr__12772.cljs$core$IFn$_invoke$arity$1 ? fexpr__12772.cljs$core$IFn$_invoke$arity$1(G__12773) : fexpr__12772.call(null,G__12773));
+});
+if((typeof cljs !== 'undefined') && (typeof cljs.core !== 'undefined') && (typeof cljs.core.tapset !== 'undefined')){
+} else {
+/**
+ * @type {*}
+ */
+cljs.core.tapset = null;
+}
+cljs.core.maybe_init_tapset = (function cljs$core$maybe_init_tapset(){
+if((cljs.core.tapset == null)){
+return cljs.core.tapset = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentHashSet.EMPTY);
+} else {
+return null;
+}
+});
+/**
+ * Adds f, a fn of one argument, to the tap set. This function will be called with
+ * anything sent via tap>. Remember f in order to remove-tap
+ */
+cljs.core.add_tap = (function cljs$core$add_tap(f){
+cljs.core.maybe_init_tapset();
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(cljs.core.tapset,cljs.core.conj,f);
+
+return null;
+});
+/**
+ * Remove f from the tap set.
+ */
+cljs.core.remove_tap = (function cljs$core$remove_tap(f){
+cljs.core.maybe_init_tapset();
+
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(cljs.core.tapset,cljs.core.disj,f);
+
+return null;
+});
+/**
+ * Sends x to any taps. Returns the result of *exec-tap-fn*, a Boolean value.
+ */
+cljs.core.tap_GT_ = (function cljs$core$tap_GT_(x){
+cljs.core.maybe_init_tapset();
+
+return (cljs.core._STAR_exec_tap_fn_STAR_.cljs$core$IFn$_invoke$arity$1 ? cljs.core._STAR_exec_tap_fn_STAR_.cljs$core$IFn$_invoke$arity$1((function (){
+var seq__12774 = cljs.core.seq(cljs.core.deref(cljs.core.tapset));
+var chunk__12775 = null;
+var count__12776 = (0);
+var i__12777 = (0);
+while(true){
+if((i__12777 < count__12776)){
+var tap = chunk__12775.cljs$core$IIndexed$_nth$arity$2(null,i__12777);
+try{(tap.cljs$core$IFn$_invoke$arity$1 ? tap.cljs$core$IFn$_invoke$arity$1(x) : tap.call(null,x));
+}catch (e12778){if((e12778 instanceof Error)){
+var ex_12780 = e12778;
+} else {
+throw e12778;
+
+}
+}
+
+var G__12781 = seq__12774;
+var G__12782 = chunk__12775;
+var G__12783 = count__12776;
+var G__12784 = (i__12777 + (1));
+seq__12774 = G__12781;
+chunk__12775 = G__12782;
+count__12776 = G__12783;
+i__12777 = G__12784;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__12774);
+if(temp__4657__auto__){
+var seq__12774__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__12774__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__12774__$1);
+var G__12785 = cljs.core.chunk_rest(seq__12774__$1);
+var G__12786 = c__8664__auto__;
+var G__12787 = cljs.core.count(c__8664__auto__);
+var G__12788 = (0);
+seq__12774 = G__12785;
+chunk__12775 = G__12786;
+count__12776 = G__12787;
+i__12777 = G__12788;
+continue;
+} else {
+var tap = cljs.core.first(seq__12774__$1);
+try{(tap.cljs$core$IFn$_invoke$arity$1 ? tap.cljs$core$IFn$_invoke$arity$1(x) : tap.call(null,x));
+}catch (e12779){if((e12779 instanceof Error)){
+var ex_12789 = e12779;
+} else {
+throw e12779;
+
+}
+}
+
+var G__12790 = cljs.core.next(seq__12774__$1);
+var G__12791 = null;
+var G__12792 = (0);
+var G__12793 = (0);
+seq__12774 = G__12790;
+chunk__12775 = G__12791;
+count__12776 = G__12792;
+i__12777 = G__12793;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+})) : cljs.core._STAR_exec_tap_fn_STAR_.call(null,(function (){
+var seq__12774 = cljs.core.seq(cljs.core.deref(cljs.core.tapset));
+var chunk__12775 = null;
+var count__12776 = (0);
+var i__12777 = (0);
+while(true){
+if((i__12777 < count__12776)){
+var tap = chunk__12775.cljs$core$IIndexed$_nth$arity$2(null,i__12777);
+try{(tap.cljs$core$IFn$_invoke$arity$1 ? tap.cljs$core$IFn$_invoke$arity$1(x) : tap.call(null,x));
+}catch (e12778){if((e12778 instanceof Error)){
+var ex_12794 = e12778;
+} else {
+throw e12778;
+
+}
+}
+
+var G__12795 = seq__12774;
+var G__12796 = chunk__12775;
+var G__12797 = count__12776;
+var G__12798 = (i__12777 + (1));
+seq__12774 = G__12795;
+chunk__12775 = G__12796;
+count__12776 = G__12797;
+i__12777 = G__12798;
+continue;
+} else {
+var temp__4657__auto__ = cljs.core.seq(seq__12774);
+if(temp__4657__auto__){
+var seq__12774__$1 = temp__4657__auto__;
+if(cljs.core.chunked_seq_QMARK_(seq__12774__$1)){
+var c__8664__auto__ = cljs.core.chunk_first(seq__12774__$1);
+var G__12799 = cljs.core.chunk_rest(seq__12774__$1);
+var G__12800 = c__8664__auto__;
+var G__12801 = cljs.core.count(c__8664__auto__);
+var G__12802 = (0);
+seq__12774 = G__12799;
+chunk__12775 = G__12800;
+count__12776 = G__12801;
+i__12777 = G__12802;
+continue;
+} else {
+var tap = cljs.core.first(seq__12774__$1);
+try{(tap.cljs$core$IFn$_invoke$arity$1 ? tap.cljs$core$IFn$_invoke$arity$1(x) : tap.call(null,x));
+}catch (e12779){if((e12779 instanceof Error)){
+var ex_12803 = e12779;
+} else {
+throw e12779;
+
+}
+}
+
+var G__12804 = cljs.core.next(seq__12774__$1);
+var G__12805 = null;
+var G__12806 = (0);
+var G__12807 = (0);
+seq__12774 = G__12804;
+chunk__12775 = G__12805;
+count__12776 = G__12806;
+i__12777 = G__12807;
+continue;
+}
+} else {
+return null;
+}
+}
+break;
+}
+})));
+});
+/**
+ * Bootstrap only.
+ */
+cljs.core.ns_lookup = (function cljs$core$ns_lookup(ns_obj,k){
+return (function (){
+return goog.object.get(ns_obj,k);
+});
+});
+
+/**
+* @constructor
+ * @implements {cljs.core.IEquiv}
+ * @implements {cljs.core.IHash}
+*/
+cljs.core.Namespace = (function (obj,name){
+this.obj = obj;
+this.name = name;
+this.cljs$lang$protocol_mask$partition0$ = 6291456;
+this.cljs$lang$protocol_mask$partition1$ = 0;
+});
+cljs.core.Namespace.prototype.findInternedVar = (function (sym){
+var self__ = this;
+var this$ = this;
+var k = cljs.core.munge(cljs.core.str.cljs$core$IFn$_invoke$arity$1(sym));
+if(goog.object.containsKey(self__.obj,k)){
+var var_sym = cljs.core.symbol.cljs$core$IFn$_invoke$arity$2(cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.name),cljs.core.str.cljs$core$IFn$_invoke$arity$1(sym));
+var var_meta = new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"ns","ns",441598760),this$], null);
+return (new cljs.core.Var(cljs.core.ns_lookup(self__.obj,k),var_sym,var_meta));
+} else {
+return null;
+}
+});
+
+cljs.core.Namespace.prototype.getName = (function (){
+var self__ = this;
+var _ = this;
+return self__.name;
+});
+
+cljs.core.Namespace.prototype.toString = (function (){
+var self__ = this;
+var _ = this;
+return cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.name);
+});
+
+cljs.core.Namespace.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (_,other){
+var self__ = this;
+var ___$1 = this;
+if((other instanceof cljs.core.Namespace)){
+return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(self__.name,other.name);
+} else {
+return false;
+}
+});
+
+cljs.core.Namespace.prototype.cljs$core$IHash$_hash$arity$1 = (function (_){
+var self__ = this;
+var ___$1 = this;
+return cljs.core.hash(self__.name);
+});
+
+cljs.core.Namespace.getBasis = (function (){
+return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"obj","obj",-1672671807,null),new cljs.core.Symbol(null,"name","name",-810760592,null)], null);
+});
+
+cljs.core.Namespace.cljs$lang$type = true;
+
+cljs.core.Namespace.cljs$lang$ctorStr = "cljs.core/Namespace";
+
+cljs.core.Namespace.cljs$lang$ctorPrWriter = (function (this__8437__auto__,writer__8438__auto__,opt__8439__auto__){
+return cljs.core._write(writer__8438__auto__,"cljs.core/Namespace");
+});
+
+/**
+ * Positional factory function for cljs.core/Namespace.
+ */
+cljs.core.__GT_Namespace = (function cljs$core$__GT_Namespace(obj,name){
+return (new cljs.core.Namespace(obj,name));
+});
+
+/**
+ * Bootstrap only.
+ * @type {*}
+ */
+cljs.core.NS_CACHE = null;
+/**
+ * Bootstrap only.
+ */
+cljs.core.find_ns_obj_STAR_ = (function cljs$core$find_ns_obj_STAR_(ctxt,xs){
+while(true){
+if((ctxt == null)){
+return null;
+} else {
+if((xs == null)){
+return ctxt;
+} else {
+var G__12810 = (function (){var G__12808 = ctxt;
+var G__12809 = cljs.core.first(xs);
+return goog.object.get(G__12808,G__12809);
+})();
+var G__12811 = cljs.core.next(xs);
+ctxt = G__12810;
+xs = G__12811;
+continue;
+
+}
+}
+break;
+}
+});
+/**
+ * Bootstrap only.
+ */
+cljs.core.find_ns_obj = (function cljs$core$find_ns_obj(ns){
+var munged_ns = cljs.core.munge(cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns));
+var segs = munged_ns.split(".");
+var G__12812 = cljs.core._STAR_target_STAR_;
+switch (G__12812) {
+case "nodejs":
+if(COMPILED){
+return cljs.core.find_ns_obj_STAR_((function (){try{var ctxt = eval(cljs.core.first(segs));
+if(cljs.core.truth_((function (){var and__7791__auto__ = ctxt;
+if(cljs.core.truth_(and__7791__auto__)){
+return cljs.core.object_QMARK_(ctxt);
+} else {
+return and__7791__auto__;
+}
+})())){
+return ctxt;
+} else {
+return null;
+}
+}catch (e12813){if((e12813 instanceof ReferenceError)){
+var e = e12813;
+return null;
+} else {
+throw e12813;
+
+}
+}})(),cljs.core.next(segs));
+} else {
+return cljs.core.find_ns_obj_STAR_(goog.global,segs);
+}
+
+break;
+case "default":
+case "webworker":
+return cljs.core.find_ns_obj_STAR_(goog.global,segs);
+
+break;
+default:
+throw (new Error(["find-ns-obj not supported for target ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core._STAR_target_STAR_)].join('')));
+
+}
+});
+/**
+ * Returns a map of the intern mappings for the namespace.
+ * Bootstrap only.
+ */
+cljs.core.ns_interns_STAR_ = (function cljs$core$ns_interns_STAR_(sym){
+var ns_obj = cljs.core.find_ns_obj(sym);
+var ns = (new cljs.core.Namespace(ns_obj,sym));
+var step = ((function (ns_obj,ns){
+return (function cljs$core$ns_interns_STAR__$_step(ret,k){
+var var_sym = cljs.core.symbol.cljs$core$IFn$_invoke$arity$1(cljs.core.demunge(k));
+return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(ret,var_sym,(new cljs.core.Var(((function (var_sym,ns_obj,ns){
+return (function (){
+return goog.object.get(ns_obj,k);
+});})(var_sym,ns_obj,ns))
+,cljs.core.symbol.cljs$core$IFn$_invoke$arity$2(cljs.core.str.cljs$core$IFn$_invoke$arity$1(sym),cljs.core.str.cljs$core$IFn$_invoke$arity$1(var_sym)),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"ns","ns",441598760),ns], null))));
+});})(ns_obj,ns))
+;
+return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(step,cljs.core.PersistentArrayMap.EMPTY,cljs.core.js_keys(ns_obj));
+});
+/**
+ * Create a new namespace named by the symbol. Bootstrap only.
+ */
+cljs.core.create_ns = (function cljs$core$create_ns(var_args){
+var G__12816 = arguments.length;
+switch (G__12816) {
+case 1:
+return cljs.core.create_ns.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
+
+break;
+case 2:
+return cljs.core.create_ns.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
+
+break;
+default:
+throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
+
+}
+});
+
+cljs.core.create_ns.cljs$core$IFn$_invoke$arity$1 = (function (sym){
+return cljs.core.create_ns.cljs$core$IFn$_invoke$arity$2(sym,cljs.core.find_ns_obj(sym));
+});
+
+cljs.core.create_ns.cljs$core$IFn$_invoke$arity$2 = (function (sym,ns_obj){
+return (new cljs.core.Namespace(ns_obj,sym));
+});
+
+cljs.core.create_ns.cljs$lang$maxFixedArity = 2;
+
+/**
+ * Returns the namespace named by the symbol or nil if it doesn't exist.
+ * Bootstrap only.
+ */
+cljs.core.find_ns = (function cljs$core$find_ns(ns){
+if((cljs.core.NS_CACHE == null)){
+cljs.core.NS_CACHE = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);
+} else {
+}
+
+var the_ns = cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(cljs.core.NS_CACHE),ns);
+if((!((the_ns == null)))){
+return the_ns;
+} else {
+var ns_obj = cljs.core.find_ns_obj(ns);
+if((ns_obj == null)){
+return null;
+} else {
+var new_ns = cljs.core.create_ns.cljs$core$IFn$_invoke$arity$2(ns,ns_obj);
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(cljs.core.NS_CACHE,cljs.core.assoc,ns,new_ns);
+
+return new_ns;
+}
+}
+});
+/**
+ * Returns the macros namespace named by the symbol or nil if it doesn't exist.
+ * Bootstrap only.
+ */
+cljs.core.find_macros_ns = (function cljs$core$find_macros_ns(ns){
+if((cljs.core.NS_CACHE == null)){
+cljs.core.NS_CACHE = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);
+} else {
+}
+
+var ns_str = cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns);
+var ns__$1 = (((!(goog.string.contains(ns_str,"$macros"))))?cljs.core.symbol.cljs$core$IFn$_invoke$arity$1([cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns_str),"$macros"].join('')):ns);
+var the_ns = cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(cljs.core.NS_CACHE),ns__$1);
+if((!((the_ns == null)))){
+return the_ns;
+} else {
+var ns_obj = cljs.core.find_ns_obj(ns__$1);
+if((ns_obj == null)){
+return null;
+} else {
+var new_ns = cljs.core.create_ns.cljs$core$IFn$_invoke$arity$2(ns__$1,ns_obj);
+cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(cljs.core.NS_CACHE,cljs.core.assoc,ns__$1,new_ns);
+
+return new_ns;
+}
+}
+});
+/**
+ * Returns the name of the namespace, a Namespace object.
+ * Bootstrap only.
+ */
+cljs.core.ns_name = (function cljs$core$ns_name(ns_obj){
+return ns_obj.name;
+});
+/**
+ * Returns true x is a goog.Uri instance.
+ */
+cljs.core.uri_QMARK_ = (function cljs$core$uri_QMARK_(x){
+return (x instanceof goog.Uri);
+});
+cljs.core.maybe_enable_print_BANG_ = (function cljs$core$maybe_enable_print_BANG_(){
+if((typeof console !== 'undefined')){
+return cljs.core.enable_console_print_BANG_();
+} else {
+if((((cljs.core._STAR_target_STAR_ === "nashorn")) || ((cljs.core._STAR_target_STAR_ === "graaljs")))){
+var system = Java.type("java.lang.System");
+cljs.core._STAR_print_newline_STAR_ = false;
+
+cljs.core.set_print_fn_BANG_(((function (system){
+return (function (){
+var xs = arguments;
+var s = goog.array.clone(xs).join("");
+return system.out.println(s);
+});})(system))
+);
+
+return cljs.core.set_print_err_fn_BANG_(((function (system){
+return (function (){
+var xs = arguments;
+var s = goog.array.clone(xs).join("");
+return system.error.println(s);
+});})(system))
+);
+} else {
+return null;
+}
+}
+});
+cljs.core.maybe_enable_print_BANG_();
+if((typeof cljs !== 'undefined') && (typeof cljs.core !== 'undefined') && (typeof cljs.core._STAR_eval_STAR_ !== 'undefined')){
+} else {
+/**
+ * Runtime environments may provide a way to evaluate ClojureScript
+ * forms. Whatever function *eval* is bound to will be passed any forms which
+ * should be evaluated.
+ */
+cljs.core._STAR_eval_STAR_ = (function cljs$core$_STAR_eval_STAR_(_){
+throw (new Error("cljs.core/*eval* not bound"));
+});
+}
+/**
+ * Evaluates the form data structure (not text!) and returns the result.
+ * Delegates to cljs.core/*eval*. Intended for use in self-hosted ClojureScript,
+ * which sets up an implementation of cljs.core/*eval* for that environment.
+ */
+cljs.core.eval = (function cljs$core$eval(form){
+return (cljs.core._STAR_eval_STAR_.cljs$core$IFn$_invoke$arity$1 ? cljs.core._STAR_eval_STAR_.cljs$core$IFn$_invoke$arity$1(form) : cljs.core._STAR_eval_STAR_.call(null,form));
+});
+
+//# sourceMappingURL=core.js.map