1function createCombinationsBehavior(n){return{settings:$.extend({},{contentEl:!1,fetchUrl:!1},n),params:{availableCombinations:[],availableAttributeIds:[]},init:function(){var i=$(this.settings.contentEl),n=$("[data-attr]",i),t;if(n&&n.length>0){t=this;$.each(n,function(n,i){var r=parseInt($(i).data("attr"));t.params.availableAttributeIds.push(r)});n.on("change",function(){t.processCombinations()})}this.loadCombinations()},loadCombinations:function(){var n=this;$.ajax({cache:!1,url:n.settings.fetchUrl,type:"GET",success:function(t){var i,r;n.params.availableCombinations=t;i=n.getSelectedAttributes();i&&i.length>0&&(r=$.grep(i,function(n){return n.values.length>0}),$.each(r,function(t,i){var r=n.getCombinationsByAttributeId(i.id,[i]);r&&r.length>0?n.isAvailableCombination(r,[i])||n.unselectValues(i.values):n.unselectValues(i.values)}));n.processCombinations()},error:function(){n.params.availableCombinations=[]}})},processCombinations:function(){var t=this.params.availableAttributeIds,n,i,r,u;if(t.length!==0){if(n=this,i=this.params.availableCombinations,i.length===0){r=this.getAttributeValueIds();$.each(r,function(t,i){n.toggleAttributeValue(i,!1)});return}u=n.getSelectedAttributes();$.each(t,function(t,i){var r=n.getAttributeValueIds(i);$.each(r,function(r,f){var o=$.grep(u,function(n,r){return t>r&&n.id!==i&&n.values.length>0}),e;o.push({id:i,values:[f]});e=n.getCombinationsByAttributeId(i,o);e&&e.length>0?n.toggleAttributeValue(f,n.isAvailableCombination(e,o)):n.toggleAttributeValue(f,!1)})});$(this).trigger({type:"processed"})}},getCombinationsByAttributeId:function(n,t){var i=this.params.availableCombinations;if(i.length!==0)return $.grep(i,function(i){var r=$.grep(i.Attributes,function(t){return t.Id===n})[0];return t&&t.length>0&&$.each(t,function(n,t){r=r&&$.grep(i.Attributes,function(n){var i=n.Id===t.id;return t.values.length>0&&$.each(t.values,function(t,r){i=i&&$.inArray(r,n.ValueIds)!==-1}),i})[0]}),r})},isAvailableCombination:function(n,t){var i=$.grep(n,function(n){var i=$.map(n.Attributes,function(n){return n.ValueIds}),r=$.grep(t,function(n){return $.grep(n.values,function(n){return $.inArray(n,i)!==-1})});return n.InStock&&r.length===t.length});return i.length>0},getAttributeValueIds:function(n){var t=$(this.settings.contentEl),r=n?$("[data-attr="+n+"]",t):t,i=$("[data-attr-value]",r);if(i)return $.map(i,function(n){return parseInt($(n).data("attr-value"))})},toggleAttributeValue:function(n,t){var r=$(this.settings.contentEl),i=$("[data-attr-value="+n+"]",r);t?i.removeClass("disabled"):i.addClass("disabled")},unselectValues:function(n){var t=$(this.settings.contentEl);$.each(n,function(n,i){var r=$("[data-attr-value="+i+"]",t);r.prop("selected",!1);$("input",r).prop("checked",!1);r.removeClass("selected-value")})},getSelectedAttributes:function(){var n=this.params.availableAttributeIds,t;if(n.length>0)return t=$(this.settings.contentEl),$.map(n,function(n){var r=[],u=$("[data-attr="+n+"]",t),i=$("[data-attr-value]",u);return i&&i.length>0&&$.each(i,function(n,t){var i=$(t),u;(i.is(":selected")||$("input",i).is(":checked"))&&(u=parseInt(i.data("attr-value")),r.push(u))}),{id:n,values:r}})}}}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.