{"version":3,"sources":["jsdelivr-header.js","/npm/@robinl/record_linkage_javascript_utilities@0.0.8/dist/bundle.js"],"names":[],"mappings":"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","file":"/npm/@robinl/record_linkage_javascript_utilities@0.0.8/dist/bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@robinl/record_linkage_javascript_utilities@0.0.8/dist/bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.rlju = {}));\n})(this, (function (exports) { 'use strict';\n\n  var config$1 = {\n  \tview: {\n  \t\tcontinuousWidth: 400,\n  \t\tcontinuousHeight: 300,\n  \t\tdiscreteHeight: 60,\n  \t\tdiscreteWidth: 400\n  \t},\n  \theader: {\n  \t\ttitle: null\n  \t},\n  \tmark: {\n  \t\ttooltip: null\n  \t},\n  \ttitle: {\n  \t\tanchor: \"middle\"\n  \t}\n  };\n  var vconcat = [\n  \t{\n  \t\tmark: {\n  \t\t\ttype: \"bar\",\n  \t\t\tclip: true,\n  \t\t\theight: 15\n  \t\t},\n  \t\tencoding: {\n  \t\t\tcolor: {\n  \t\t\t\tfield: \"log2_bayes_factor\",\n  \t\t\t\tlegend: null,\n  \t\t\t\tscale: {\n  \t\t\t\t\tdomain: [\n  \t\t\t\t\t\t-10,\n  \t\t\t\t\t\t0,\n  \t\t\t\t\t\t10\n  \t\t\t\t\t],\n  \t\t\t\t\tinterpolate: \"lab\",\n  \t\t\t\t\trange: [\n  \t\t\t\t\t\t\"red\",\n  \t\t\t\t\t\t\"#bbbbbb\",\n  \t\t\t\t\t\t\"green\"\n  \t\t\t\t\t]\n  \t\t\t\t},\n  \t\t\t\ttitle: \"Match weight\",\n  \t\t\t\ttype: \"quantitative\"\n  \t\t\t},\n  \t\t\ttooltip: [\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"comparison_name\",\n  \t\t\t\t\ttitle: \"Comparison name\",\n  \t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"probability_two_random_records_match\",\n  \t\t\t\t\tformat: \".4f\",\n  \t\t\t\t\ttitle: \"Probability two random records match\",\n  \t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"log2_bayes_factor\",\n  \t\t\t\t\tformat: \",.4f\",\n  \t\t\t\t\ttitle: \"Equivalent match weight\",\n  \t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"bayes_factor_description\",\n  \t\t\t\t\ttitle: \"Match weight description\",\n  \t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t}\n  \t\t\t],\n  \t\t\tx: {\n  \t\t\t\taxis: {\n  \t\t\t\t\tdomain: false,\n  \t\t\t\t\tlabels: false,\n  \t\t\t\t\tticks: false,\n  \t\t\t\t\ttitle: \"\"\n  \t\t\t\t},\n  \t\t\t\tfield: \"log2_bayes_factor\",\n  \t\t\t\tscale: {\n  \t\t\t\t\tdomain: [\n  \t\t\t\t\t\t-20,\n  \t\t\t\t\t\t20\n  \t\t\t\t\t]\n  \t\t\t\t},\n  \t\t\t\ttype: \"quantitative\"\n  \t\t\t},\n  \t\t\ty: {\n  \t\t\t\taxis: {\n  \t\t\t\t\ttitle: \"Prior (starting) match weight\",\n  \t\t\t\t\ttitleAlign: \"right\",\n  \t\t\t\t\ttitleAngle: 0,\n  \t\t\t\t\ttitleFontWeight: \"normal\"\n  \t\t\t\t},\n  \t\t\t\tfield: \"label_for_charts\",\n  \t\t\t\tsort: {\n  \t\t\t\t\tfield: \"comparison_vector_value\",\n  \t\t\t\t\torder: \"descending\"\n  \t\t\t\t},\n  \t\t\t\ttype: \"nominal\"\n  \t\t\t}\n  \t\t},\n  \t\theight: 20,\n  \t\ttransform: [\n  \t\t\t{\n  \t\t\t\tfilter: \"(datum.comparison_name == 'probability_two_random_records_match')\"\n  \t\t\t}\n  \t\t]\n  \t},\n  \t{\n  \t\tmark: {\n  \t\t\ttype: \"bar\",\n  \t\t\tclip: true\n  \t\t},\n  \t\tencoding: {\n  \t\t\tcolor: {\n  \t\t\t\tfield: \"log2_bayes_factor\",\n  \t\t\t\tscale: {\n  \t\t\t\t\tdomain: [\n  \t\t\t\t\t\t-10,\n  \t\t\t\t\t\t0,\n  \t\t\t\t\t\t10\n  \t\t\t\t\t],\n  \t\t\t\t\tinterpolate: \"lab\",\n  \t\t\t\t\trange: [\n  \t\t\t\t\t\t\"red\",\n  \t\t\t\t\t\t\"#bbbbbb\",\n  \t\t\t\t\t\t\"green\"\n  \t\t\t\t\t]\n  \t\t\t\t},\n  \t\t\t\ttitle: \"Match weight\",\n  \t\t\t\ttype: \"quantitative\"\n  \t\t\t},\n  \t\t\trow: {\n  \t\t\t\tfield: \"comparison_name\",\n  \t\t\t\theader: {\n  \t\t\t\t\tlabelAlign: \"left\",\n  \t\t\t\t\tlabelAnchor: \"middle\",\n  \t\t\t\t\tlabelAngle: 0\n  \t\t\t\t},\n  \t\t\t\tsort: {\n  \t\t\t\t\tfield: \"comparison_sort_order\"\n  \t\t\t\t},\n  \t\t\t\ttype: \"nominal\"\n  \t\t\t},\n  \t\t\ttooltip: [\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"comparison_name\",\n  \t\t\t\t\ttitle: \"Comparison name\",\n  \t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"label_for_charts\",\n  \t\t\t\t\ttitle: \"Label\",\n  \t\t\t\t\ttype: \"ordinal\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"sql_condition\",\n  \t\t\t\t\ttitle: \"SQL condition\",\n  \t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"m_probability\",\n  \t\t\t\t\tformat: \".4f\",\n  \t\t\t\t\ttitle: \"M probability\",\n  \t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"u_probability\",\n  \t\t\t\t\tformat: \".4f\",\n  \t\t\t\t\ttitle: \"U probability\",\n  \t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"bayes_factor\",\n  \t\t\t\t\tformat: \",.4f\",\n  \t\t\t\t\ttitle: \"Bayes factor = m/u\",\n  \t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"log2_bayes_factor\",\n  \t\t\t\t\tformat: \",.4f\",\n  \t\t\t\t\ttitle: \"Match weight = log2(m/u)\",\n  \t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t},\n  \t\t\t\t{\n  \t\t\t\t\tfield: \"bayes_factor_description\",\n  \t\t\t\t\ttitle: \"Match weight description\",\n  \t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t}\n  \t\t\t],\n  \t\t\tx: {\n  \t\t\t\taxis: {\n  \t\t\t\t\ttitle: \"Comparison level match weight = log2(m/u)\"\n  \t\t\t\t},\n  \t\t\t\tfield: \"log2_bayes_factor\",\n  \t\t\t\tscale: {\n  \t\t\t\t\tdomain: [\n  \t\t\t\t\t\t-20,\n  \t\t\t\t\t\t20\n  \t\t\t\t\t]\n  \t\t\t\t},\n  \t\t\t\ttype: \"quantitative\"\n  \t\t\t},\n  \t\t\ty: {\n  \t\t\t\taxis: {\n  \t\t\t\t\ttitle: null\n  \t\t\t\t},\n  \t\t\t\tfield: \"label_for_charts\",\n  \t\t\t\tsort: {\n  \t\t\t\t\tfield: \"comparison_vector_value\",\n  \t\t\t\t\torder: \"descending\"\n  \t\t\t\t},\n  \t\t\t\ttype: \"nominal\"\n  \t\t\t}\n  \t\t},\n  \t\theight: {\n  \t\t\tstep: 12\n  \t\t},\n  \t\tresolve: {\n  \t\t\taxis: {\n  \t\t\t\ty: \"independent\"\n  \t\t\t},\n  \t\t\tscale: {\n  \t\t\t\ty: \"independent\"\n  \t\t\t}\n  \t\t},\n  \t\ttransform: [\n  \t\t\t{\n  \t\t\t\tfilter: \"(datum.comparison_name != 'probability_two_random_records_match')\"\n  \t\t\t}\n  \t\t]\n  \t}\n  ];\n  var data$1 = {\n  \tname: \"mydata\"\n  };\n  var datasets$1 = {\n  \tmydata: [\n  \t\t{\n  \t\t\tcomparison_name: \"probability_two_random_records_match\",\n  \t\t\tsql_condition: null,\n  \t\t\tlabel_for_charts: \"\",\n  \t\t\tm_probability: null,\n  \t\t\tu_probability: null,\n  \t\t\tm_probability_description: null,\n  \t\t\tu_probability_description: null,\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: null,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 0.000001000001000001,\n  \t\t\tlog2_bayes_factor: -19.931567126628412,\n  \t\t\tcomparison_vector_value: 0,\n  \t\t\tmax_comparison_vector_value: 0,\n  \t\t\tbayes_factor_description: \"The probability that two random records drawn at random match is 0.000 or one in  1,000,000.0 records.This is equivalent to a starting match weight of -19.932.\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: -1\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"first_name\",\n  \t\t\tsql_condition: \"\\\"first_name_l\\\" = \\\"first_name_r\\\"\",\n  \t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\tm_probability: 0.85,\n  \t\t\tu_probability: 0.005666151471395701,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 85.00% of records are in the exact match comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 0.57% of records are in the exact match comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 150.01363876187128,\n  \t\t\tlog2_bayes_factor: 7.228949861693366,\n  \t\t\tcomparison_vector_value: 2,\n  \t\t\tmax_comparison_vector_value: 2,\n  \t\t\tbayes_factor_description: \"If comparison level is `exact match` then comparison is 150.01 times more likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 0\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"first_name\",\n  \t\t\tsql_condition: \"jaro_similarity(\\\"first_name_l\\\", \\\"first_name_r\\\") >= 0.9\",\n  \t\t\tlabel_for_charts: \"Jaro_similarity >= 0.9\",\n  \t\t\tm_probability: 0.05,\n  \t\t\tu_probability: 0.0007658173418514942,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 5.00% of records are in the jaro_similarity >= 0.9 comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 0.08% of records are in the jaro_similarity >= 0.9 comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 65.28972023422251,\n  \t\t\tlog2_bayes_factor: 6.028783954429782,\n  \t\t\tcomparison_vector_value: 1,\n  \t\t\tmax_comparison_vector_value: 2,\n  \t\t\tbayes_factor_description: \"If comparison level is `jaro_similarity >= 0.9` then comparison is 65.29 times more likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 0\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"first_name\",\n  \t\t\tsql_condition: \"ELSE\",\n  \t\t\tlabel_for_charts: \"All other comparisons\",\n  \t\t\tm_probability: 0.1,\n  \t\t\tu_probability: 0.9935680311867529,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 10.00% of records are in the all other comparisons comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 99.36% of records are in the all other comparisons comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 0.10064736068506196,\n  \t\t\tlog2_bayes_factor: -3.312618754486011,\n  \t\t\tcomparison_vector_value: 0,\n  \t\t\tmax_comparison_vector_value: 2,\n  \t\t\tbayes_factor_description: \"If comparison level is `all other comparisons` then comparison is  9.94 times less likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 0\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"surname\",\n  \t\t\tsql_condition: \"\\\"surname_l\\\" = \\\"surname_r\\\"\",\n  \t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\tm_probability: 0.8,\n  \t\t\tu_probability: 0.0004781954661494436,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 80.00% of records are in the exact match comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 0.05% of records are in the exact match comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 1672.9560538116593,\n  \t\t\tlog2_bayes_factor: 10.708183832978756,\n  \t\t\tcomparison_vector_value: 2,\n  \t\t\tmax_comparison_vector_value: 2,\n  \t\t\tbayes_factor_description: \"If comparison level is `exact match` then comparison is 1,672.96 times more likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 1\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"surname\",\n  \t\t\tsql_condition: \"jaro_similarity(\\\"surname_l\\\", \\\"surname_r\\\") >= 0.9\",\n  \t\t\tlabel_for_charts: \"Jaro_similarity >= 0.9\",\n  \t\t\tm_probability: 0.15,\n  \t\t\tu_probability: 0.00020478774447207112,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 15.00% of records are in the jaro_similarity >= 0.9 comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 0.02% of records are in the jaro_similarity >= 0.9 comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 732.4657068062827,\n  \t\t\tlog2_bayes_factor: 9.51661740558447,\n  \t\t\tcomparison_vector_value: 1,\n  \t\t\tmax_comparison_vector_value: 2,\n  \t\t\tbayes_factor_description: \"If comparison level is `jaro_similarity >= 0.9` then comparison is 732.47 times more likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 1\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"surname\",\n  \t\t\tsql_condition: \"ELSE\",\n  \t\t\tlabel_for_charts: \"All other comparisons\",\n  \t\t\tm_probability: 0.05,\n  \t\t\tu_probability: 0.9993170167893785,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 5.00% of records are in the all other comparisons comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 99.93% of records are in the all other comparisons comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 0.05003417249977469,\n  \t\t\tlog2_bayes_factor: -4.320942421758961,\n  \t\t\tcomparison_vector_value: 0,\n  \t\t\tmax_comparison_vector_value: 2,\n  \t\t\tbayes_factor_description: \"If comparison level is `all other comparisons` then comparison is  19.99 times less likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 1\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"postcode\",\n  \t\t\tsql_condition: \"\\\"postcode_l\\\" = \\\"postcode_r\\\"\",\n  \t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\tm_probability: 0.3,\n  \t\t\tu_probability: 0.00002912586012305676,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 30.00% of records are in the exact match comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 0.00% of records are in the exact match comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 10300.125,\n  \t\t\tlog2_bayes_factor: 13.330374225286665,\n  \t\t\tcomparison_vector_value: 2,\n  \t\t\tmax_comparison_vector_value: 2,\n  \t\t\tbayes_factor_description: \"If comparison level is `exact match` then comparison is 10,300.12 times more likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 2\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"postcode\",\n  \t\t\tsql_condition: \"levenshtein(\\\"postcode_l\\\", \\\"postcode_r\\\") <= 1\",\n  \t\t\tlabel_for_charts: \"Levenshtein <= 1\",\n  \t\t\tm_probability: 0.3,\n  \t\t\tu_probability: 0.00006431960777175035,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 30.00% of records are in the levenshtein <= 1 comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 0.01% of records are in the levenshtein <= 1 comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 4664.207547169811,\n  \t\t\tlog2_bayes_factor: 12.187416271444622,\n  \t\t\tcomparison_vector_value: 1,\n  \t\t\tmax_comparison_vector_value: 2,\n  \t\t\tbayes_factor_description: \"If comparison level is `levenshtein <= 1` then comparison is 4,664.21 times more likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 2\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"postcode\",\n  \t\t\tsql_condition: \"ELSE\",\n  \t\t\tlabel_for_charts: \"All other comparisons\",\n  \t\t\tm_probability: 0.4,\n  \t\t\tu_probability: 0.9999065545321052,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 40.00% of records are in the all other comparisons comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 99.99% of records are in the all other comparisons comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 0.40003738168030656,\n  \t\t\tlog2_bayes_factor: -1.321793275274998,\n  \t\t\tcomparison_vector_value: 0,\n  \t\t\tmax_comparison_vector_value: 2,\n  \t\t\tbayes_factor_description: \"If comparison level is `all other comparisons` then comparison is  2.50 times less likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 2\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"gender\",\n  \t\t\tsql_condition: \"\\\"gender_l\\\" = \\\"gender_r\\\"\",\n  \t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\tm_probability: 0.995,\n  \t\t\tu_probability: 0.7073805470837176,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 99.50% of records are in the exact match comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 70.74% of records are in the exact match comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 1.4065979112686047,\n  \t\t\tlog2_bayes_factor: 0.4922099800861225,\n  \t\t\tcomparison_vector_value: 1,\n  \t\t\tmax_comparison_vector_value: 1,\n  \t\t\tbayes_factor_description: \"If comparison level is `exact match` then comparison is 1.41 times more likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 3\n  \t\t},\n  \t\t{\n  \t\t\tcomparison_name: \"gender\",\n  \t\t\tsql_condition: \"ELSE\",\n  \t\t\tlabel_for_charts: \"All other comparisons\",\n  \t\t\tm_probability: 0.005,\n  \t\t\tu_probability: 0.2926194529162825,\n  \t\t\tm_probability_description: \"Amongst matching record comparisons, 0.50% of records are in the all other comparisons comparison level\",\n  \t\t\tu_probability_description: \"Amongst non-matching record comparisons, 29.26% of records are in the all other comparisons comparison level\",\n  \t\t\thas_tf_adjustments: false,\n  \t\t\ttf_adjustment_column: null,\n  \t\t\ttf_adjustment_weight: 1,\n  \t\t\tis_null_level: false,\n  \t\t\tbayes_factor: 0.017087038985854727,\n  \t\t\tlog2_bayes_factor: -5.870953775823034,\n  \t\t\tcomparison_vector_value: 0,\n  \t\t\tmax_comparison_vector_value: 1,\n  \t\t\tbayes_factor_description: \"If comparison level is `all other comparisons` then comparison is  58.52 times less likely to be a match\",\n  \t\t\tprobability_two_random_records_match: 0.000001,\n  \t\t\tcomparison_sort_order: 3\n  \t\t}\n  \t]\n  };\n  var params = [\n  \t{\n  \t\tname: \"mouse_zoom\",\n  \t\tselect: {\n  \t\t\ttype: \"interval\",\n  \t\t\tencodings: [\n  \t\t\t\t\"x\"\n  \t\t\t]\n  \t\t},\n  \t\tbind: \"scales\",\n  \t\tviews: [\n  \t\t]\n  \t}\n  ];\n  var resolve$1 = {\n  \taxis: {\n  \t\ty: \"independent\"\n  \t},\n  \tscale: {\n  \t\ty: \"independent\"\n  \t}\n  };\n  var title$1 = \"Partial match weights\";\n  var $schema$1 = \"https://vega.github.io/schema/vega-lite/v5.9.3.json\";\n  var pmwc = {\n  \tconfig: config$1,\n  \tvconcat: vconcat,\n  \tdata: data$1,\n  \tdatasets: datasets$1,\n  \tparams: params,\n  \tresolve: resolve$1,\n  \ttitle: title$1,\n  \t$schema: $schema$1\n  };\n\n  var config = {\n  \tview: {\n  \t\tcontinuousWidth: 400,\n  \t\tcontinuousHeight: 300\n  \t}\n  };\n  var layer = [\n  \t{\n  \t\tlayer: [\n  \t\t\t{\n  \t\t\t\tmark: \"rule\",\n  \t\t\t\tencoding: {\n  \t\t\t\t\tcolor: {\n  \t\t\t\t\t\tvalue: \"black\"\n  \t\t\t\t\t},\n  \t\t\t\t\tsize: {\n  \t\t\t\t\t\tvalue: 0.5\n  \t\t\t\t\t},\n  \t\t\t\t\ty: {\n  \t\t\t\t\t\tfield: \"zero\",\n  \t\t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tmark: {\n  \t\t\t\t\ttype: \"bar\",\n  \t\t\t\t\twidth: 60\n  \t\t\t\t},\n  \t\t\t\tencoding: {\n  \t\t\t\t\tcolor: {\n  \t\t\t\t\t\tcondition: {\n  \t\t\t\t\t\t\ttest: \"(datum.log2_bayes_factor < 0)\",\n  \t\t\t\t\t\t\tvalue: \"red\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tvalue: \"green\"\n  \t\t\t\t\t},\n  \t\t\t\t\topacity: {\n  \t\t\t\t\t\tcondition: {\n  \t\t\t\t\t\t\ttest: \"datum.column_name == 'Prior match weight' || datum.column_name == 'Final score'\",\n  \t\t\t\t\t\t\tvalue: 1\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tvalue: 0.5\n  \t\t\t\t\t},\n  \t\t\t\t\ttooltip: [\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"column_name\",\n  \t\t\t\t\t\t\ttitle: \"Comparison column\",\n  \t\t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"value_l\",\n  \t\t\t\t\t\t\ttitle: \"Value (L)\",\n  \t\t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"value_r\",\n  \t\t\t\t\t\t\ttitle: \"Value (R)\",\n  \t\t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"label_for_charts\",\n  \t\t\t\t\t\t\ttitle: \"Label\",\n  \t\t\t\t\t\t\ttype: \"ordinal\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"sql_condition\",\n  \t\t\t\t\t\t\ttitle: \"SQL condition\",\n  \t\t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"comparison_vector_value\",\n  \t\t\t\t\t\t\ttitle: \"Comparison vector value\",\n  \t\t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"bayes_factor\",\n  \t\t\t\t\t\t\tformat: \",.4f\",\n  \t\t\t\t\t\t\ttitle: \"Bayes factor = m/u\",\n  \t\t\t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"log2_bayes_factor\",\n  \t\t\t\t\t\t\tformat: \",.4f\",\n  \t\t\t\t\t\t\ttitle: \"Match weight = log2(m/u)\",\n  \t\t\t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"prob\",\n  \t\t\t\t\t\t\tformat: \".4f\",\n  \t\t\t\t\t\t\ttitle: \"Cumulative match probability\",\n  \t\t\t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tfield: \"bayes_factor_description\",\n  \t\t\t\t\t\t\ttitle: \"Match weight description\",\n  \t\t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t\t}\n  \t\t\t\t\t],\n  \t\t\t\t\tx: {\n  \t\t\t\t\t\taxis: {\n  \t\t\t\t\t\t\tgrid: true,\n  \t\t\t\t\t\t\tlabelAlign: \"center\",\n  \t\t\t\t\t\t\tlabelAngle: -20,\n  \t\t\t\t\t\t\tlabelExpr: \"datum.value == 'Prior' || datum.value == 'Final score' ? '' : datum.value\",\n  \t\t\t\t\t\t\tlabelPadding: 10,\n  \t\t\t\t\t\t\ttickBand: \"extent\",\n  \t\t\t\t\t\t\ttitle: \"Column\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tfield: \"column_name\",\n  \t\t\t\t\t\tsort: {\n  \t\t\t\t\t\t\tfield: \"bar_sort_order\",\n  \t\t\t\t\t\t\torder: \"ascending\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t},\n  \t\t\t\t\ty: {\n  \t\t\t\t\t\taxis: {\n  \t\t\t\t\t\t\tgrid: false,\n  \t\t\t\t\t\t\torient: \"left\",\n  \t\t\t\t\t\t\ttitle: \"Match Weight\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tfield: \"previous_sum\",\n  \t\t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t\t},\n  \t\t\t\t\ty2: {\n  \t\t\t\t\t\tfield: \"sum\"\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tmark: {\n  \t\t\t\t\ttype: \"text\",\n  \t\t\t\t\tfontWeight: \"bold\"\n  \t\t\t\t},\n  \t\t\t\tencoding: {\n  \t\t\t\t\tcolor: {\n  \t\t\t\t\t\tvalue: \"white\"\n  \t\t\t\t\t},\n  \t\t\t\t\ttext: {\n  \t\t\t\t\t\tcondition: {\n  \t\t\t\t\t\t\ttest: \"abs(datum.log2_bayes_factor) > 1\",\n  \t\t\t\t\t\t\tfield: \"log2_bayes_factor\",\n  \t\t\t\t\t\t\tformat: \".2f\",\n  \t\t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tvalue: \"\"\n  \t\t\t\t\t},\n  \t\t\t\t\tx: {\n  \t\t\t\t\t\taxis: {\n  \t\t\t\t\t\t\tlabelAngle: -20,\n  \t\t\t\t\t\t\ttitle: \"Column\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tfield: \"column_name\",\n  \t\t\t\t\t\tsort: {\n  \t\t\t\t\t\t\tfield: \"bar_sort_order\",\n  \t\t\t\t\t\t\torder: \"ascending\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t},\n  \t\t\t\t\ty: {\n  \t\t\t\t\t\taxis: {\n  \t\t\t\t\t\t\torient: \"left\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tfield: \"center\",\n  \t\t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tmark: {\n  \t\t\t\t\ttype: \"text\",\n  \t\t\t\t\tbaseline: \"bottom\",\n  \t\t\t\t\tdy: -25,\n  \t\t\t\t\tfontWeight: \"bold\"\n  \t\t\t\t},\n  \t\t\t\tencoding: {\n  \t\t\t\t\tcolor: {\n  \t\t\t\t\t\tvalue: \"black\"\n  \t\t\t\t\t},\n  \t\t\t\t\ttext: {\n  \t\t\t\t\t\tfield: \"column_name\",\n  \t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t},\n  \t\t\t\t\tx: {\n  \t\t\t\t\t\taxis: {\n  \t\t\t\t\t\t\tlabelAngle: -20,\n  \t\t\t\t\t\t\ttitle: \"Column\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tfield: \"column_name\",\n  \t\t\t\t\t\tsort: {\n  \t\t\t\t\t\t\tfield: \"bar_sort_order\",\n  \t\t\t\t\t\t\torder: \"ascending\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t},\n  \t\t\t\t\ty: {\n  \t\t\t\t\t\tfield: \"sum_top\",\n  \t\t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tmark: {\n  \t\t\t\t\ttype: \"text\",\n  \t\t\t\t\tbaseline: \"bottom\",\n  \t\t\t\t\tdy: -13,\n  \t\t\t\t\tfontSize: 8\n  \t\t\t\t},\n  \t\t\t\tencoding: {\n  \t\t\t\t\tcolor: {\n  \t\t\t\t\t\tvalue: \"grey\"\n  \t\t\t\t\t},\n  \t\t\t\t\ttext: {\n  \t\t\t\t\t\tfield: \"value_l\",\n  \t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t},\n  \t\t\t\t\tx: {\n  \t\t\t\t\t\taxis: {\n  \t\t\t\t\t\t\tlabelAngle: -20,\n  \t\t\t\t\t\t\ttitle: \"Column\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tfield: \"column_name\",\n  \t\t\t\t\t\tsort: {\n  \t\t\t\t\t\t\tfield: \"bar_sort_order\",\n  \t\t\t\t\t\t\torder: \"ascending\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t},\n  \t\t\t\t\ty: {\n  \t\t\t\t\t\tfield: \"sum_top\",\n  \t\t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tmark: {\n  \t\t\t\t\ttype: \"text\",\n  \t\t\t\t\tbaseline: \"bottom\",\n  \t\t\t\t\tdy: -5,\n  \t\t\t\t\tfontSize: 8\n  \t\t\t\t},\n  \t\t\t\tencoding: {\n  \t\t\t\t\tcolor: {\n  \t\t\t\t\t\tvalue: \"grey\"\n  \t\t\t\t\t},\n  \t\t\t\t\ttext: {\n  \t\t\t\t\t\tfield: \"value_r\",\n  \t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t},\n  \t\t\t\t\tx: {\n  \t\t\t\t\t\taxis: {\n  \t\t\t\t\t\t\tlabelAngle: -20,\n  \t\t\t\t\t\t\ttitle: \"Column\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\tfield: \"column_name\",\n  \t\t\t\t\t\tsort: {\n  \t\t\t\t\t\t\tfield: \"bar_sort_order\",\n  \t\t\t\t\t\t\torder: \"ascending\"\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\ttype: \"nominal\"\n  \t\t\t\t\t},\n  \t\t\t\t\ty: {\n  \t\t\t\t\t\tfield: \"sum_top\",\n  \t\t\t\t\t\ttype: \"quantitative\"\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t}\n  \t\t]\n  \t},\n  \t{\n  \t\tmark: {\n  \t\t\ttype: \"rule\",\n  \t\t\tcolor: \"black\",\n  \t\t\tstrokeWidth: 2,\n  \t\t\tx2Offset: 30,\n  \t\t\txOffset: -30\n  \t\t},\n  \t\tencoding: {\n  \t\t\tx: {\n  \t\t\t\taxis: {\n  \t\t\t\t\tlabelAngle: -20,\n  \t\t\t\t\ttitle: \"Column\"\n  \t\t\t\t},\n  \t\t\t\tfield: \"column_name\",\n  \t\t\t\tsort: {\n  \t\t\t\t\tfield: \"bar_sort_order\",\n  \t\t\t\t\torder: \"ascending\"\n  \t\t\t\t},\n  \t\t\t\ttype: \"nominal\"\n  \t\t\t},\n  \t\t\tx2: {\n  \t\t\t\tfield: \"lead\"\n  \t\t\t},\n  \t\t\ty: {\n  \t\t\t\taxis: {\n  \t\t\t\t\tlabelExpr: \"format(1 / (1 + pow(2, -1*datum.value)), '.2r')\",\n  \t\t\t\t\torient: \"right\",\n  \t\t\t\t\ttitle: \"Probability\"\n  \t\t\t\t},\n  \t\t\t\tfield: \"sum\",\n  \t\t\t\tscale: {\n  \t\t\t\t\tzero: false\n  \t\t\t\t},\n  \t\t\t\ttype: \"quantitative\"\n  \t\t\t}\n  \t\t}\n  \t}\n  ];\n  var data = {\n  \tname: \"mydata\"\n  };\n  var height = 450;\n  var resolve = {\n  \taxis: {\n  \t\ty: \"independent\"\n  \t}\n  };\n  var title = {\n  \ttext: \"Match weights waterfall chart\",\n  \tsubtitle: \"How each comparison contributes to the final match score\"\n  };\n  var transform = [\n  \t{\n  \t\twindow: [\n  \t\t\t{\n  \t\t\t\top: \"sum\",\n  \t\t\t\tfield: \"log2_bayes_factor\",\n  \t\t\t\tas: \"sum\"\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\top: \"lead\",\n  \t\t\t\tfield: \"column_name\",\n  \t\t\t\tas: \"lead\"\n  \t\t\t}\n  \t\t],\n  \t\tframe: [\n  \t\t\tnull,\n  \t\t\t0\n  \t\t]\n  \t},\n  \t{\n  \t\tcalculate: \"datum.column_name === \\\"Final score\\\" ? datum.sum - datum.log2_bayes_factor : datum.sum\",\n  \t\tas: \"sum\"\n  \t},\n  \t{\n  \t\tcalculate: \"datum.lead === null ? datum.column_name : datum.lead\",\n  \t\tas: \"lead\"\n  \t},\n  \t{\n  \t\tcalculate: \"datum.column_name === \\\"Final score\\\" || datum.column_name === \\\"Prior match weight\\\" ? 0 : datum.sum - datum.log2_bayes_factor\",\n  \t\tas: \"previous_sum\"\n  \t},\n  \t{\n  \t\tcalculate: \"datum.sum > datum.previous_sum ? datum.column_name : \\\"\\\"\",\n  \t\tas: \"top_label\"\n  \t},\n  \t{\n  \t\tcalculate: \"datum.sum < datum.previous_sum ? datum.column_name : \\\"\\\"\",\n  \t\tas: \"bottom_label\"\n  \t},\n  \t{\n  \t\tcalculate: \"datum.sum > datum.previous_sum ? datum.sum : datum.previous_sum\",\n  \t\tas: \"sum_top\"\n  \t},\n  \t{\n  \t\tcalculate: \"datum.sum < datum.previous_sum ? datum.sum : datum.previous_sum\",\n  \t\tas: \"sum_bottom\"\n  \t},\n  \t{\n  \t\tcalculate: \"(datum.sum + datum.previous_sum) / 2\",\n  \t\tas: \"center\"\n  \t},\n  \t{\n  \t\tcalculate: \"(datum.log2_bayes_factor > 0 ? \\\"+\\\" : \\\"\\\") + datum.log2_bayes_factor\",\n  \t\tas: \"text_log2_bayes_factor\"\n  \t},\n  \t{\n  \t\tcalculate: \"datum.sum < datum.previous_sum ? 4 : -4\",\n  \t\tas: \"dy\"\n  \t},\n  \t{\n  \t\tcalculate: \"datum.sum < datum.previous_sum ? \\\"top\\\" : \\\"bottom\\\"\",\n  \t\tas: \"baseline\"\n  \t},\n  \t{\n  \t\tcalculate: \"1. / (1 + pow(2, -1.*datum.sum))\",\n  \t\tas: \"prob\"\n  \t},\n  \t{\n  \t\tcalculate: \"0*datum.sum\",\n  \t\tas: \"zero\"\n  \t}\n  ];\n  var width = {\n  \tstep: 75\n  };\n  var $schema = \"https://vega.github.io/schema/vega-lite/v5.9.3.json\";\n  var datasets = {\n  \tmydata: [\n  \t\t{\n  \t\t\tcolumn_name: \"Prior\",\n  \t\t\tlabel_for_charts: \"Starting match weight (prior)\",\n  \t\t\tsql_condition: null,\n  \t\t\tlog2_bayes_factor: -19.931567126628412,\n  \t\t\tbayes_factor: 0.000001000001000001,\n  \t\t\tcomparison_vector_value: null,\n  \t\t\tm_probability: null,\n  \t\t\tu_probability: null,\n  \t\t\tbayes_factor_description: null,\n  \t\t\tvalue_l: \"\",\n  \t\t\tvalue_r: \"\",\n  \t\t\tterm_frequency_adjustment: null,\n  \t\t\tbar_sort_order: 0,\n  \t\t\trecord_number: 0\n  \t\t},\n  \t\t{\n  \t\t\tcolumn_name: \"first_name\",\n  \t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\tsql_condition: \"\\\"first_name_l\\\" = \\\"first_name_r\\\"\",\n  \t\t\tlog2_bayes_factor: 7.307917141382366,\n  \t\t\tbayes_factor: 158.45365646258503,\n  \t\t\tcomparison_vector_value: 2,\n  \t\t\tm_probability: 0.85,\n  \t\t\tu_probability: 0.005364344496529222,\n  \t\t\tbayes_factor_description: \"If comparison level is `exact match` then comparison is 158.45 times more likely to be a match\",\n  \t\t\tvalue_l: \"rob\",\n  \t\t\tvalue_r: \"rob\",\n  \t\t\tterm_frequency_adjustment: false,\n  \t\t\tbar_sort_order: 1,\n  \t\t\trecord_number: 0\n  \t\t},\n  \t\t{\n  \t\t\tcolumn_name: \"surname\",\n  \t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\tsql_condition: \"\\\"surname_l\\\" = \\\"surname_r\\\"\",\n  \t\t\tlog2_bayes_factor: 10.425173183160398,\n  \t\t\tbayes_factor: 1374.9592850049653,\n  \t\t\tcomparison_vector_value: 2,\n  \t\t\tm_probability: 0.8,\n  \t\t\tu_probability: 0.0005818354104915267,\n  \t\t\tbayes_factor_description: \"If comparison level is `exact match` then comparison is 1,374.96 times more likely to be a match\",\n  \t\t\tvalue_l: \"jefferies\",\n  \t\t\tvalue_r: \"jefferies\",\n  \t\t\tterm_frequency_adjustment: false,\n  \t\t\tbar_sort_order: 2,\n  \t\t\trecord_number: 0\n  \t\t},\n  \t\t{\n  \t\t\tcolumn_name: \"postcode\",\n  \t\t\tlabel_for_charts: \"Null\",\n  \t\t\tsql_condition: \"\\\"postcode_l\\\" IS NULL OR \\\"postcode_r\\\" IS NULL\",\n  \t\t\tlog2_bayes_factor: 0,\n  \t\t\tbayes_factor: 1,\n  \t\t\tcomparison_vector_value: -1,\n  \t\t\tm_probability: null,\n  \t\t\tu_probability: null,\n  \t\t\tbayes_factor_description: \"If comparison level is `null` then comparison is 1.00 times more likely to be a match\",\n  \t\t\tvalue_l: \"sw8 2lh\",\n  \t\t\tvalue_r: \"nan\",\n  \t\t\tterm_frequency_adjustment: false,\n  \t\t\tbar_sort_order: 3,\n  \t\t\trecord_number: 0\n  \t\t},\n  \t\t{\n  \t\t\tcolumn_name: \"gender\",\n  \t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\tsql_condition: \"\\\"gender_l\\\" = \\\"gender_r\\\"\",\n  \t\t\tlog2_bayes_factor: 0.4714908512885071,\n  \t\t\tbayes_factor: 1.3865415514719295,\n  \t\t\tcomparison_vector_value: 1,\n  \t\t\tm_probability: 0.995,\n  \t\t\tu_probability: 0.7176128251935361,\n  \t\t\tbayes_factor_description: \"If comparison level is `exact match` then comparison is 1.39 times more likely to be a match\",\n  \t\t\tvalue_l: \"male\",\n  \t\t\tvalue_r: \"male\",\n  \t\t\tterm_frequency_adjustment: false,\n  \t\t\tbar_sort_order: 4,\n  \t\t\trecord_number: 0\n  \t\t},\n  \t\t{\n  \t\t\tcolumn_name: \"Final score\",\n  \t\t\tlabel_for_charts: \"Final score\",\n  \t\t\tsql_condition: null,\n  \t\t\tlog2_bayes_factor: -1.7269859507971401,\n  \t\t\tbayes_factor: 0.30208240256154806,\n  \t\t\tcomparison_vector_value: null,\n  \t\t\tm_probability: null,\n  \t\t\tu_probability: null,\n  \t\t\tbayes_factor_description: null,\n  \t\t\tvalue_l: \"\",\n  \t\t\tvalue_r: \"\",\n  \t\t\tterm_frequency_adjustment: null,\n  \t\t\tbar_sort_order: 5,\n  \t\t\trecord_number: 0\n  \t\t}\n  \t]\n  };\n  var waterfall = {\n  \tconfig: config,\n  \tlayer: layer,\n  \tdata: data,\n  \theight: height,\n  \tresolve: resolve,\n  \ttitle: title,\n  \ttransform: transform,\n  \twidth: width,\n  \t$schema: $schema,\n  \tdatasets: datasets\n  };\n\n  function applyPMWCDomainRange(chart_spec) {\n      var colorConfig = {\n          condition: {\n              test: \"datum.activityStatus !== 'Activated partial match weight'\",\n              value: \"#BBB\",\n          },\n          field: \"comparison_name\",\n          type: \"nominal\",\n          legend: null,\n          scale: {\n              domain: [\n                  \"Prior\",\n                  \"probability_two_random_records_match\",\n                  \"first_name\",\n                  \"surname\",\n                  \"postcode\",\n                  \"gender\",\n                  \"Final score\",\n              ],\n              range: [\n                  \"#1f77b4\",\n                  \"#1f77b4\",\n                  \"#ff7f0e\",\n                  \"#2ca02c\",\n                  \"#d62728\",\n                  \"#9467bd\",\n                  \"#17becf\",\n              ],\n          },\n      };\n      chart_spec.vconcat[0].encoding.color = colorConfig;\n      chart_spec.vconcat[1].encoding.color = colorConfig;\n      chart_spec.vconcat[0].transform.push({\n          calculate: \"datum.bar_is_active === true ? 'Activated partial match weight' : 'Other partial match weights'\",\n          as: \"activityStatus\",\n      });\n      chart_spec.vconcat[1].transform.push({\n          calculate: \"datum.bar_is_active === true ? 'Activated partial match weight' : 'Other partial match weights'\",\n          as: \"activityStatus\",\n      });\n  }\n  function partial_match_weights_chart(data, highlight) {\n      var newPmwc = JSON.parse(JSON.stringify(pmwc));\n      if (data) {\n          newPmwc.datasets.mydata = data;\n      }\n      if (highlight) {\n          applyPMWCDomainRange(newPmwc);\n      }\n      return newPmwc;\n  }\n  function applyWaterfallDomainRange(chart_spec) {\n      var colorConfig = {\n          field: \"column_name\",\n          type: \"nominal\",\n          legend: null,\n          scale: {\n              domain: [\n                  \"Prior\",\n                  \"probability_two_random_records_match\",\n                  \"first_name\",\n                  \"surname\",\n                  \"postcode\",\n                  \"gender\",\n                  \"Final score\",\n              ],\n              range: [\n                  \"#1f77b4\",\n                  \"#1f77b4\",\n                  \"#ff7f0e\",\n                  \"#2ca02c\",\n                  \"#d62728\",\n                  \"#9467bd\",\n                  \"#17becf\",\n              ],\n          },\n      };\n      chart_spec.layer[0].layer[1][\"encoding\"][\"color\"] = colorConfig;\n      if (chart_spec.layer[0].layer[1].encoding.opacity) {\n          delete chart_spec.layer[0].layer[1].encoding.opacity;\n      }\n  }\n  function waterfall_chart(data, highlight) {\n      var newWaterfall = JSON.parse(JSON.stringify(waterfall));\n      if (data) {\n          newWaterfall.datasets.mydata = data;\n      }\n      if (highlight) {\n          applyWaterfallDomainRange(newWaterfall);\n      }\n      return newWaterfall;\n  }\n\n  function parseTableData(table) {\n      var data = [];\n      table.querySelectorAll(\"tr\").forEach(function (row, i) {\n          var cells = row.cells;\n          var row_data = [];\n          Array.from(cells).forEach(function (cell) {\n              var selectElement = cell.querySelector(\"select\");\n              var value = selectElement ? selectElement.value : cell.innerText;\n              value = value.trim();\n              value = value.toLowerCase();\n              if (value === \"\") {\n                  value = null;\n              }\n              row_data.push(value);\n          });\n          data.push(row_data);\n      });\n      var formattedData = data.reduce(function (accumulator, row, i) {\n          if (i === 0) {\n              accumulator.properties = row;\n          }\n          else {\n              var rowObject_1 = {};\n              rowObject_1[\"uid\"] = i;\n              accumulator.properties.forEach(function (key, i) {\n                  rowObject_1[key] = row[i];\n              });\n              accumulator.push(rowObject_1);\n          }\n          return accumulator;\n      }, []);\n      return formattedData;\n  }\n\n  /******************************************************************************\r\n  Copyright (c) Microsoft Corporation.\r\n\r\n  Permission to use, copy, modify, and/or distribute this software for any\r\n  purpose with or without fee is hereby granted.\r\n\r\n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n  AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n  PERFORMANCE OF THIS SOFTWARE.\r\n  ***************************************************************************** */\r\n  /* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\n  var __assign = function() {\r\n      __assign = Object.assign || function __assign(t) {\r\n          for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n              s = arguments[i];\r\n              for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n          }\r\n          return t;\r\n      };\r\n      return __assign.apply(this, arguments);\r\n  };\r\n\r\n  typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n      var e = new Error(message);\r\n      return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n  };\n\n  function roundToSignificantFigures(num, sig) {\n      if (num === 0)\n          return 0;\n      var magnitude = Math.floor(Math.log10(Math.abs(num)));\n      var factor = Math.pow(10, sig - magnitude - 1);\n      return Math.round(num * factor) / factor;\n  }\n  function calcBayesFactorFromPartialMatchWeight(omega) {\n      return Math.pow(2, omega);\n  }\n  function calcProbabilityFromPartialMatchWeight(omega) {\n      var bf = calcBayesFactorFromPartialMatchWeight(omega);\n      return bf / (1 + bf);\n  }\n  function calcBayesFactorFromProbability(p) {\n      return p / (1 - p);\n  }\n  function calcPartialMatchWeightFromBayesFactor(bf) {\n      return Math.log2(bf);\n  }\n  function calcPartialMatchWeightFromProbability(p) {\n      var bf = calcBayesFactorFromProbability(p);\n      return calcPartialMatchWeightFromBayesFactor(bf);\n  }\n  function calcProbabilityFromPartialMatchWeightInverse(omega) {\n      var bf = calcBayesFactorFromPartialMatchWeight(omega);\n      return 1 / (1 + 1 / bf);\n  }\n  function calcBayesFactorFromMandU(m, u) {\n      return m / u;\n  }\n\n  function addComparisonVectorValue(settings) {\n      var updatedSettings = __assign({}, settings);\n      updatedSettings.comparisons = settings.comparisons.map(function (comparison) {\n          var nonNullLevels = comparison.comparison_levels.filter(function (level) { return !level.is_null_level; });\n          var vectorValue = nonNullLevels.length - 1;\n          var updatedLevels = comparison.comparison_levels.map(function (level, index) {\n              return __assign(__assign({}, level), { comparison_vector_value: level.is_null_level ? null : vectorValue-- });\n          });\n          return __assign(__assign({}, comparison), { comparison_levels: updatedLevels });\n      });\n      return updatedSettings;\n  }\n  function calculatePartialMatchWeightsInitialRecord(probability) {\n      var log2_bayes_factor = calcPartialMatchWeightFromProbability(probability);\n      return {\n          comparison_name: \"probability_two_random_records_match\",\n          sql_condition: \"\",\n          label_for_charts: \"\",\n          m_probability: 0,\n          u_probability: 0,\n          log2_bayes_factor: log2_bayes_factor,\n          comparison_vector_value: 0,\n          probability_two_random_records_match: probability,\n      };\n  }\n  function settingsToPartialMatchWeightsData(settings) {\n      var _a, _b;\n      var updatedSettings = addComparisonVectorValue(settings);\n      var specialOutput = calculatePartialMatchWeightsInitialRecord(updatedSettings.probability_two_random_records_match);\n      var output = [specialOutput];\n      for (var _i = 0, _c = updatedSettings.comparisons; _i < _c.length; _i++) {\n          var comparison = _c[_i];\n          for (var _d = 0, _e = comparison.comparison_levels; _d < _e.length; _d++) {\n              var level = _e[_d];\n              if (level.is_null_level)\n                  continue;\n              var m = (_a = level.m_probability) !== null && _a !== void 0 ? _a : 0;\n              var u = (_b = level.u_probability) !== null && _b !== void 0 ? _b : 0;\n              var bayesFactor = calcBayesFactorFromMandU(m, u);\n              var partial_match_weight = calcPartialMatchWeightFromBayesFactor(bayesFactor);\n              output.push({\n                  comparison_name: comparison.output_column_name,\n                  sql_condition: level.sql_condition,\n                  label_for_charts: level.label_for_charts,\n                  m_probability: m,\n                  u_probability: u,\n                  comparison_vector_value: level.comparison_vector_value,\n                  probability_two_random_records_match: updatedSettings.probability_two_random_records_match,\n                  log2_bayes_factor: partial_match_weight,\n              });\n          }\n      }\n      return output;\n  }\n  function getComparisonLevels(settings, comparisonVector) {\n      var result = {};\n      var updatedSettings = addComparisonVectorValue(settings);\n      var _loop_1 = function (key, value) {\n          if (key.startsWith(\"γ_\")) {\n              var columnName_1 = key.slice(2);\n              var comparisonInfo = updatedSettings.comparisons.find(function (comp) { return comp.output_column_name === columnName_1; });\n              if (comparisonInfo) {\n                  var comparisonLevel = comparisonInfo.comparison_levels.find(function (level) { return level.comparison_vector_value === value; });\n                  if (comparisonLevel) {\n                      result[key] = comparisonLevel;\n                  }\n              }\n          }\n      };\n      for (var _i = 0, _a = Object.entries(comparisonVector); _i < _a.length; _i++) {\n          var _b = _a[_i], key = _b[0], value = _b[1];\n          _loop_1(key, value);\n      }\n      return result;\n  }\n  function getInitialWaterfallRecord(settings) {\n      var _a;\n      var priorProbability = (_a = settings.probability_two_random_records_match) !== null && _a !== void 0 ? _a : 0;\n      var priorBayesFactor = calcBayesFactorFromMandU(priorProbability, 1 - priorProbability);\n      var priorLog2BayesFactor = calcPartialMatchWeightFromBayesFactor(priorBayesFactor);\n      return {\n          column_name: \"Prior\",\n          label_for_charts: \"Starting match weight (prior)\",\n          sql_condition: null,\n          log2_bayes_factor: priorLog2BayesFactor,\n          bayes_factor: priorBayesFactor,\n          comparison_vector_value: null,\n          m_probability: null,\n          u_probability: null,\n          bayes_factor_description: null,\n          value_l: \"\",\n          value_r: \"\",\n          term_frequency_adjustment: null,\n          bar_sort_order: 0,\n          record_number: 0,\n      };\n  }\n  function getFinalWaterfallRecord(output) {\n      var totalLog2BayesFactor = output.reduce(function (sum, record) { return sum + record.log2_bayes_factor; }, 0);\n      var finalBayesFactor = Math.pow(2, totalLog2BayesFactor);\n      return {\n          column_name: \"Final score\",\n          label_for_charts: \"Final score\",\n          sql_condition: null,\n          log2_bayes_factor: totalLog2BayesFactor,\n          bayes_factor: finalBayesFactor,\n          comparison_vector_value: null,\n          m_probability: null,\n          u_probability: null,\n          bayes_factor_description: null,\n          value_l: \"\",\n          value_r: \"\",\n          term_frequency_adjustment: null,\n          bar_sort_order: 5,\n      };\n  }\n  function settingsToWaterfall(settings, comparisonVector) {\n      var _a, _b;\n      var comparisonLevels = getComparisonLevels(settings, comparisonVector);\n      var output = [];\n      var initialRecord = getInitialWaterfallRecord(settings);\n      output.unshift(initialRecord);\n      for (var _i = 0, _c = Object.entries(comparisonLevels); _i < _c.length; _i++) {\n          var _d = _c[_i], gammaKey = _d[0], comparisonInfo = _d[1];\n          var columnName = gammaKey.slice(2);\n          var valueL = comparisonVector[\"\".concat(columnName, \"_l\")];\n          var valueR = comparisonVector[\"\".concat(columnName, \"_r\")];\n          var m = (_a = comparisonInfo.m_probability) !== null && _a !== void 0 ? _a : 0;\n          var u = (_b = comparisonInfo.u_probability) !== null && _b !== void 0 ? _b : 0;\n          var bayesFactor = calcBayesFactorFromMandU(m, u);\n          var log2BayesFactor = calcPartialMatchWeightFromBayesFactor(bayesFactor);\n          output.push({\n              column_name: columnName,\n              label_for_charts: comparisonInfo.label_for_charts,\n              sql_condition: comparisonInfo.sql_condition,\n              log2_bayes_factor: log2BayesFactor,\n              bayes_factor: bayesFactor,\n              comparison_vector_value: comparisonInfo.comparison_vector_value,\n              m_probability: m,\n              u_probability: u,\n              bayes_factor_description: \"If comparison level is `\".concat(comparisonInfo.label_for_charts, \"` then comparison is \").concat(bayesFactor.toFixed(2), \" times more likely to be a match\"),\n              value_l: valueL,\n              value_r: valueR,\n              term_frequency_adjustment: false,\n              bar_sort_order: 1,\n          });\n      }\n      var finalRecord = getFinalWaterfallRecord(output);\n      output.push(finalRecord);\n      return output;\n  }\n  function transformComparisonLevelsToTable(settings) {\n      var settings_with_cvv = addComparisonVectorValue(settings);\n      var table = [\n          [\"column_name\", \"scenario_name\", \"m_probability\", \"u_probability\"],\n      ];\n      settings_with_cvv.comparisons.forEach(function (comparison) {\n          var column_name = comparison.output_column_name;\n          comparison.comparison_levels.forEach(function (level) {\n              var _a, _b;\n              var scenario_name = level.label_for_charts;\n              var comparison_vector_value = level.comparison_vector_value;\n              var m_probability = ((_a = level.m_probability) === null || _a === void 0 ? void 0 : _a.toString()) || \"N/A\";\n              var u_probability = ((_b = level.u_probability) === null || _b === void 0 ? void 0 : _b.toString()) || \"N/A\";\n              table.push([\n                  column_name,\n                  scenario_name,\n                  comparison_vector_value,\n                  m_probability,\n                  u_probability,\n              ]);\n          });\n      });\n      return table;\n  }\n\n  function createComparisonRows(tableData, columns_to_compare, unique_id_column_name) {\n      if (unique_id_column_name === void 0) { unique_id_column_name = \"uid\"; }\n      var comparisonRows = [];\n      for (var i = 0; i < tableData.length; i++) {\n          for (var j = i + 1; j < tableData.length; j++) {\n              var row1 = tableData[i];\n              var row2 = tableData[j];\n              var comparisonRow = {};\n              comparisonRow[\"\".concat(unique_id_column_name, \"_l\")] = row1[unique_id_column_name];\n              comparisonRow[\"\".concat(unique_id_column_name, \"_r\")] = row2[unique_id_column_name];\n              for (var _i = 0, columns_to_compare_1 = columns_to_compare; _i < columns_to_compare_1.length; _i++) {\n                  var prop = columns_to_compare_1[_i];\n                  comparisonRow[\"\".concat(prop, \"_l\")] = row1[prop];\n                  comparisonRow[\"\".concat(prop, \"_r\")] = row2[prop];\n              }\n              comparisonRows.push(comparisonRow);\n          }\n      }\n      return comparisonRows;\n  }\n  function applyComparisonFunctions(data, funcs) {\n      return data.map(function (row) {\n          var newRow = {};\n          for (var key in row) {\n              var baseKey = key.endsWith(\"_l\") ? key.slice(0, -2) : null;\n              if (baseKey && funcs.hasOwnProperty(baseKey)) {\n                  var leftKey = \"\".concat(baseKey, \"_l\");\n                  var rightKey = \"\".concat(baseKey, \"_r\");\n                  var gammaKey = \"\\u03B3_\".concat(baseKey);\n                  newRow[leftKey] = row[leftKey];\n                  newRow[rightKey] = row[rightKey];\n                  newRow[gammaKey] = funcs[baseKey](row[leftKey], row[rightKey]);\n              }\n              else {\n                  newRow[key] = row[key];\n              }\n          }\n          return newRow;\n      });\n  }\n  function createComparisonRowsLinkOnly(multipleTableData, columns_to_compare, unique_id_column_name, source_dataset_column_name) {\n      if (unique_id_column_name === void 0) { unique_id_column_name = \"uid\"; }\n      if (source_dataset_column_name === void 0) { source_dataset_column_name = \"source_dataset\"; }\n      var comparisonRows = [];\n      var allData = [];\n      // Concatenate tables and add table identifiers\n      multipleTableData.forEach(function (tableData, tableIndex) {\n          tableData.forEach(function (row) {\n              var _a;\n              allData.push(__assign(__assign({}, row), (_a = {}, _a[source_dataset_column_name] = tableIndex, _a)));\n          });\n      });\n      for (var i = 0; i < allData.length; i++) {\n          for (var j = i + 1; j < allData.length; j++) {\n              var row1 = allData[i];\n              var row2 = allData[j];\n              // Skip comparisons within the same table\n              if (row1[source_dataset_column_name] === row2[source_dataset_column_name])\n                  continue;\n              var comparisonRow = {};\n              comparisonRow[\"\".concat(unique_id_column_name, \"_l\")] = row1[unique_id_column_name];\n              comparisonRow[\"\".concat(unique_id_column_name, \"_r\")] = row2[unique_id_column_name];\n              comparisonRow[\"\".concat(source_dataset_column_name, \"_l\")] =\n                  row1[source_dataset_column_name];\n              comparisonRow[\"\".concat(source_dataset_column_name, \"_r\")] =\n                  row2[source_dataset_column_name];\n              for (var _i = 0, columns_to_compare_2 = columns_to_compare; _i < columns_to_compare_2.length; _i++) {\n                  var prop = columns_to_compare_2[_i];\n                  comparisonRow[\"\".concat(prop, \"_l\")] = row1[prop];\n                  comparisonRow[\"\".concat(prop, \"_r\")] = row2[prop];\n              }\n              comparisonRows.push(comparisonRow);\n          }\n      }\n      return comparisonRows;\n  }\n  function addModelParametersToComparisonVector(comparisonVectorRows, settings) {\n      var settings_with_cvv = addComparisonVectorValue(settings);\n      var prior_ω = calcPartialMatchWeightFromProbability(settings.probability_two_random_records_match);\n      return comparisonVectorRows.map(function (originalRow) {\n          var newRow = {};\n          // Common fields like uid_l, uid_r, etc.\n          for (var _i = 0, _a = [\n              \"uid_l\",\n              \"uid_r\",\n              \"source_dataset_l\",\n              \"source_dataset_r\",\n          ]; _i < _a.length; _i++) {\n              var field = _a[_i];\n              newRow[field] = originalRow[field];\n          }\n          newRow[\"ω_prior\"] = prior_ω;\n          settings_with_cvv.comparisons.forEach(function (comparison) {\n              var output_column_name = comparison.output_column_name;\n              var gamma_value = originalRow[\"\\u03B3_\".concat(output_column_name)];\n              // Fields for each output_column_name, in the desired order\n              newRow[\"\".concat(output_column_name, \"_l\")] =\n                  originalRow[\"\".concat(output_column_name, \"_l\")];\n              newRow[\"\".concat(output_column_name, \"_r\")] =\n                  originalRow[\"\".concat(output_column_name, \"_r\")];\n              newRow[\"\\u03B3_\".concat(output_column_name)] = gamma_value;\n              var level = comparison.comparison_levels.find(function (level) { return level.comparison_vector_value === gamma_value; });\n              if (level) {\n                  newRow[\"m_\".concat(output_column_name)] = level.m_probability;\n                  newRow[\"u_\".concat(output_column_name)] = level.u_probability;\n                  newRow[\"bf_\".concat(output_column_name)] = calcBayesFactorFromMandU(level.m_probability, level.u_probability);\n                  newRow[\"\\u03C9_\".concat(output_column_name)] =\n                      calcPartialMatchWeightFromBayesFactor(newRow[\"bf_\".concat(output_column_name)]);\n              }\n          });\n          // Compute ω_final_match_weight\n          var omegaSum = 0;\n          for (var _b = 0, _c = Object.entries(newRow); _b < _c.length; _b++) {\n              var _d = _c[_b], key = _d[0], value = _d[1];\n              if (key.startsWith(\"ω_\")) {\n                  omegaSum += value;\n              }\n          }\n          newRow[\"ω_final_match_weight\"] = omegaSum;\n          return newRow;\n      });\n  }\n\n  function getDefaultExportFromCjs (x) {\n  \treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n  }\n\n  function getAugmentedNamespace(n) {\n    if (n.__esModule) return n;\n    var f = n.default;\n  \tif (typeof f == \"function\") {\n  \t\tvar a = function a () {\n  \t\t\tif (this instanceof a) {\n          return Reflect.construct(f, arguments, this.constructor);\n  \t\t\t}\n  \t\t\treturn f.apply(this, arguments);\n  \t\t};\n  \t\ta.prototype = f.prototype;\n    } else a = {};\n    Object.defineProperty(a, '__esModule', {value: true});\n  \tObject.keys(n).forEach(function (k) {\n  \t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n  \t\tObject.defineProperty(a, k, d.get ? d : {\n  \t\t\tenumerable: true,\n  \t\t\tget: function () {\n  \t\t\t\treturn n[k];\n  \t\t\t}\n  \t\t});\n  \t});\n  \treturn a;\n  }\n\n  var jaroWinkler = {exports: {}};\n\n  (function (module, exports) {\n  \t(function (root) {\n\n  \t  function extend(a, b) {\n  \t    for (var property in b) {\n  \t      if (b.hasOwnProperty(property)) {\n  \t        a[property] = b[property];\n  \t      }\n  \t    }\n\n  \t    return a;\n  \t  }\n\n  \t  function distance(s1, s2, options) {\n  \t    var m = 0;\n  \t    var defaults = { caseSensitive: true };\n  \t    var settings = extend(defaults, options);\n  \t    var i;\n  \t    var j;\n\n  \t    // Exit early if either are empty.\n  \t    if (s1.length === 0 || s2.length === 0) {\n  \t      return 0;\n  \t    }\n\n  \t    // Convert to upper if case-sensitive is false.\n  \t    if (!settings.caseSensitive) {\n  \t      s1 = s1.toUpperCase();\n  \t      s2 = s2.toUpperCase();\n  \t    }\n\n  \t    // Exit early if they're an exact match.\n  \t    if (s1 === s2) {\n  \t      return 1;\n  \t    }\n\n  \t    var range = (Math.floor(Math.max(s1.length, s2.length) / 2)) - 1;\n  \t    var s1Matches = new Array(s1.length);\n  \t    var s2Matches = new Array(s2.length);\n\n  \t    for (i = 0; i < s1.length; i++) {\n  \t      var low  = (i >= range) ? i - range : 0;\n  \t      var high = (i + range <= (s2.length - 1)) ? (i + range) : (s2.length - 1);\n\n  \t      for (j = low; j <= high; j++) {\n  \t        if (s1Matches[i] !== true && s2Matches[j] !== true && s1[i] === s2[j]) {\n  \t          ++m;\n  \t          s1Matches[i] = s2Matches[j] = true;\n  \t          break;\n  \t        }\n  \t      }\n  \t    }\n\n  \t    // Exit early if no matches were found.\n  \t    if (m === 0) {\n  \t      return 0;\n  \t    }\n\n  \t    // Count the transpositions.\n  \t    var k = 0;\n  \t    var numTrans = 0;\n\n  \t    for (i = 0; i < s1.length; i++) {\n  \t      if (s1Matches[i] === true) {\n  \t        for (j = k; j < s2.length; j++) {\n  \t          if (s2Matches[j] === true) {\n  \t            k = j + 1;\n  \t            break;\n  \t          }\n  \t        }\n\n  \t        if (s1[i] !== s2[j]) {\n  \t          ++numTrans;\n  \t        }\n  \t      }\n  \t    }\n\n  \t    var weight = (m / s1.length + m / s2.length + (m - (numTrans / 2)) / m) / 3;\n  \t    var l = 0;\n  \t    var p = 0.1;\n\n  \t    if (weight > 0.7) {\n  \t      while (s1[l] === s2[l] && l < 4) {\n  \t        ++l;\n  \t      }\n\n  \t      weight = weight + l * p * (1 - weight);\n  \t    }\n\n  \t    return weight;\n  \t  }\n\n  \t  {\n  \t    module.exports = distance;\n  \t  }\n  \t})(); \n  } (jaroWinkler));\n\n  var jaroWinklerExports = jaroWinkler.exports;\n  var distance$1 = /*@__PURE__*/getDefaultExportFromCjs(jaroWinklerExports);\n\n  var levenshtein$1 = {exports: {}};\n\n  const peq = new Uint32Array(0x10000);\n  const myers_32 = (a, b) => {\n      const n = a.length;\n      const m = b.length;\n      const lst = 1 << (n - 1);\n      let pv = -1;\n      let mv = 0;\n      let sc = n;\n      let i = n;\n      while (i--) {\n          peq[a.charCodeAt(i)] |= 1 << i;\n      }\n      for (i = 0; i < m; i++) {\n          let eq = peq[b.charCodeAt(i)];\n          const xv = eq | mv;\n          eq |= ((eq & pv) + pv) ^ pv;\n          mv |= ~(eq | pv);\n          pv &= eq;\n          if (mv & lst) {\n              sc++;\n          }\n          if (pv & lst) {\n              sc--;\n          }\n          mv = (mv << 1) | 1;\n          pv = (pv << 1) | ~(xv | mv);\n          mv &= xv;\n      }\n      i = n;\n      while (i--) {\n          peq[a.charCodeAt(i)] = 0;\n      }\n      return sc;\n  };\n  const myers_x = (b, a) => {\n      const n = a.length;\n      const m = b.length;\n      const mhc = [];\n      const phc = [];\n      const hsize = Math.ceil(n / 32);\n      const vsize = Math.ceil(m / 32);\n      for (let i = 0; i < hsize; i++) {\n          phc[i] = -1;\n          mhc[i] = 0;\n      }\n      let j = 0;\n      for (; j < vsize - 1; j++) {\n          let mv = 0;\n          let pv = -1;\n          const start = j * 32;\n          const vlen = Math.min(32, m) + start;\n          for (let k = start; k < vlen; k++) {\n              peq[b.charCodeAt(k)] |= 1 << k;\n          }\n          for (let i = 0; i < n; i++) {\n              const eq = peq[a.charCodeAt(i)];\n              const pb = (phc[(i / 32) | 0] >>> i) & 1;\n              const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n              const xv = eq | mv;\n              const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n              let ph = mv | ~(xh | pv);\n              let mh = pv & xh;\n              if ((ph >>> 31) ^ pb) {\n                  phc[(i / 32) | 0] ^= 1 << i;\n              }\n              if ((mh >>> 31) ^ mb) {\n                  mhc[(i / 32) | 0] ^= 1 << i;\n              }\n              ph = (ph << 1) | pb;\n              mh = (mh << 1) | mb;\n              pv = mh | ~(xv | ph);\n              mv = ph & xv;\n          }\n          for (let k = start; k < vlen; k++) {\n              peq[b.charCodeAt(k)] = 0;\n          }\n      }\n      let mv = 0;\n      let pv = -1;\n      const start = j * 32;\n      const vlen = Math.min(32, m - start) + start;\n      for (let k = start; k < vlen; k++) {\n          peq[b.charCodeAt(k)] |= 1 << k;\n      }\n      let score = m;\n      for (let i = 0; i < n; i++) {\n          const eq = peq[a.charCodeAt(i)];\n          const pb = (phc[(i / 32) | 0] >>> i) & 1;\n          const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n          const xv = eq | mv;\n          const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n          let ph = mv | ~(xh | pv);\n          let mh = pv & xh;\n          score += (ph >>> (m - 1)) & 1;\n          score -= (mh >>> (m - 1)) & 1;\n          if ((ph >>> 31) ^ pb) {\n              phc[(i / 32) | 0] ^= 1 << i;\n          }\n          if ((mh >>> 31) ^ mb) {\n              mhc[(i / 32) | 0] ^= 1 << i;\n          }\n          ph = (ph << 1) | pb;\n          mh = (mh << 1) | mb;\n          pv = mh | ~(xv | ph);\n          mv = ph & xv;\n      }\n      for (let k = start; k < vlen; k++) {\n          peq[b.charCodeAt(k)] = 0;\n      }\n      return score;\n  };\n  const distance = (a, b) => {\n      if (a.length < b.length) {\n          const tmp = b;\n          b = a;\n          a = tmp;\n      }\n      if (b.length === 0) {\n          return a.length;\n      }\n      if (a.length <= 32) {\n          return myers_32(a, b);\n      }\n      return myers_x(a, b);\n  };\n  const closest = (str, arr) => {\n      let min_distance = Infinity;\n      let min_index = 0;\n      for (let i = 0; i < arr.length; i++) {\n          const dist = distance(str, arr[i]);\n          if (dist < min_distance) {\n              min_distance = dist;\n              min_index = i;\n          }\n      }\n      return arr[min_index];\n  };\n\n  var mod = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    closest: closest,\n    distance: distance\n  });\n\n  var require$$0 = /*@__PURE__*/getAugmentedNamespace(mod);\n\n  levenshtein$1.exports;\n\n  (function (module, exports) {\n  \t(function() {\n  \t  \n  \t  var collator;\n  \t  try {\n  \t    collator = (typeof Intl !== \"undefined\" && typeof Intl.Collator !== \"undefined\") ? Intl.Collator(\"generic\", { sensitivity: \"base\" }) : null;\n  \t  } catch (err){\n  \t    console.log(\"Collator could not be initialized and wouldn't be used\");\n  \t  }\n\n  \t  var levenshtein = require$$0;\n\n  \t  // arrays to re-use\n  \t  var prevRow = [],\n  \t    str2Char = [];\n  \t  \n  \t  /**\n  \t   * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.\n  \t   */\n  \t  var Levenshtein = {\n  \t    /**\n  \t     * Calculate levenshtein distance of the two strings.\n  \t     *\n  \t     * @param str1 String the first string.\n  \t     * @param str2 String the second string.\n  \t     * @param [options] Additional options.\n  \t     * @param [options.useCollator] Use `Intl.Collator` for locale-sensitive string comparison.\n  \t     * @return Integer the levenshtein distance (0 and above).\n  \t     */\n  \t    get: function(str1, str2, options) {\n  \t      var useCollator = (options && collator && options.useCollator);\n  \t      \n  \t      if (useCollator) {\n  \t        var str1Len = str1.length,\n  \t          str2Len = str2.length;\n  \t        \n  \t        // base cases\n  \t        if (str1Len === 0) return str2Len;\n  \t        if (str2Len === 0) return str1Len;\n\n  \t        // two rows\n  \t        var curCol, nextCol, i, j, tmp;\n\n  \t        // initialise previous row\n  \t        for (i=0; i<str2Len; ++i) {\n  \t          prevRow[i] = i;\n  \t          str2Char[i] = str2.charCodeAt(i);\n  \t        }\n  \t        prevRow[str2Len] = str2Len;\n\n  \t        var strCmp;\n  \t        // calculate current row distance from previous row using collator\n  \t        for (i = 0; i < str1Len; ++i) {\n  \t          nextCol = i + 1;\n\n  \t          for (j = 0; j < str2Len; ++j) {\n  \t            curCol = nextCol;\n\n  \t            // substution\n  \t            strCmp = 0 === collator.compare(str1.charAt(i), String.fromCharCode(str2Char[j]));\n\n  \t            nextCol = prevRow[j] + (strCmp ? 0 : 1);\n\n  \t            // insertion\n  \t            tmp = curCol + 1;\n  \t            if (nextCol > tmp) {\n  \t              nextCol = tmp;\n  \t            }\n  \t            // deletion\n  \t            tmp = prevRow[j + 1] + 1;\n  \t            if (nextCol > tmp) {\n  \t              nextCol = tmp;\n  \t            }\n\n  \t            // copy current col value into previous (in preparation for next iteration)\n  \t            prevRow[j] = curCol;\n  \t          }\n\n  \t          // copy last col value into previous (in preparation for next iteration)\n  \t          prevRow[j] = nextCol;\n  \t        }\n  \t        return nextCol;\n  \t      }\n  \t      return levenshtein.distance(str1, str2);\n  \t    }\n\n  \t  };\n\n  \t  // amd\n  \t  if (module !== null && 'object' !== \"undefined\" && module.exports === exports) {\n  \t    module.exports = Levenshtein;\n  \t  }\n  \t  // web worker\n  \t  else if (typeof self !== \"undefined\" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {\n  \t    self.Levenshtein = Levenshtein;\n  \t  }\n  \t  // browser main thread\n  \t  else if (typeof window !== \"undefined\" && window !== null) {\n  \t    window.Levenshtein = Levenshtein;\n  \t  }\n  \t}()); \n  } (levenshtein$1, levenshtein$1.exports));\n\n  var levenshteinExports = levenshtein$1.exports;\n  var levenshtein = /*@__PURE__*/getDefaultExportFromCjs(levenshteinExports);\n\n  function jaroWinklerComparison(str_l, str_r) {\n      if (str_l === null || str_r === null) {\n          return -1;\n      }\n      if (str_l === str_r) {\n          return 2;\n      }\n      var jaroWinklerDistance = distance$1(str_l, str_r);\n      return jaroWinklerDistance <= 0.9 ? 0 : 1;\n  }\n  function exactMatchComparison(val_l, val_r) {\n      if (val_l === null || val_r === null) {\n          return -1;\n      }\n      return val_l === val_r ? 1 : 0;\n  }\n  function levenshteinComparison(str_l, str_r) {\n      if (str_l === null || str_r === null) {\n          return -1;\n      }\n      if (str_l === str_r) {\n          return 2;\n      }\n      var distance = levenshtein.get(str_l, str_r);\n      return distance <= 1 ? 1 : 0;\n  }\n\n  var link_type = \"dedupe_only\";\n  var comparisons = [\n  \t{\n  \t\toutput_column_name: \"first_name\",\n  \t\tcomparison_levels: [\n  \t\t\t{\n  \t\t\t\tsql_condition: \"\\\"first_name_l\\\" IS NULL OR \\\"first_name_r\\\" IS NULL\",\n  \t\t\t\tlabel_for_charts: \"Null\",\n  \t\t\t\tis_null_level: true\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"\\\"first_name_l\\\" = \\\"first_name_r\\\"\",\n  \t\t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\t\tm_probability: 0.85,\n  \t\t\t\tu_probability: 0.0053644029607975525\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"jaro_similarity(\\\"first_name_l\\\", \\\"first_name_r\\\") >= 0.9\",\n  \t\t\t\tlabel_for_charts: \"Jaro_similarity >= 0.9\",\n  \t\t\t\tm_probability: 0.05,\n  \t\t\t\tu_probability: 0.0010275673770916635\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"ELSE\",\n  \t\t\t\tlabel_for_charts: \"All other comparisons\",\n  \t\t\t\tm_probability: 0.1,\n  \t\t\t\tu_probability: 0.9936080296621108\n  \t\t\t}\n  \t\t],\n  \t\tcomparison_description: \"Exact match vs. First_Name within jaro_similarity threshold 0.9 vs. anything else\"\n  \t},\n  \t{\n  \t\toutput_column_name: \"surname\",\n  \t\tcomparison_levels: [\n  \t\t\t{\n  \t\t\t\tsql_condition: \"\\\"surname_l\\\" IS NULL OR \\\"surname_r\\\" IS NULL\",\n  \t\t\t\tlabel_for_charts: \"Null\",\n  \t\t\t\tis_null_level: true\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"\\\"surname_l\\\" = \\\"surname_r\\\"\",\n  \t\t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\t\tm_probability: 0.8,\n  \t\t\t\tu_probability: 0.0005227236116471686\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"jaro_similarity(\\\"surname_l\\\", \\\"surname_r\\\") >= 0.9\",\n  \t\t\t\tlabel_for_charts: \"Jaro_similarity >= 0.9\",\n  \t\t\t\tm_probability: 0.15,\n  \t\t\t\tu_probability: 0.00022325217333017645\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"ELSE\",\n  \t\t\t\tlabel_for_charts: \"All other comparisons\",\n  \t\t\t\tm_probability: 0.05,\n  \t\t\t\tu_probability: 0.9992540242150226\n  \t\t\t}\n  \t\t],\n  \t\tcomparison_description: \"Exact match vs. Surname within jaro_similarity threshold 0.9 vs. anything else\"\n  \t},\n  \t{\n  \t\toutput_column_name: \"postcode\",\n  \t\tcomparison_levels: [\n  \t\t\t{\n  \t\t\t\tsql_condition: \"\\\"postcode_l\\\" IS NULL OR \\\"postcode_r\\\" IS NULL\",\n  \t\t\t\tlabel_for_charts: \"Null\",\n  \t\t\t\tis_null_level: true\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"\\\"postcode_l\\\" = \\\"postcode_r\\\"\",\n  \t\t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\t\tm_probability: 0.3,\n  \t\t\t\tu_probability: 0.000024076080414108584\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"levenshtein(\\\"postcode_l\\\", \\\"postcode_r\\\") <= 1\",\n  \t\t\t\tlabel_for_charts: \"Levenshtein <= 1\",\n  \t\t\t\tm_probability: 0.3,\n  \t\t\t\tu_probability: 0.000051088268195791384\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"ELSE\",\n  \t\t\t\tlabel_for_charts: \"All other comparisons\",\n  \t\t\t\tm_probability: 0.4,\n  \t\t\t\tu_probability: 0.9999248356513901\n  \t\t\t}\n  \t\t],\n  \t\tcomparison_description: \"Exact match vs. Postcode within levenshtein threshold 1 vs. anything else\"\n  \t},\n  \t{\n  \t\toutput_column_name: \"gender\",\n  \t\tcomparison_levels: [\n  \t\t\t{\n  \t\t\t\tsql_condition: \"\\\"gender_l\\\" IS NULL OR \\\"gender_r\\\" IS NULL\",\n  \t\t\t\tlabel_for_charts: \"Null\",\n  \t\t\t\tis_null_level: true\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"\\\"gender_l\\\" = \\\"gender_r\\\"\",\n  \t\t\t\tlabel_for_charts: \"Exact match\",\n  \t\t\t\tm_probability: 0.995,\n  \t\t\t\tu_probability: 0.6962695593603181\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\tsql_condition: \"ELSE\",\n  \t\t\t\tlabel_for_charts: \"All other comparisons\",\n  \t\t\t\tm_probability: 0.005,\n  \t\t\t\tu_probability: 0.30373044063968185\n  \t\t\t}\n  \t\t],\n  \t\tcomparison_description: \"Exact match vs. anything else\"\n  \t}\n  ];\n  var blocking_rules_to_generate_predictions = [\n  \t{\n  \t\tblocking_rule: \"(l.\\\"first_name\\\" = r.\\\"first_name\\\") AND (l.\\\"surname\\\" = r.\\\"surname\\\")\",\n  \t\tsql_dialect: \"duckdb\"\n  \t}\n  ];\n  var retain_matching_columns = true;\n  var retain_intermediate_calculation_columns = true;\n  var sql_dialect = \"duckdb\";\n  var linker_uid = \"by0ryzft\";\n  var probability_two_random_records_match = 0.000001;\n  var tutorial_partial_weights = {\n  \tlink_type: link_type,\n  \tcomparisons: comparisons,\n  \tblocking_rules_to_generate_predictions: blocking_rules_to_generate_predictions,\n  \tretain_matching_columns: retain_matching_columns,\n  \tretain_intermediate_calculation_columns: retain_intermediate_calculation_columns,\n  \tsql_dialect: sql_dialect,\n  \tlinker_uid: linker_uid,\n  \tprobability_two_random_records_match: probability_two_random_records_match\n  };\n\n  function setBarIsActive(chart_data, comparison_vector) {\n      return chart_data.map(function (chart_item) {\n          if (chart_item.comparison_name === \"probability_two_random_records_match\") {\n              return __assign(__assign({}, chart_item), { bar_is_active: true });\n          }\n          var key = \"\\u03B3_\".concat(chart_item.comparison_name);\n          return __assign(__assign({}, chart_item), { bar_is_active: comparison_vector[key] === chart_item.comparison_vector_value });\n      });\n  }\n\n  var convertMatchScoreMetrics = {\n      roundToSignificantFigures: roundToSignificantFigures,\n      calcBayesFactorFromPartialMatchWeight: calcBayesFactorFromPartialMatchWeight,\n      calcProbabilityFromPartialMatchWeight: calcProbabilityFromPartialMatchWeight,\n      calcBayesFactorFromProbability: calcBayesFactorFromProbability,\n      calcPartialMatchWeightFromBayesFactor: calcPartialMatchWeightFromBayesFactor,\n      calcPartialMatchWeightFromProbability: calcPartialMatchWeightFromProbability,\n      calcProbabilityFromPartialMatchWeightInverse: calcProbabilityFromPartialMatchWeightInverse,\n      calcBayesFactorFromMandU: calcBayesFactorFromMandU,\n  };\n  var charts = {\n      partial_match_weights_chart: partial_match_weights_chart,\n      waterfall_chart: waterfall_chart,\n  };\n\n  exports.addModelParametersToComparisonVector = addModelParametersToComparisonVector;\n  exports.applyComparisonFunctions = applyComparisonFunctions;\n  exports.charts = charts;\n  exports.convertMatchScoreMetrics = convertMatchScoreMetrics;\n  exports.createComparisonRows = createComparisonRows;\n  exports.createComparisonRowsLinkOnly = createComparisonRowsLinkOnly;\n  exports.exactMatchComparison = exactMatchComparison;\n  exports.jaroWinklerComparison = jaroWinklerComparison;\n  exports.levenshteinComparison = levenshteinComparison;\n  exports.parseTableData = parseTableData;\n  exports.roundToSignificantFigures = roundToSignificantFigures;\n  exports.setBarIsActive = setBarIsActive;\n  exports.settingsToPartialMatchWeightsData = settingsToPartialMatchWeightsData;\n  exports.settingsToWaterfall = settingsToWaterfall;\n  exports.transformComparisonLevelsToTable = transformComparisonLevelsToTable;\n  exports.tutorial_partial_match_weights_settings = tutorial_partial_weights;\n\n}));\n"]}