<?xml version="1.0" encoding="UTF-8"?>
<xsi_file type="CompoundNode" name="Get Popular Number" category="Custom/Array" formatversion="1.4" compoundversion="1.0" constructionmode="Current" backgroundcolor="6732954">
	<definition>
		<nodes>
			<node type="IntegerNode" index="0">
				<param name="value" type="3" value="1"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-145</prop>
					<prop name="posy">364</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="IntegerNode" index="1">
				<param name="value" type="3" value="0"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-706</prop>
					<prop name="posy">526</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="SubtractNode" index="2">
				<param name="first" type="3" value="0"></param>
				<param name="second" type="3" value="0"></param>
				<portdef name="first" type="2" structure="2" group="0" instance="0" port="0"></portdef>
				<portdef name="second" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">767</prop>
					<prop name="posy">142</prop>
					<prop name="state">Normal</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="14876671" title_text="0" offsetx="80" offsety="-36" sizex="158" sizey="32"><![CDATA[==> number counts in sorted input]]></comment>
			</node>
			<node type="CompareNode" index="3">
				<param name="type" type="3" value="1"></param>
				<param name="epsilon" type="5" value="0.001000"></param>
				<param name="first" type="3" value="0"></param>
				<param name="second" type="3" value="0"></param>
				<portdef name="first" type="2" structure="2" group="0" instance="0" port="0"></portdef>
				<portdef name="second" type="2" structure="1" group="0" instance="0" port="1"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-245</prop>
					<prop name="posy">269</prop>
					<prop name="state">Normal</prop>
				</datablob>
			</node>
			<node type="SelectInArrayNode" index="4">
				<param name="index" type="3" value="0"></param>
				<param name="array" type="3" value="0"></param>
				<portdef name="index" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<portdef name="array" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">1169</prop>
					<prop name="posy">139</prop>
					<prop name="state">Normal</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="14876671" title_text="0" offsetx="27" offsety="-19" sizex="57" sizey="19"><![CDATA[get #1]]></comment>
			</node>
			<node type="RemoveFromArrayNode" index="5">
				<param name="index" type="3" value="0"></param>
				<param name="array" type="3" value="0"></param>
				<portdef name="index" type="2" structure="2" group="0" instance="0" port="0"></portdef>
				<portdef name="array" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">573</prop>
					<prop name="posy">356</prop>
					<prop name="state">Normal</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="14876671" title_text="0" offsetx="189" offsety="49" sizex="105" sizey="32"><![CDATA[==> unduplicated sorted input]]></comment>
			</node>
			<node type="RemoveFromArrayNode" index="6">
				<param name="index" type="3" value="0"></param>
				<param name="array" type="3" value="0"></param>
				<portdef name="index" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<portdef name="array" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">569</prop>
					<prop name="posy">63</prop>
					<prop name="state">Normal</prop>
				</datablob>
			</node>
			<node type="InsertInArrayNode" index="7">
				<param name="index" type="3" value="0"></param>
				<param name="value" type="3" value="0"></param>
				<param name="array" type="3" value="0"></param>
				<portdef name="index" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="1"></portdef>
				<portdef name="array" type="2" structure="2" group="0" instance="0" port="2"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-612</prop>
					<prop name="posy">516</prop>
					<prop name="state">Normal</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="14876671" title_text="0" offsetx="-13" offsety="-19" sizex="161" sizey="19"><![CDATA[shift right 1 with extra 0 at start]]></comment>
			</node>
			<node type="IfNode" index="8">
				<param name="condition" type="11" value="false"></param>
				<param name="iftrue" type="3" value="1"></param>
				<param name="iffalse" type="3" value="0"></param>
				<portdef name="condition" type="1" structure="2" group="0" instance="0" port="0"></portdef>
				<portdef name="iftrue" type="2" structure="1" group="0" instance="0" port="1"></portdef>
				<portdef name="iffalse" type="2" structure="1" group="0" instance="0" port="2"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-83</prop>
					<prop name="posy">318</prop>
					<prop name="state">Normal</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="14876671" title_text="0" offsetx="79" offsety="35" sizex="208" sizey="58"><![CDATA[==> array that has same size as sorted input, but has 0s for each element that has the same value as the previous element, 1 if different]]></comment>
			</node>
			<node type="PushOnArrayNode" index="9">
				<param name="value" type="3" value="1"></param>
				<param name="array" type="3" value="0"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<portdef name="array" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">113</prop>
					<prop name="posy">240</prop>
					<prop name="state">Normal</prop>
				</datablob>
			</node>
			<node type="SortArrayWithKeyNode" index="10">
				<param name="ascending" type="11" value="false"></param>
				<param name="keyarray" type="3" value="0"></param>
				<param name="array" type="3" value="0"></param>
				<portdef name="ascending" type="1" structure="1" group="0" instance="0" port="0"></portdef>
				<portdef name="keyarray" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<portdef name="array" type="2" structure="2" group="0" instance="0" port="2"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">955</prop>
					<prop name="posy">194</prop>
					<prop name="state">Normal</prop>
				</datablob>
			</node>
			<node type="SubtractNode" index="11">
				<param name="first" type="3" value="0"></param>
				<param name="second" type="3" value="0"></param>
				<portdef name="first" type="2" structure="2" group="0" instance="0" port="0"></portdef>
				<portdef name="second" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-427</prop>
					<prop name="posy">262</prop>
					<prop name="state">Normal</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="14876671" title_text="0" offsetx="-10" offsety="-54" sizex="138" sizey="45"><![CDATA["old ICE trick"... subtract "shifted" array to get array of neighbor differences]]></comment>
			</node>
			<node type="FindInArrayNode" index="12">
				<param name="value" type="3" value="0"></param>
				<param name="array" type="3" value="0"></param>
				<param name="epsilon" type="4" value="0.000000"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<portdef name="array" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<portdef name="epsilon" type="4" structure="1" group="0" instance="0" port="2"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">358</prop>
					<prop name="posy">254</prop>
					<prop name="state">Normal</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="14876671" title_text="0" offsetx="39" offsety="87" sizex="123" sizey="71"><![CDATA[find all 0s. Elements at these positions are duplicates. These are removed to make an array of uniques]]></comment>
			</node>
			<node type="IntegerNode" index="13">
				<param name="value" type="3" value="0"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-145</prop>
					<prop name="posy">398</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="IntegerNode" index="14">
				<param name="value" type="3" value="0"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-707</prop>
					<prop name="posy">558</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="IntegerNode" index="15">
				<param name="value" type="3" value="1"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">48</prop>
					<prop name="posy">275</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="IntegerNode" index="16">
				<param name="value" type="3" value="0"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-325</prop>
					<prop name="posy">362</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="IntegerNode" index="17">
				<param name="value" type="3" value="0"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">1067</prop>
					<prop name="posy">149</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="IntegerNode" index="18">
				<param name="value" type="3" value="0"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">502</prop>
					<prop name="posy">113</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="IntegerNode" index="19">
				<param name="value" type="3" value="0"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">298</prop>
					<prop name="posy">318</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="IntegerNode" index="20">
				<param name="value" type="3" value="1"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">300</prop>
					<prop name="posy">181</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="BooleanNode" index="21">
				<param name="value" type="11" value="false"></param>
				<portdef name="value" type="1" structure="1" group="0" instance="0" port="0"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">837</prop>
					<prop name="posy">241</prop>
					<prop name="state">Collapsed</prop>
				</datablob>
			</node>
			<node type="SortArrayNode" index="22">
				<param name="ascending" type="11" value="true"></param>
				<param name="array" type="3" value="0"></param>
				<portdef name="ascending" type="1" structure="1" group="0" instance="0" port="0"></portdef>
				<portdef name="array" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">-885</prop>
					<prop name="posy">416</prop>
					<prop name="state">Normal</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="14876671" title_text="0"><![CDATA[sorted input array]]></comment>
			</node>
			<node type="FindInArrayNode" index="23">
				<param name="value" type="3" value="1"></param>
				<param name="array" type="3" value="0"></param>
				<param name="epsilon" type="4" value="0.000000"></param>
				<portdef name="value" type="2" structure="1" group="0" instance="0" port="0"></portdef>
				<portdef name="array" type="2" structure="2" group="0" instance="0" port="1"></portdef>
				<portdef name="epsilon" type="4" structure="1" group="0" instance="0" port="2"></portdef>
				<datablob category="ui_infos">
					<prop name="posx">360</prop>
					<prop name="posy">113</prop>
					<prop name="state">Normal</prop>
				</datablob>
				<comment type="node" state="maximized" wordwrap="true" autoresize="true" background="0" background_alpha="0.000000" title="14876671" title_text="0" offsetx="-68" offsety="-70" sizex="219" sizey="58"><![CDATA[find all 1s. The indices (positions) of the 1s are used to count the numbers in the sorted input by doing the "shift" difference trick again.]]></comment>
			</node>
		</nodes>
		<exposed_ports>
			<port index="4" portname="value" username="number" basename="number" portlabel="number" exposetype="single"> </port>
			<port index="22" portname="array" username="Array" basename="Array" portlabel="Array" exposetype="single"> </port>
		</exposed_ports>
		<connections>
			<cnx from_node="8" from_port="result" to_node="9" to_port="array"> </cnx>
			<cnx from_node="9" from_port="result" to_node="23" to_port="array"> </cnx>
			<cnx from_node="9" from_port="result" to_node="12" to_port="array"> </cnx>
			<cnx from_node="0" from_port="result" to_node="8" to_port="iftrue"> </cnx>
			<cnx from_node="13" from_port="result" to_node="8" to_port="iffalse"> </cnx>
			<cnx from_node="6" from_port="result" to_node="2" to_port="first"> </cnx>
			<cnx from_node="5" from_port="result" to_node="10" to_port="array"> </cnx>
			<cnx from_node="1" from_port="result" to_node="7" to_port="index"> </cnx>
			<cnx from_node="14" from_port="result" to_node="7" to_port="value"> </cnx>
			<cnx from_node="15" from_port="result" to_node="9" to_port="value"> </cnx>
			<cnx from_node="16" from_port="result" to_node="3" to_port="second"> </cnx>
			<cnx from_node="17" from_port="result" to_node="4" to_port="index"> </cnx>
			<cnx from_node="18" from_port="result" to_node="6" to_port="index"> </cnx>
			<cnx from_node="3" from_port="result" to_node="8" to_port="condition"> </cnx>
			<cnx from_node="19" from_port="result" to_node="12" to_port="value"> </cnx>
			<cnx from_node="20" from_port="result" to_node="23" to_port="value"> </cnx>
			<cnx from_node="21" from_port="result" to_node="10" to_port="ascending"> </cnx>
			<cnx from_node="11" from_port="result" to_node="3" to_port="first"> </cnx>
			<cnx from_node="12" from_port="indexarray" to_node="5" to_port="index"> </cnx>
			<cnx from_node="22" from_port="result" to_node="11" to_port="first"> </cnx>
			<cnx from_node="22" from_port="result" to_node="7" to_port="array"> </cnx>
			<cnx from_node="22" from_port="result" to_node="5" to_port="array"> </cnx>
			<cnx from_node="23" from_port="indexarray" to_node="6" to_port="array"> </cnx>
			<cnx from_node="23" from_port="indexarray" to_node="2" to_port="second"> </cnx>
			<cnx from_node="2" from_port="result" to_node="10" to_port="keyarray"> </cnx>
			<cnx from_node="10" from_port="result" to_node="4" to_port="array"> </cnx>
			<cnx from_node="7" from_port="result" to_node="11" to_port="second"> </cnx>
		</connections>
		<layout>
			<item type="input" name="Array"> </item>
			<item type="output" name="number"> </item>
		</layout>
	</definition>
</xsi_file>
