{ From user Lonnie, Model Rearrange_data_point at 26-Oct-2016 12:03:31 PM, encoding="ascii" } SoftwareVersion 5.0.0 { System Variables with non-default values: } SampleSize := 1000 TypeChecking := 1 Checking := 1 SaveOptions := 2 SaveValues := 0 NodeInfo FormNode: 1,0,0,1,0,0,0,,0,0,,0,0 Model Rearrange_data_point Title: Rearrange data points into categories -- Challenge problem Description: This is an array-manipulation challenge problem exercise. The task is to re-organize a bunch of data points according to their category.~ ~ You start with a bunch of data points. Each data point has a numeric value (Data_point) and a category (Data_category), but the data is one-dimensional (along Index I). ~ ~ You are to create the logic to re-organize this data into a 2-D array on Index Category, where each data point has been moved to the Category slice corresponding to its Data_category. Every data point in the original Data_point variable appears exactly once in the final result. ~ ~ An index named Collect_index has been provided which is long enough to accomodate all the data points in every category. For the categories having fewer points that the index length of Collect_index, the final cells should be Null-padded. ~ ~ The desired result is shown in Desired_result. The image on the main diagram illustrates the transformation. Several solutions (with dramatically different approaches) are shown in the Solutions module -- don't peek until you've attempted this yourself. Several other approaches are also possible.~ ~ This is an advanced-level challenge problem.~ ~ You should avoid highly inefficient solutions. In particular, your solution should avoid any intermediate arrays that contain both Index I and Index Collect_index in the same array. Author: Lonnie Chrisman, Ph.D.~ Lumina Decision Systems Date: Wed, Oct 26, 2016 10:23 AM SaveAuthor: Lonnie SaveDate: Wed, Oct 26, 2016 12:03 PM DiagState: 2,1,0,1315,632,17 WindState: 2,102,86,801,598 FontStyle: Arial,15 FileInfo: 0,Model Rearrange_data_point,2,2,0,0,C:\Users\Lonnie\Documents\Analytica\Mastering Array Abstraction\Rearrange data points into categories.ana Index I Title: I Description: The index that indexes the input data. Definition: 1..1000 NodeLocation: 128,104,1 NodeSize: 48,24 Aliases: Alias Al1477504875 DisplayOutputs: Objective Data_Points_by_categ {!40000|Att_PrevIndexValue: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000]} Variable Data_category Title: Data category Description: The category label for each input data point. Definition: Table(I)('F','B','C','A','C','D','G','B','C','B','A','D','D','B','B','A','B','F','B','C','E','C','A','E','E','G','C','A','D','C','G','D','B','F','B','G','A','A','C','A','A','B','E','C','A','G','B','A','B','G','A','G','F','A','G','E','F','F','B','G','E','E','B','C','G','A','F','D','G','D','A','C','A','A','F','B','D','C','D','C','A','B','C','G','G','B','F','B','G','A','F','C','F','B','F','C','E','B','B','F','E','D','D','A','C','B','G','D','G','G','B','A','A','B','A','C','C','C','C','C','C','C','C','F','C','A','A','E','D','D','G','B','A','A','A','G','C','A','B','A','B','E','D','G','A','A','B','E','E','C','B','D','D','A','B','A','D','G','D','A','A','A','F','B','D','A','E','A','C','C','A','A','A','C','C','A','A','A','A','C','C','B','E','E','C','G','C','G','A','B','F','B','A','F','A','F','F','D','E','A','E','D','D','B','G','E','C','F','A','E','G','G','C','A','G','C','A','C','B','E','A','D','D','F','B','B','D','B','A','B','F','A','E','G','A','C','A','C','C','B','B','A','B','F','D','A','A','A','D','A','A','D','C','C','C','B','B','A','D','F','F','G','C','A','A','C','E','G','B','A','A','G','B','A','D','G','B','A','G','G','F','C','G','A','F','B','F','A','D','A','B','A','C','A','B','E','A','A','B','B','E','D','D','F','B','C','C','A','A','C','D','D','D','A','D','G','C','A','A','A','E','G','B','C','A','A','D','C','A','D','D','A','F','A','E','D','F','B','D','A','C','F','A','F','D','E','C','F','A','G','B','D','B','A','D','B','D','A','D','F','A','F','A','D','B','D','B','D','B','F','G','A','A','F','A','A','C','C','D','A','B','B','B','G','C','A','A','C','D','G','A','D','E','C','G','C','F','A','E','A','B','C','F','G','F','A','A','F','C','B','A','A','G','A','C','E','E','C','A','D','A','B','B','A','D','D','D','C','E','E','C','C','G','A','B','E','A','C','F','C','F','E','E','G','B','E','B','B','A','B','E','C','A','E','G','C','A','C','C','A','G','G','D','B','A','F','B','E','G','B','E','A','A','G','C','D','A','C','E','A','G','B','B','F','G','B','D','F','D','E','G','C','A','E','E','B','C','F','A','C','F','F','B','A','A','A','E','C','D','E','B','G','G','C','B','B','B','C','B','B','A','B','B','D','A','B','C','E','F','B','F','A','F','C','B','E','G','E','A','A','E','D','D','E','E','A','B','B','E','A','C','A','A','E','B','C','G','D','C','A','B','A','A','B','A','G','D','B','G','G','E','G','B','D','F','C','G','E','B','B','G','A','D','A','B','B','C','C','E','G','F','E','D','B','C','B','A','A','G','G','G','D','A','G','B','A','F','F','A','D','C','A','A','A','B','A','C','C','E','A','F','E','B','E','F','C','B','E','B','B','G','E','C','D','A','A','D','B','D','D','C','B','A','B','A','B','D','D','G','B','A','C','C','C','C','D','D','C','A','G','E','D','A','A','D','D','C','A','B','D','A','B','F','E','A','F','E','B','A','F','G','G','B','E','D','A','D','D','G','C','D','G','B','A','D','B','D','A','B','F','D','B','A','D','A','D','A','B','E','B','A','E','A','B','C','E','C','B','C','F','C','F','C','A','B','A','D','C','D','A','B','A','D','E','A','A','A','D','A','D','A','D','C','F','A','G','C','E','B','F','B','C','E','D','A','D','A','E','B','A','A','D','A','C','C','A','C','D','A','E','E','D','A','C','A','A','A','C','C','D','A','G','C','B','A','B','A','E','F','F','C','F','C','C','A','C','A','A','A','B','D','B','A','A','C','E','E','B','G','G','E','D','B','C','A','D','A','A','F','F','C','A','B','A','E','F','B','G','G','D','D','C','C','B','A','D','D','D','C','A','A','G','C','B','D','F','G','B','B','A','A','B','C','G','F','A','F','B','G','B','B','A','A','B','D','B','F','A','F','A','F','A','D','A','B','A','C','C','E','F','A','B','C','C','F','F','G','D','C','C','C','B','B','A','F','A','B','A','A','A','F','G','B','A','E','D','G','C','F','G','B','G','C','D','C','C','C','A','B','D','A','B','F','B','G','A','G','A','A','A','A','C','C','G','B','G','F','A','B','C','D','G','D','A','B','D','A','A','F','B','F','C','B','B','C','D','G','E','E','A','A','F','A','A','E','C','G','C','E','F','E','B','F','D','G','E','D','A','A','A','A','F','B','G','A','C','D','G','E','A','E','C','A','B','F','E','C','A','F','A') NodeLocation: 128,168,1 NodeSize: 48,24 ValueState: 2,1156,68,338,892,,MIDM Aliases: Alias Al1477504352 Domain: Category {!40300|DomainExpr: Category} DisplayOutputs: Objective Data_Points_by_categ Index Category Title: Category Definition: 'A'..'G' NodeLocation: 288,104,1 NodeSize: 48,24 Aliases: Alias Al1477504876 DisplayOutputs: Objective Data_Points_by_categ {!40000|Att_PrevIndexValue: ['A','B','C','D','E','F','G']} Variable Data_Points Title: Data Points Description: The input data values. Definition: Table(I)(246.5639418207873,194.6681659643856,0.1701819711225955,676.6832734815232,878.7642106780615,622.6901428879659,67.4388679058472,233.9718361543361,15.77740396176344,112.6727141033265,273.2078653169833,653.1631395468316,936.0208464488484,702.3662657953643,669.8292226855779,690.3059346090564,693.7862190854671,988.9358854801096,445.0528935739085,402.2272845740557,249.528277315911,372.952830220085,794.6616745529053,267.3530211985824,182.1775702676631,314.3725615527353,184.7326216216817,0.8400655355491049,218.2175089689984,170.8283853581308,721.3305517664787,701.0191696235069,45.42726420118812,481.1130228830097,88.2862634436629,185.7186263360636,481.0069634025018,57.13220595248612,278.5778028325074,932.8851573788027,523.5731413232038,291.0073126158711,91.989032967011,220.9854434342056,775.2506722580878,3.982296681023341,402.5835392077377,572.2481853199416,971.282998552212,496.0294293686885,159.4526358691289,102.3477986931558,581.6732419569386,766.0830769529953,201.2238973757364,221.5434644471591,186.184400779281,741.8424453315523,284.0339058470139,609.908715174491,764.8709298879238,71.74180544528264,735.7759376688748,286.8009918773552,264.2704827078946,20.83852469028836,970.0431940006293,558.2743489920507,59.6770765537755,920.4510524498537,233.0844696765227,356.8657666243919,638.0486416807624,858.4234886143466,821.7568485167608,364.6502459257144,85.59213675818972,57.71046227668899,266.9185373312415,826.1331393505136,958.9025196427957,712.8863635998621,757.855570762351,406.2627304374532,763.9826916921803,177.6619256370058,842.9396561546902,722.8229454359147,939.7394843118915,485.2439414175432,916.9835093975922,99.85692617476774,145.9786873990571,827.2296976424892,924.2364666071891,277.0796056264451,362.3920284967833,274.6476364669612,118.0940601593321,876.9317636624592,971.8429744112506,245.1880067797322,295.3582193215183,201.512829960097,764.5241188651529,682.1326951878764,464.9841694463902,766.619399546934,797.8675983836257,683.5207285748426,760.7260335985227,761.5250576108346,323.5498230548342,118.9814559738065,338.4066998671772,831.3202275109106,296.5623197595413,858.8855754858281,143.2116917070056,592.151874952089,463.7991159520108,522.4466903705367,450.6818533179731,575.9407540671252,862.9485298241249,984.8644751984926,808.2491321527629,951.6432652956077,39.74590452376096,498.2663409310702,9.417330850575739,819.6730640808461,856.9556725476663,102.1526228180866,999.0637758742383,879.1317035812567,601.404667646347,594.0028715850799,146.143630680695,617.2346610656169,236.0008504409347,243.1640914842319,196.0447673667431,289.8671903134637,853.988508625882,865.3503641790479,301.9589494457277,78.91366448202807,2.826100216631824,713.4287183701194,494.9234046483987,989.0946289473654,593.7172433332155,630.6956716024762,547.0424948944909,874.8299469588465,24.06333434584706,232.9121363502518,924.4051328508207,322.9081986113024,264.8811183240642,48.92832788123205,992.7404709126523,51.32203318705876,315.6138133795997,142.4987656727893,466.2933607894431,914.3589394699591,965.9750400883961,872.909665048546,103.2590629082448,943.5707572584836,418.2152899066989,963.9841811563746,696.8211004030059,554.2756386819648,897.4893353402099,605.7087013524531,992.5147881696536,521.3614709309123,836.2536061723966,596.4696465974998,976.937055577029,381.0930831269794,515.9615685771972,31.44811514366796,522.2419358427832,367.5387461518583,806.8690978953937,566.5420901805825,569.4117748967427,593.344282169521,337.3504231392175,320.2157096565774,776.5058268683523,901.876082598174,583.5054999140582,848.561700828635,944.3774618880718,844.7930551342633,717.1159147830289,436.8776415646437,472.2344733179708,710.6593277820662,472.1435361877752,948.3823152018629,567.1797583658154,574.0296969069307,717.4318156751953,461.571597709121,318.9534118021621,733.4321763987804,642.2942670259132,103.7006895540751,152.0019528232524,865.4321980967337,590.1988542593078,876.5260530060745,652.8573826201528,621.9030835767757,155.7882778140662,387.2175153285347,566.8095161983787,59.58914293888451,223.7065742834036,506.5131180484374,836.3939811645048,548.4712196274061,602.5217769679249,139.7883804234622,423.3097771291201,316.4127079380735,896.7085205468854,514.7253738319154,169.7360575989522,604.2080226373896,253.6720420483835,976.7546625699637,333.5852210100671,547.8685943167044,134.5423735373385,466.0107071818834,77.87806916883125,361.1133999010145,273.6414318315878,224.2888385543082,352.7202794108168,505.7542689637068,598.8910815673373,389.6129165727705,567.4242091213466,698.6827024718201,773.3728730927095,794.58873430015,91.54479349569641,72.02390398458759,296.7045750919285,432.4603506515084,241.9556059138643,58.33605167378487,760.1804438793009,27.25957521575483,475.0702988705925,633.8426971965669,989.3579930017506,622.5095822580669,506.9988013743417,722.2292496460626,980.1048315037531,557.3410496848361,253.2334296280674,211.9984730202698,477.0678237439449,304.3849111089413,728.5317041578384,956.995903028639,994.2117826986181,230.142202335476,536.3797543274145,999.9946523457742,739.6273928413295,701.0455586486708,60.98811564081726,934.5309808545425,649.992158939127,797.2010079758246,151.6806511914733,94.25175892852793,325.1256748685267,518.549011330376,787.6454451063859,922.9797389930951,973.8827026327525,986.7830155355777,192.2334321738377,420.0409638788742,432.3517807909994,749.9182004248343,862.1421064539543,964.7801266819146,472.7042082104386,628.4799122384191,46.58314867251699,193.9652455942544,619.4293995478328,231.0220530401087,917.5914842251649,102.1712520635553,594.0295511828874,835.6374217363249,753.9200655901433,662.1952222949803,268.3598232773877,910.1219754247562,778.686379445105,5.437764807342442,515.1011117338674,383.7443368433716,128.8546985615299,520.4732569495557,306.8973246528289,861.8849911083863,663.3859233294548,392.5131170044249,23.3354400952046,275.3202176072263,967.9574933685165,527.2133981470081,251.4175028779626,831.3104286004373,450.7053869081221,89.31231176914289,713.7935700424916,22.3831716097813,200.9776468393289,917.5245812710024,461.5910446558106,963.8876109215839,834.3734875481453,479.2624434825324,875.5826567651624,27.4646808521192,225.7036940314359,558.1471224120572,960.0753723457807,23.43519685018584,511.5721190867816,315.2052216768289,854.6667307869842,728.4106862397914,394.6369599525989,969.8459557117177,867.2945456892692,770.2130650962764,960.6875302086993,380.930811344148,346.1238785395976,454.0204813024125,596.4790524898465,926.6645270058255,171.7496566342887,562.4079022381492,720.4962771947012,970.9850731170667,304.0266150161748,573.9708699164776,660.9187236339407,398.403632174434,323.3889259041235,835.5310414151899,875.3534610734105,879.7234231046044,601.1445790534581,225.7176592134487,992.6054915378827,564.8034520283358,747.7636955435219,940.8915810943076,49.93891764895009,989.8207606700346,679.783194642413,664.430999972127,637.0326171801577,917.7122520831005,636.6984004325692,159.0867355275372,990.0160701898932,454.3129072777521,368.6098481382289,197.6776706043993,401.9855863423951,91.81653153701525,59.07675906041486,378.0242942171284,66.97386273507675,629.7109884348283,230.7382096679594,84.6480504072495,352.6763726736775,270.7308457562378,654.1607224634665,431.7955264969708,875.1945401892041,436.9401514702198,758.0503466343743,779.3211125672428,303.9425375424058,651.6182402389209,799.2359166030008,591.0693265456098,116.1523550358379,381.9793338803478,256.1642575339248,375.9623511582438,85.03705267097664,864.3179260493805,775.3185768496797,362.2284752140886,591.383111938547,409.1267163907768,420.0811532419553,898.9155357232855,552.1758839265332,200.0916815363298,173.3246250885188,17.08988939276426,304.1462610960688,973.9829231863762,229.7710241888515,187.4138345883292,736.7449876557779,172.6310873276699,509.715311932245,786.2102416279773,748.8194875180813,785.247645240858,873.1563882311602,723.2903995193963,139.4170011111614,198.7416801036995,988.3225290050369,2.032179852031255,473.0075306599064,65.62026080937137,724.2650854048623,30.46717542711048,214.105910255623,965.0997146801557,410.6847161476895,73.40890125995917,311.8287629037298,837.567801045984,608.2347322293718,653.1257599839595,730.9899934246158,906.0181229868988,783.4034761336648,181.5376752901532,657.1735631009441,607.1969469111399,80.3624196352262,251.1492070048811,217.7442411043421,889.2368664449252,87.55644973719328,23.41897600489621,446.5930408083801,761.603542026879,341.7447224919427,160.4455426151145,941.0696541616086,404.0143398586728,627.4602406786104,651.1868092469809,621.0804579877669,885.6442802984474,123.9300813171687,192.7223797853675,78.30808175648939,892.8766976543128,492.7234358586015,478.0336662558996,986.1081265779716,430.9046293752755,269.010004712739,602.7297142905787,19.12850142416009,578.6574760352529,580.3474097421148,146.6135914188873,61.81740344586662,552.5826241600247,662.2233785047305,557.6774941560242,44.63626586116676,818.6496481386243,784.8563314344996,561.250733007328,313.5632813505657,730.598870073724,496.7030140090282,519.2833959680438,116.0750375669799,202.786475514428,232.2939709910629,154.846773089304,742.8344528855917,376.3433943392445,858.8457833318253,103.7086016050114,297.6429244958064,64.72213103655824,164.7704467944663,175.2093290794684,865.0224520196312,128.9730938752057,161.0537702967663,432.3510939406003,577.6387954026642,134.6309772388223,916.2934696843352,770.7640113172886,628.7695959344364,499.2574003987282,203.4286596828274,484.6320010184459,284.9743903078951,806.6990919442377,373.6150359612028,703.5509220806653,903.0895283925764,296.8992745955006,236.2364596855996,210.0411170209018,564.5779047927716,472.7097281593409,860.8458521127914,524.8358596697617,25.48328927973439,527.7650153859356,628.553448071961,825.4468361034276,976.7581135857655,596.0360349137503,563.4276054629254,168.2630470806095,144.3449846209702,832.4011740425608,392.5103481824092,866.9678689292483,121.5938926309319,650.7887605814211,398.3692812725759,471.4536687691946,997.0322838039288,921.4219017519719,166.5321333178003,141.6358007777649,472.9036718946433,520.0976396538772,753.9357630321457,905.5646722696557,755.7040447162948,174.4282223165167,951.4915128012615,743.1938386257709,830.7173777514684,92.01353326999282,191.6383068038329,325.2911443474196,313.2847232340299,863.4704318193114,721.811003853479,796.352005003184,426.1779358732412,6.156524646168819,97.80174544910051,477.5417654204842,999.9229991808176,281.0296627138879,375.2343325760376,95.05087747008115,43.32449708288745,58.06965895838554,882.104796768215,615.1324736956193,337.9027453893343,347.5475871691236,772.5682215637379,531.4854022727745,347.9093999359335,178.3498354155337,675.1559985220227,201.720328629818,52.11301662591892,535.3192833882381,168.1118910983726,297.8736801528715,117.8795467679759,0.2904804424804079,80.14775536961282,904.9236694839427,111.195906117184,328.0861518942221,268.2321859841385,354.2356059673408,456.5536903480784,496.1997244955039,154.8224720893532,717.8556508002131,554.0998217436019,151.6912515050225,882.7843469953092,321.4485535032342,191.5159021464716,971.7287341932434,101.28840575986,585.8387288571516,131.4417585411304,95.19573398642044,351.7681161648446,146.2842049758342,203.925385700504,702.3536966658913,956.5199501609988,346.8671596361637,103.1709095012261,373.9574683708872,876.5746396391535,954.701109768218,3.3246013351365,143.9548861905722,993.4759871072489,458.5798636351619,598.6330288455976,869.5941115122261,232.2975514607027,201.5425293713541,350.9153115334526,599.1551389913798,167.2777292166267,474.8640449134931,225.3158079578149,212.6212074480118,524.6335787347674,705.8472319998998,833.6409427382243,288.1480885148738,40.00286107882991,844.8355858422981,436.7949438452698,835.4304841884554,322.760995162074,661.5518744390234,362.9423293112509,516.5577952361468,959.5041805689708,76.2195922789255,449.7722049475518,30.47345021295988,22.68743190108214,489.2080549566113,148.652841406247,307.667961487392,644.0456889774863,44.45142207874517,475.8946446123974,136.6744531023663,87.5332914700421,234.4961716954113,408.3055147939853,234.6534548488694,455.4545029324733,177.1576847774711,832.221613187446,820.6156449488436,13.75391241803482,119.7796557656395,589.9684152519184,166.7283825421372,170.8819988048086,19.9115285742616,835.0085773668292,162.0060099111898,653.0607476146244,303.7897182180499,172.0297369975735,790.304739861891,690.9523074007371,386.7628226926377,637.8294930969503,651.7628588023423,879.8057487606098,0.4210281187766363,991.9851589910617,975.4287185964308,513.7039537139722,147.9433379824941,443.1679940052182,431.5565467959068,823.8307860790895,294.567162773836,178.3678909662962,829.1434705393126,507.2759452775475,237.638743704948,124.0216312576186,989.1598042981512,822.3500707290834,635.7563560063747,895.2194195684135,952.784686327346,483.6814717779315,297.2834633184986,786.8122797397954,414.309354226249,820.4621452933467,211.1524866014498,390.7871425108924,998.0888799755317,881.6690160341882,229.7136891771637,966.2333526491342,797.9740005908413,310.8306561181465,512.4240394273885,157.0753991403968,953.9855867410012,931.1558729648385,265.5412323146784,807.7673757484962,936.7569200400062,457.0671038036547,300.1023658086091,73.55511238498386,324.4752457013705,87.14465521608696,268.8725219428877,926.8136280248006,352.8989014927759,181.1833131039438,686.1712987004646,640.2202167735529,839.8423105663817,983.8067917077834,382.5304877862942,455.5472440344967,171.8373890835035,548.6131359583759,230.8023559072997,787.5249096134328,956.6462128221273,481.0172587079076,549.0279302694964,939.2517329842093,92.20374286743055,585.0751663488686,808.8308390271062,148.3960375880804,994.3654490608561,957.6941323269597,94.70941503285869,483.9579739998831,668.3063729052927,540.9760524243936,225.2094192547768,3.876265605853994,452.2231037040348,494.8968889633645,860.5194370544141,361.2920005625542,386.4787655819574,965.2820192115763,512.9764054496662,240.7738544236747,354.2638469274453,845.8432419439048,289.8700448171562,70.99832644266931,781.1384572559681,525.6838288743439,286.8337483549648,342.5904853933446,940.4762941135448,383.0717459242194,87.36735120758758,918.2880059435443,298.1130766207879,879.3164491091466,189.9082242464219,840.7482327151803,111.6176411097951,594.4463925410279,786.8645339211749,216.8554473746826,373.6116603825296,488.1720144712236,78.07995894834397,925.1336743706529,721.6651475623553,224.9474000301898,814.8086018929298,291.1760491743572,26.1350805061567,112.4753095733353,795.8584734219398,448.6223465989448,372.5279990455732,62.50123216887062,119.7085385768248,648.2458690406037,184.5130967835491,732.0128072667926,241.9147026920294,860.4081449380182,707.0472178547863,297.3164805664292,982.9947920436947,494.1698682932974,458.2090622085188,270.465918011249,358.3208254344393,720.6840150620249,340.7171048879237,671.5601774265805,750.1785735367697,666.5158931475672,260.2981875000047,510.4777163409059,132.6161311625578,689.5040262907296,118.738113957801,604.9652125709529,993.3628025433807,306.0202003950348,631.4812887606589,650.3276800039819,21.45640692741443,193.4698783762147,995.7792884650544,321.9214828321345,685.4441779132206,328.3125275412167,771.3687088207196,831.6373125797312,879.6919732725677,252.2980669756877,948.6503852292199,911.9020085371574,941.4078606951088,170.6084376995491,57.31782692359659,793.7940907635699,68.32096542619213,536.2411474512149,251.2854324892561,755.5881839970073,677.8564060469421,393.8891498343503,337.057484005139,94.94126592527202,590.7769792670276,594.0511010559513,188.6905409343031,267.086727203376,694.4959613934606,843.6717306467108,732.6164309552947,32.34875017420796,713.4589993923246,457.1623292086471,305.6173307381651,534.3619596838774,446.4624558791809,307.2129279874325,327.6806847786907,681.1018738341992,624.1121737398729,297.5001434318256,76.83238344119508,504.6377379934479,967.024547498219,920.6811203251971,416.0124163217901,130.8373776873748,781.5698025662312,105.4027867994284,279.1935313861787,93.44065938770801,8.255410011976682,889.4667154594636,84.35506563836478,870.7847501480881,41.77537562408269,863.2611748125689,141.4739243413666,315.5139294990869,321.8684961655496,552.400850948133,329.2690754538724,201.1018852708405,84.91065869336514,395.0818988471673,453.3040460447334,25.35115323278641,279.2957389165161,734.2101972243796,776.6325496028329,393.6231398925293,778.204010230584,466.6225991522067,274.799945426546,9.549995888746343,562.6827839588201,405.6820075054104,526.0239511383809,748.6760712921042,506.7809021597639,868.6866256728241,5.334688818703726,629.8501401347342,617.8312290542905,599.6191723270431,227.00644807285,432.3818513343026,735.4861375575355,16.1176831536543,745.868021969622,354.4599112842511,598.9785416046989,297.3727603896394,799.4293006134357,842.6130911533782,527.2670097310408,889.9007634678393,123.4839698874783,798.2230148269902,757.9748620083439,884.5467827676548,170.0040782662128,887.5893055869216,722.4418868880914,700.5367384760345,830.5650748454802,283.5057742351227,827.3194487333853,194.715281107796,815.1668565418418,515.0296769640547,881.5475697077566,886.7434532785526,7.534336302212596,407.7289544081916,536.8807318326461,919.3857470151902,658.5788948734192,643.8150543923559,803.8452434371436,339.2639357313811,116.2500843015733,258.5434202377421,714.4421877872395,763.9789799060575,8.967837322954013,523.0172423287374,922.8897206126198,444.9846099340285,577.7779759735697,891.3052444771422,629.5902312871024,492.2825803478633,281.5080393485297,579.7295787277303,605.943040738787,634.6657535222665,312.5060174206765,462.1251912145527,758.0535457274194,288.8110029924712,84.90394478892161,509.3578987332796,984.2380518020308,926.624107140407,88.9366367314647,456.1928773560528,425.2321661567465,350.7918190913237,920.9635667134838,743.8791346474919,497.219252631636,288.6347893106913,17.9363475264685,46.52729446372357,752.2464053482964,877.0165964388366,84.68569679403942,376.6160203966387,167.2439273294266,80.79292815215557,700.8292114831644) NodeLocation: 128,240,1 NodeSize: 48,24 ValueState: 2,563,347,416,303,,MIDM Aliases: Alias Al1477504353 DisplayOutputs: Objective Data_Points_by_categ Variable Category_counts Title: Category counts Description: The number of data points landing in each category. Definition: Aggregate(1, Data_category, I, Category ) NodeLocation: 264,168,1 NodeSize: 48,24 ValueState: 2,32,744,416,303,,MIDM Aliases: Alias Al1477504952 Index Collect_index Title: Collect index Description: Index to be used in your final result, indexing the data points within each category. Its length has been calculated so that it is exactly the length necessary to accomodate the category with the largest number of data points.~ ~ The definition uses a technique called "Repeated Parameter Forwarding". In this case, it uses this technique to max over all the indexes of the array. Although for this challenge problem, it would have been sufficient to write:~ ~ 1..Max(Category_counts, Category)~ ~ since we know Category_counts has only one index, the more advanced version used here will adapt if additional indexes are ever added to the model up-stream, causing Category_counts to be 2-D or more. It is a useful expression to learn for cases where you need an index that is guaranteed to be long enough. Definition: 1..max(Category_counts, ...indexesOf(Category_counts)) NodeLocation: 416,104,1 NodeSize: 48,24 WindState: 2,1035,270,720,350 ValueState: 2,136,142,426,791,,MIDM Aliases: Alias Al1477504877 ReformVal: [Undefined,Self] DisplayOutputs: Objective Data_Points_by_categ {!40000|Att_PrevIndexValue: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254]} Objective Data_Points_by_categ Title: Data Points by category Description: You challenge is to define this variable to perform the desired transformation. If it gets complex, you should introduce additional intermediate variables or functions to keep each step simple and understandable.~ ~ Your transformation should re-arrange the values in Data_Points into an array indexed by Category and Collect_index, so that every value in Data_points appears in a cell of the final array, in the slice of Category that matches the Data_category of the point. This is illustrated in the image on the diagram, and in the desired result variable. NodeLocation: 264,240,1 NodeSize: 48,32 WindState: 2,1063,79,720,350 ValueState: 2,104,711,1348,305,,MIDM DisplayInputs: Index I, Variable Data_category, Index Category, Variable Data_Points, Index Collect_index Variable Desired_result Title: Desired result Description: Your result for "Data points by category" should compute the result shown here. Study this to understand what it is you need to compute. Definition: Table(Category,Collect_index)(~ 676.6832734815232,273.2078653169833,690.3059346090564,794.6616745529053,0.8400655355491049,481.0069634025018,57.13220595248612,932.8851573788027,523.5731413232038,775.2506722580878,572.2481853199416,159.4526358691289,766.0830769529953,20.83852469028836,233.0844696765227,638.0486416807624,858.4234886143466,958.9025196427957,485.2439414175432,201.512829960097,761.5250576108346,323.5498230548342,338.4066998671772,984.8644751984926,808.2491321527629,856.9556725476663,102.1526228180866,999.0637758742383,594.0028715850799,617.2346610656169,853.988508625882,865.3503641790479,630.6956716024762,874.8299469588465,322.9081986113024,264.8811183240642,48.92832788123205,142.4987656727893,914.3589394699591,103.2590629082448,943.5707572584836,418.2152899066989,554.2756386819648,897.4893353402099,605.7087013524531,992.5147881696536,806.8690978953937,337.3504231392175,776.5058268683523,844.7930551342633,717.4318156751953,103.7006895540751,590.1988542593078,155.7882778140662,602.5217769679249,316.4127079380735,169.7360575989522,253.6720420483835,466.0107071818834,224.2888385543082,352.7202794108168,505.7542689637068,389.6129165727705,567.4242091213466,432.4603506515084,633.8426971965669,989.3579930017506,557.3410496848361,253.2334296280674,304.3849111089413,230.142202335476,934.5309808545425,94.25175892852793,518.549011330376,922.9797389930951,986.7830155355777,432.3517807909994,749.9182004248343,102.1712520635553,594.0295511828874,910.1219754247562,383.7443368433716,128.8546985615299,520.4732569495557,23.3354400952046,275.3202176072263,251.4175028779626,89.31231176914289,22.3831716097813,479.2624434825324,225.7036940314359,854.6667307869842,770.2130650962764,454.0204813024125,171.7496566342887,720.4962771947012,879.7234231046044,601.1445790534581,992.6054915378827,564.8034520283358,989.8207606700346,159.0867355275372,990.0160701898932,401.9855863423951,84.6480504072495,270.7308457562378,779.3211125672428,303.9425375424058,116.1523550358379,381.9793338803478,375.9623511582438,591.383111938547,420.0811532419553,200.0916815363298,786.2102416279773,873.1563882311602,410.6847161476895,608.2347322293718,783.4034761336648,607.1969469111399,87.55644973719328,404.0143398586728,627.4602406786104,123.9300813171687,892.8766976543128,662.2233785047305,313.5632813505657,202.786475514428,232.2939709910629,154.846773089304,916.2934696843352,203.4286596828274,296.8992745955006,25.48328927973439,527.7650153859356,168.2630470806095,866.9678689292483,650.7887605814211,398.3692812725759,520.0976396538772,905.5646722696557,755.7040447162948,951.4915128012615,95.05087747008115,58.06965895838554,168.1118910983726,297.8736801528715,111.195906117184,354.2356059673408,154.8224720893532,151.6912515050225,882.7843469953092,321.4485535032342,971.7287341932434,95.19573398642044,598.6330288455976,869.5941115122261,225.3158079578149,524.6335787347674,436.7949438452698,449.7722049475518,148.652841406247,307.667961487392,136.6744531023663,408.3055147939853,832.221613187446,589.9684152519184,303.7897182180499,0.4210281187766363,147.9433379824941,178.3678909662962,507.2759452775475,124.0216312576186,895.2194195684135,483.6814717779315,797.9740005908413,512.4240394273885,265.5412323146784,936.7569200400062,73.55511238498386,324.4752457013705,87.14465521608696,926.8136280248006,181.1833131039438,983.8067917077834,939.2517329842093,585.0751663488686,994.3654490608561,957.6941323269597,483.9579739998831,225.2094192547768,494.8968889633645,965.2820192115763,240.7738544236747,354.2638469274453,845.8432419439048,525.6838288743439,383.0717459242194,918.2880059435443,216.8554473746826,488.1720144712236,78.07995894834397,925.1336743706529,291.1760491743572,26.1350805061567,860.4081449380182,297.3164805664292,982.9947920436947,358.3208254344393,340.7171048879237,306.0202003950348,995.7792884650544,321.9214828321345,941.4078606951088,170.6084376995491,251.2854324892561,590.7769792670276,594.0511010559513,732.6164309552947,713.4589993923246,305.6173307381651,446.4624558791809,327.6806847786907,504.6377379934479,41.77537562408269,141.4739243413666,321.8684961655496,552.400850948133,329.2690754538724,453.3040460447334,506.7809021597639,629.8501401347342,735.4861375575355,745.868021969622,354.4599112842511,598.9785416046989,297.3727603896394,757.9748620083439,830.5650748454802,194.715281107796,815.1668565418418,116.2500843015733,258.5434202377421,763.9789799060575,8.967837322954013,758.0535457274194,288.8110029924712,84.90394478892161,509.3578987332796,456.1928773560528,497.219252631636,46.52729446372357,167.2439273294266,700.8292114831644,~ 194.6681659643856,233.9718361543361,112.6727141033265,702.3662657953643,669.8292226855779,693.7862190854671,445.0528935739085,45.42726420118812,88.2862634436629,291.0073126158711,402.5835392077377,971.282998552212,284.0339058470139,735.7759376688748,364.6502459257144,712.8863635998621,177.6619256370058,722.8229454359147,827.2296976424892,274.6476364669612,118.0940601593321,682.1326951878764,760.7260335985227,118.9814559738065,819.6730640808461,146.143630680695,236.0008504409347,301.9589494457277,494.9234046483987,547.0424948944909,51.32203318705876,596.4696465974998,566.5420901805825,593.344282169521,710.6593277820662,652.8573826201528,223.7065742834036,506.5131180484374,548.4712196274061,139.7883804234622,547.8685943167044,134.5423735373385,77.87806916883125,72.02390398458759,296.7045750919285,980.1048315037531,477.0678237439449,994.2117826986181,797.2010079758246,787.6454451063859,192.2334321738377,862.1421064539543,964.7801266819146,619.4293995478328,663.3859233294548,963.8876109215839,394.6369599525989,867.2945456892692,380.930811344148,304.0266150161748,660.9187236339407,323.3889259041235,679.783194642413,664.430999972127,637.0326171801577,654.1607224634665,591.0693265456098,898.9155357232855,552.1758839265332,748.8194875180813,724.2650854048623,214.105910255623,965.0997146801557,73.40890125995917,889.2368664449252,446.5930408083801,160.4455426151145,478.0336662558996,986.1081265779716,602.7297142905787,818.6496481386243,116.0750375669799,297.6429244958064,865.0224520196312,128.9730938752057,161.0537702967663,577.6387954026642,134.6309772388223,770.7640113172886,628.7695959344364,484.6320010184459,703.5509220806653,564.5779047927716,144.3449846209702,832.4011740425608,997.0322838039288,753.9357630321457,174.4282223165167,92.01353326999282,721.811003853479,999.9229991808176,281.0296627138879,882.104796768215,615.1324736956193,201.720328629818,535.3192833882381,268.2321859841385,191.5159021464716,203.925385700504,103.1709095012261,876.5746396391535,954.701109768218,201.5425293713541,474.8640449134931,212.6212074480118,705.8472319998998,844.8355858422981,87.5332914700421,234.6534548488694,119.7796557656395,835.0085773668292,879.8057487606098,975.4287185964308,443.1679940052182,294.567162773836,989.1598042981512,635.7563560063747,297.2834633184986,211.1524866014498,310.8306561181465,807.7673757484962,548.6131359583759,787.5249096134328,148.3960375880804,940.4762941135448,87.36735120758758,721.6651475623553,814.8086018929298,372.5279990455732,732.0128072667926,720.6840150620249,666.5158931475672,993.3628025433807,771.3687088207196,948.6503852292199,911.9020085371574,57.31782692359659,677.8564060469421,337.057484005139,94.94126592527202,188.6905409343031,694.4959613934606,307.2129279874325,967.024547498219,84.35506563836478,870.7847501480881,315.5139294990869,395.0818988471673,466.6225991522067,868.6866256728241,617.8312290542905,227.00644807285,889.9007634678393,884.5467827676548,283.5057742351227,881.5475697077566,407.7289544081916,536.8807318326461,281.5080393485297,926.624107140407,752.2464053482964,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,~ 0.1701819711225955,878.7642106780615,15.77740396176344,402.2272845740557,372.952830220085,184.7326216216817,170.8283853581308,278.5778028325074,220.9854434342056,286.8009918773552,356.8657666243919,57.71046227668899,826.1331393505136,757.855570762351,99.85692617476774,277.0796056264451,764.5241188651529,831.3202275109106,296.5623197595413,858.8855754858281,143.2116917070056,592.151874952089,463.7991159520108,522.4466903705367,450.6818533179731,862.9485298241249,601.404667646347,713.4287183701194,965.9750400883961,872.909665048546,963.9841811563746,696.8211004030059,521.3614709309123,836.2536061723966,515.9615685771972,522.2419358427832,567.1797583658154,642.2942670259132,865.4321980967337,876.5260530060745,604.2080226373896,976.7546625699637,333.5852210100671,773.3728730927095,794.58873430015,91.54479349569641,475.0702988705925,622.5095822580669,701.0455586486708,973.8827026327525,231.0220530401087,917.5914842251649,835.6374217363249,515.1011117338674,392.5131170044249,527.2133981470081,875.5826567651624,511.5721190867816,747.7636955435219,940.8915810943076,636.6984004325692,454.3129072777521,378.0242942171284,629.7109884348283,431.7955264969708,799.2359166030008,85.03705267097664,362.2284752140886,973.9829231863762,736.7449876557779,172.6310873276699,723.2903995193963,198.7416801036995,837.567801045984,906.0181229868988,181.5376752901532,657.1735631009441,621.0804579877669,192.7223797853675,552.5826241600247,784.8563314344996,730.598870073724,376.3433943392445,175.2093290794684,432.3510939406003,284.9743903078951,210.0411170209018,121.5938926309319,921.4219017519719,472.9036718946433,6.156524646168819,337.9027453893343,347.5475871691236,52.11301662591892,554.0998217436019,101.28840575986,585.8387288571516,346.8671596361637,993.4759871072489,167.2777292166267,835.4304841884554,322.760995162074,661.5518744390234,362.9423293112509,76.2195922789255,475.8946446123974,386.7628226926377,786.8122797397954,820.4621452933467,390.7871425108924,881.6690160341882,966.2333526491342,953.9855867410012,640.2202167735529,455.5472440344967,956.6462128221273,668.3063729052927,540.9760524243936,3.876265605853994,512.9764054496662,289.8700448171562,70.99832644266931,342.5904853933446,840.7482327151803,594.4463925410279,786.8645339211749,373.6116603825296,112.4753095733353,241.9147026920294,270.465918011249,118.738113957801,604.9652125709529,193.4698783762147,328.3125275412167,793.7940907635699,681.1018738341992,624.1121737398729,920.6811203251971,416.0124163217901,93.44065938770801,8.255410011976682,889.4667154594636,776.6325496028329,9.549995888746343,405.6820075054104,526.0239511383809,748.6760712921042,799.4293006134357,842.6130911533782,170.0040782662128,7.534336302212596,919.3857470151902,922.8897206126198,577.7779759735697,425.2321661567465,17.9363475264685,376.6160203966387,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,~ 622.6901428879659,653.1631395468316,936.0208464488484,218.2175089689984,701.0191696235069,558.2743489920507,920.4510524498537,85.59213675818972,266.9185373312415,245.1880067797322,295.3582193215183,766.619399546934,39.74590452376096,498.2663409310702,196.0447673667431,989.0946289473654,593.7172433332155,24.06333434584706,924.4051328508207,315.6138133795997,848.561700828635,436.8776415646437,472.2344733179708,387.2175153285347,566.8095161983787,836.3939811645048,273.6414318315878,598.8910815673373,698.6827024718201,241.9556059138643,728.5317041578384,325.1256748685267,628.4799122384191,46.58314867251699,753.9200655901433,662.1952222949803,268.3598232773877,778.686379445105,967.9574933685165,831.3104286004373,450.7053869081221,917.5245812710024,834.3734875481453,960.0753723457807,969.8459557117177,960.6875302086993,346.1238785395976,596.4790524898465,970.9850731170667,573.9708699164776,398.403632174434,49.93891764895009,368.6098481382289,91.81653153701525,409.1267163907768,173.3246250885188,17.08988939276426,304.1462610960688,217.7442411043421,885.6442802984474,19.12850142416009,580.3474097421148,858.8457833318253,499.2574003987282,825.4468361034276,976.7581135857655,141.6358007777649,830.7173777514684,796.352005003184,43.32449708288745,675.1559985220227,904.9236694839427,717.8556508002131,458.5798636351619,232.2975514607027,350.9153115334526,599.1551389913798,833.6409427382243,288.1480885148738,516.5577952361468,959.5041805689708,489.2080549566113,644.0456889774863,44.45142207874517,234.4961716954113,653.0607476146244,172.0297369975735,790.304739861891,637.8294930969503,991.9851589910617,513.7039537139722,823.8307860790895,829.1434705393126,237.638743704948,157.0753991403968,931.1558729648385,457.0671038036547,268.8725219428877,352.8989014927759,686.1712987004646,549.0279302694964,92.20374286743055,94.70941503285869,452.2231037040348,386.4787655819574,781.1384572559681,224.9474000301898,184.5130967835491,707.0472178547863,132.6161311625578,689.5040262907296,631.4812887606589,650.3276800039819,21.45640692741443,831.6373125797312,267.086727203376,534.3619596838774,279.1935313861787,279.2957389165161,562.6827839588201,5.334688818703726,887.5893055869216,700.5367384760345,827.3194487333853,658.5788948734192,605.943040738787,462.1251912145527,350.7918190913237,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,~ 249.528277315911,267.3530211985824,182.1775702676631,91.989032967011,221.5434644471591,764.8709298879238,71.74180544528264,362.3920284967833,971.8429744112506,951.6432652956077,243.1640914842319,78.91366448202807,2.826100216631824,466.2933607894431,976.937055577029,381.0930831269794,944.3774618880718,717.1159147830289,948.3823152018629,461.571597709121,621.9030835767757,896.7085205468854,506.9988013743417,420.0409638788742,472.7042082104386,306.8973246528289,200.9776468393289,23.43519685018584,59.07675906041486,352.6763726736775,864.3179260493805,775.3185768496797,229.7710241888515,187.4138345883292,785.247645240858,2.032179852031255,473.0075306599064,30.46717542711048,311.8287629037298,653.1257599839595,761.603542026879,941.0696541616086,78.30808175648939,146.6135914188873,557.6774941560242,44.63626586116676,742.8344528855917,103.7086016050114,806.6990919442377,472.7097281593409,524.8358596697617,628.553448071961,596.0360349137503,563.4276054629254,392.5103481824092,471.4536687691946,313.2847232340299,477.5417654204842,772.5682215637379,178.3498354155337,131.4417585411304,146.2842049758342,702.3536966658913,373.9574683708872,143.9548861905722,22.68743190108214,177.1576847774711,13.75391241803482,162.0060099111898,822.3500707290834,952.784686327346,414.309354226249,300.1023658086091,171.8373890835035,481.0172587079076,808.8308390271062,860.5194370544141,361.2920005625542,298.1130766207879,795.8584734219398,448.6223465989448,648.2458690406037,671.5601774265805,297.5001434318256,25.35115323278641,803.8452434371436,339.2639357313811,523.0172423287374,891.3052444771422,492.2825803478633,312.5060174206765,743.8791346474919,288.6347893106913,84.68569679403942,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,~ 246.5639418207873,988.9358854801096,481.1130228830097,581.6732419569386,186.184400779281,741.8424453315523,970.0431940006293,821.7568485167608,842.9396561546902,916.9835093975922,145.9786873990571,924.2364666071891,876.9317636624592,575.9407540671252,992.7404709126523,569.4117748967427,320.2157096565774,901.876082598174,583.5054999140582,574.0296969069307,59.58914293888451,423.3097771291201,361.1133999010145,58.33605167378487,760.1804438793009,739.6273928413295,649.992158939127,151.6806511914733,193.9652455942544,713.7935700424916,461.5910446558106,27.4646808521192,558.1471224120572,315.2052216768289,926.6645270058255,562.4079022381492,835.5310414151899,225.7176592134487,230.7382096679594,875.1945401892041,758.0503466343743,651.6182402389209,139.4170011111614,988.3225290050369,23.41897600489621,430.9046293752755,578.6574760352529,561.250733007328,496.7030140090282,519.2833959680438,373.6150359612028,903.0895283925764,236.2364596855996,426.1779358732412,347.9093999359335,456.5536903480784,496.1997244955039,351.7681161648446,956.5199501609988,455.4545029324733,820.6156449488436,166.7283825421372,431.5565467959068,998.0888799755317,229.7136891771637,839.8423105663817,230.8023559072997,879.3164491091466,189.9082242464219,111.6176411097951,494.1698682932974,458.2090622085188,750.1785735367697,879.6919732725677,536.2411474512149,755.5881839970073,843.6717306467108,32.34875017420796,457.1623292086471,76.83238344119508,130.8373776873748,781.5698025662312,863.2611748125689,201.1018852708405,393.6231398925293,599.6191723270431,798.2230148269902,515.0296769640547,886.7434532785526,714.4421877872395,629.5902312871024,579.7295787277303,984.2380518020308,877.0165964388366,80.79292815215557,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,~ 67.4388679058472,314.3725615527353,721.3305517664787,185.7186263360636,3.982296681023341,496.0294293686885,102.3477986931558,201.2238973757364,609.908715174491,264.2704827078946,59.6770765537755,406.2627304374532,763.9826916921803,939.7394843118915,464.9841694463902,797.8675983836257,683.5207285748426,9.417330850575739,879.1317035812567,289.8671903134637,232.9121363502518,31.44811514366796,367.5387461518583,472.1435361877752,318.9534118021621,733.4321763987804,152.0019528232524,514.7253738319154,27.25957521575483,722.2292496460626,211.9984730202698,956.995903028639,536.3797543274145,999.9946523457742,60.98811564081726,5.437764807342442,861.8849911083863,728.4106862397914,875.3534610734105,917.7122520831005,197.6776706043993,66.97386273507675,436.9401514702198,256.1642575339248,509.715311932245,65.62026080937137,730.9899934246158,80.3624196352262,251.1492070048811,341.7447224919427,651.1868092469809,492.7234358586015,269.010004712739,61.81740344586662,64.72213103655824,164.7704467944663,860.8458521127914,166.5321333178003,743.1938386257709,191.6383068038329,325.2911443474196,863.4704318193114,97.80174544910051,375.2343325760376,531.4854022727745,117.8795467679759,0.2904804424804079,80.14775536961282,328.0861518942221,3.3246013351365,40.00286107882991,30.47345021295988,170.8819988048086,19.9115285742616,690.9523074007371,651.7628588023423,382.5304877862942,286.8337483549648,62.50123216887062,119.7085385768248,260.2981875000047,510.4777163409059,685.4441779132206,252.2980669756877,68.32096542619213,393.8891498343503,105.4027867994284,84.91065869336514,734.2101972243796,778.204010230584,274.799945426546,432.3818513343026,16.1176831536543,527.2670097310408,123.4839698874783,722.4418868880914,643.8150543923559,444.9846099340285,634.6657535222665,88.9366367314647,920.9635667134838,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null) NodeLocation: 400,240,1 NodeSize: 48,24 WindState: 2,189,389,720,350 ValueState: 2,1361,94,416,303,,MIDM ReformVal: [Category,Collect_index] {!40700|CellFormatExpression: if Category='B' Then CellFill('yellow', 0.2)} Variable Data_View Title: Data View Description: This variable is here just for your viewing convenience, so that you can view the categories and values of the input data in the same result table.~ ~ As with any Analytica model that you build, you should not use a "report" variable like this (with heterogeneous data) in the definitions of other variables. Your solution should use variables Data_category and Data_points directly. Definition: [Data_category,Data_Points] NodeLocation: 128,312,1 NodeSize: 48,24 WindState: 2,153,466,720,350 ValueState: 2,1028,197,296,363,,MIDM ReformVal: [Self,I] {!40700|CellFormatExpression: if Data_category='B' Then CellFill('yellow', 0.2)} Text Te1477503428 Title: The desired transformation is illustrated here: Description: The values in Data_points are re-arranges do that each value is placed in its category column according Data_category. NodeLocation: 912,296,-1 NodeSize: 392,240 NodeInfo: 1,0,0,1,0,1,0,,0,,0,,, NodeColor: 52427,58983,65535 Pict: (000000000000019C030A0004669C000089504E470D0A1A0A0000000D494844520000030A0000019C0802000000F6FAC001000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA86400009BEB49444154785EEDBD0DB8254575F77B8C328CA8C88DFA661EF3EA437C4C5E82AF5EFC665E4DE4F1E366924B901024BC268449BC4E009388283282DE2108C2A0E18846B951E340FC20919889120747D4E1431981C1011918E4CC30F27960181C14CC28909CBB565575F5AA5555FDB5ABBB77EFBD7ECFE2D05D5D5DBDAABA56D57FBA6BEF3DF3294110044110048120F2481004411004C1A1AA3CFA7D4110C6061396822008423B94CB23188B0F3BECB0D98F9EBFE9C6DBEEBA6FB79898588F3677C7DDFFF695AF40488A48120441688F12790443F09FFEE9B1D7DE70CB861BE6C4C4C4C6C46E9BBB13025314922008424B94C823F8472A6AA3EF6F1313131B2B038504E1690255100441484A913C827F9B7EE843E75EF1FD6D6262626368FFF44F97143F4082A3822008538519FE46A6441E6DBAF1B62B376F1713131B437B60D723B1B100D265C9A09898D85459DAA59925F208C6DF2B6FBC434C4C6C0C2D268F2051960C8A89894DA7A55A9A592E8FAEBAF10E3131B131B4983C922583626262D36C49966696CBA3AB6FDA212626368616944790224B06C5C4C4A6DC4A976696522E8FBE7BF39DD56DD5273FF6AB7FF082272FDB67DFC3FEDBEB571CF6E56F5FC332888989A5B2983C922583626262536EB187EBD52997471B6FB9BBA27DF4E22FECB5FCE98B4EDA17EDDDCF5CF49E672EF9835F5BFBED8D2C9B985863FBC635B7FEDD9AAF7DF0BC7F1AD1A010286A5865FA16934790CE5629898989894D9575218FBE77EB3D15ED152B7E6BEFBFDC67D1314F7DF2D2458BDEFEB445EFDA77AF139FF9ACE73EE79BD76E6539C5C49AD9873FB9F6F2EFFCE0A6B97B473428048A1A5699BE15C823B64A494C4C4C6CAAAC0B7974EDD67B2BDA337EE7194FFDB3273FF9379F34F3A499456FDE6BEFBF7CDAA2773E6366EF99933F7016CB2926D6CC3E78DE3F6DFEE13DDFBAFEF6110D0A81A20ACA3CF36F3FF38747AD88191C65F9C16A95A94BF05398D1327D2B90476C9592989898D8545917F2E8FADBEE2BB6F77FEC6F8F7EEF9FFDD5074FFBFD63FFE869FB3FED979EF7A4BD0FFBA5A71EFB4B7B1FBBD72F1DF094999999BF7CF769EC94EB6FFBFA7B0E3BF20DA77F9DA5AFBBE0AFDF70D85F7FF8AAFBAEBFEAC23FD11B4E0638CB49BCF0F423FFE482CD76F7FA2F9FE397A98C9F38B229FF33737C6864E18A841B61AAEDCCD97FBEE9F67BBFBD696E448342A0A8823241AF3C11078EB2FC60C5657E6BD3ED70D642066C9FA5B491D957292ADBDCB7AFD7F9D16899BE15C823B64AA9D864C9A09898D8845917F268D3EDF3C576F8694783185AF4FA5F7AF7FF7BC6AB0EF9ED457FB1CFDEC72FDEFBA827CF2C066934F3ACE7FCB74B375CCF4ED974FBFAF71CF6CE3F39EE9D1FFE0E4B04B5C112A9E159CED17F0519B1DEEE5E74FA91EFF957723437EFC4518D16A8DC266EB856EDD2552B32ED86B263DBFC86EF6F1FD1A01028AAA04C102B460A8580A32C3F58A0CC1BB6A9EFE180BF68679DF70F70E27F66B06D38FAED4D3A27C823B5B1691B2DD3B70279C4562915982C1914139B0C1BCA32CA36CAF4AD0B7974C3DCFDC5F6EABF780DCAA3DFDF6B9F7D9EF6D6771F8783EC3B9FFEE497E173A3DF7BF391DFBE7E2BCBAF0C45C37B4E7FE79FFC7F37E5896B57BFE1F4D590FE91EFDA6CCCF02CE7E877FFF14F0E5BFD8FF951BBCDCC3B7154730B74DC6056EDD2552B32ED76D647BF74F3B6F9AB6EDC31A2412150544199561EC106359BC8F283F9655EF1FDED99DDA1373EA414D2632E9002E924736EB44CDF0AE4115BA55460B264504C6C326C28CB28DB28D3B72EE4D1F7B73D506C07AFF85F4FFDF3272FFA137C58F4E1BFFF875F79C97F7FD2AFFCD2CC5E33CFD8F7999B7E781FCB9CD9374E06D1B011FEAEFE4793F2838F1CA753E0AFCDA00E6D04E9A0DE61FDFD3FE689F959479EFC6F6AFBDF56BFE16FBEA1D3FFF16FB2375F2625546CE8126FC8FD29365A0E58EE867B69C846777DC70225908A443D84724C669687173B6986B263FBFD57DFB883DAD9B39FD5DA25687094E507DBB21D154C5EE6B6F9AB6FFC113538F101056C14275ADBA2A48C2D73CB1DF75F79E38E2B37DF61FE6EDE71D5E61D57DE7887F6569703C0F687663F8B79301BE65162EB8EABD42950882DD3B70279C4562915982C1914139B0CFBA02CCD24D6853CDABC7D67B11DBCE2354FFDF3A72CFAB3A7823C3AF08D2FDFEBAF9EB9E8A47D9FF2D2C57FF68EBF6639895D0E93FADF6EDCF97998E6BFA252367EEE98E33FB73E4BB719D486C9B3FE53EF7C8349CC0D128FF9D4CDB09117955BB0345B4228F12BAB75696546CB01BBF96F8F67570F5ED15A203154915021DAC3AF8084BADCEC1E6F4EB4254CB07DE8FC4B6EF9D1CEEF6EB99B1A048F59BF13028EB2FC60B7FE088BB265C2EE355BEEA10667DDA5D0C169CD26B2FC60E0982DF32CF073C7CEEFDD7AEFC65BEF85BF99DDB3FAFC8B6C21164859FDB18BDC9CC6A010284A97E95B813C62AB947C93258335960C36590598DC79B036CA149B1CC377FAB23433B32EE4D18D773C586C071FF75A1C558FC7A7474F7ED353F1E5DA89CF58F4C78B5FFACA577F7FEE7E9639B3CBDF7BD83BCFFBDE83377E0F55D137EE781034C17BBF42D2BD0CCE59793936C396F38E2787BE726E3608BAA53925904B904113648729042C3F74EEE76D221AF3845C3D7AE9E05162818AC43D3499A1DDDE79DE57422D30A106FAE3B63B77310D0191B32D0E1C65F9C1A01028AAED32AFBD6DFEDADBEEBB76EB7DD7E1DFF9733FFE8FB458B67DEEC7FE11325FB775FEBAADEA14D8B86D9E96E95B813C62AB947C932583854B0647B7E4CE83D932DB285C6CF086B243966666D6853CBA69C7AE627BF571BF05E3ECE2B73D6566EF99E7BC6CC9DEEF78DADE273CF529AF78320CB2175DF2359639B36FBEF7B013CFFB1E6CC0A47EE2795FF9FC31C77FFE72273DDBF89E3D448F526325A8530E3BF70BF6102DCD29815CC2E4AF6EAE27B684A24B078F52F32A52E4A12EE19BEFC5CCB07DEE17204F7EE2C4DAD91FFB172565EEA306C1B3350E1C65F9C1A01028AAED32AFFFE1FDC4E66999B0ADD592D9572998ED367ACAFDB44CDF0AE4115BA5E49B2C192C5C3238BA25771ECC96D946E1628337BD4E802E886C66FE324A9601062BAB84A8D944961FCC2F932CB2EC6E69662DCAE5D10F7EF450B19DFEC9F39FF66B4F7BD2BE33334F9A39F782CFBCE6D0373CE9D94F8241769FA73DEDAACD732C7366DF82897FF65AB5FDD50FBFE1B0238FF9F42D6E3ADD38F2BD5FC59CDFFCF4896FB0671153E9B60455E0F15FF8266C5CFB85637869B7CC1E6F4A53D7CD2F919F5EC96C817A9B9419BD74F0A863BC22F9B9010F21F331C79FA81361FBBD677CB866150669A0156EBFFBC7D7FFF0016A1FFEF8E77470060D8EB2FC60500814D576999B6E7F20B39DF0F7C37F979709DB2CE5237FF7B91B5466FC3B87F9C16899BE15C823B64AC9375932E8B8C18BC243DA1995C1F1E4E4BF79A7C9E63B5054EBE2736357A4DB7A03FE9A9CDE1246B1A936941DB23433B32EE4D1CD77FEB8D87EE3A817EFFD97FBECFDC78B5E7FF8FFBDEEAA1BAEDB7ACF5FFCD57B8EFA933FFB97AF5FC57212FBF62930F15FA7B76F9D3DFEC35FE4E924C3A5A89FC08EF9CC17C859C4AE536A234F8702D5D871FC874F393E5ADA1BCEF8709E88256423CE19DFCECA29302830CB5F72E91F7FF10C5B6CE0A863BC22C46DDF439A999F38B176CEC7BF3C77EFC3DFDFF6E088068540516D9779C3DCCE1BE61E54061B3B6FD8B6F3FB7A7B9B4ADCA6128D657932D3396999BE15C823B64AC937593248960C7A45D9B57DC6E8458FCCAEE53B8047E3B52E3C377A45BAED6F8889E5F621599A49AC0B79B4E5AEDDC5B6CFFFFE3F16BD6BDF457FFD74F8D7E7272FFC6776544C2CA17DEC1FBE76CDE6ED3BEE7F64448342A0A86195E95B813C62AB947C932583F99241BF289572CCA7B678279212826715D5BAECDCF015E9B6BF2126961BE80FB54EC0D110202FCC0AC7107094E5078342A0A8B6CBEC6569662DCAE5D12D773D5C6CAB3E7BFEA2A3F67DF26FED0DE3EC49EF3B9D1D15134B68D7DE72DFF99FF9DA391FFFF28806854051C32AD3B70279C45629F9264B06F31222455DAE5E76BFF72BB01DF2C43F0B528A6A5D78AEB2D015E9B6BF212696DBD9B234935817F2E8D6BB7F526AEFFFD047F6DE7BF1FF7CC94BAFDE3CC70E898989B56405F288AD52F24D960CE64B06E345E10A3F4CB727F212DCB3F23243B52E3ED75876C558957D37C4C48C815668691925CB30DCA599B5A8208FEEF9899898D8185A813C62AB947C9325838E4BAC287BB9C3741D4315F4CF8294A25A179ECBAF18AC725E0259D198152836F5768E2CCD24D6853CDA7ACF4FC5C4C4C6D00AE4115BA5E49B2C1914139B301BCA32CA36CAF4AD5D7974E8A18706E59159F29E8E73CE39676666E6C78220C461610806E109416AC23543CB23B64AC937593228263661369465946D94E95B6FF2684352441E0942292C0CC10AE4115BA51434593228262636A926F24810C60BF53C3401A638020B43B02279E42D54121313139B1E13792408E38516371FFFF8C74F39E594136B02A7C089BA04531C81852158813C6239C5C4C4C4A6CAC6541E81D6315B0AB6EB23F2489818203A569F7BEEF9E79F7FFFFDF7EB5F20AA0E9C0227C2E9A3C8A382B04D8B84AD200863021BEEC082C3632DBA787A24F248981E203A4E3EF9E49D3B773EF6D8633FAD099C0227C2E95088298EC0C210ACAE3C32F19608095B4110C60436DC81F52C8F6070D4D86D9B6E378AD1D9649C152606888E134F3CF189279E3092A72670229C2EF2481084C90346A12498E2086CB803EB5F1E0537E85FBACBD0478111C6D97F3E569775EC3FEBFD4D67BD22DF573BD9910C75064D2C4FB0040B1C8DCCE1579CB5C9A4D8244DD1E520679937D1DAB550170180E8007DF3F8E38FFF44F12FCB675E75F666BD0D6C3EFB5533CB972F9F9959FE2F2605814C59029C28F248108489044621A0C7A599B5E84E1EE90D8B4ED18C288F5EF18A5764EA02E77CDC2D98F77DF1C352FC0C96F49222542249539B44393954F3A67AED84144074402483CA79D870090AA4EFABCDEFA338BA846E2024C3C30FF7288FA063982D05DBF511792408422D6014EA7769662D3A9547006CD35DCDA8F2E8ACB38E35333EEC1E7B96550D5C6720C71EEBEB035D88D120543FA86D853E6C0B2425D3FCE4047609053F6A9D722510295C9FA30FBACEF073DDA394BC04B3432E6EAE929F4C8E9973F4319D91A60B61203A40DF3CF6D8630F59A0095F79D6A687369DF54A68479396EDE0FFF160069CD8973C62C05D375B11441E0982500B1885FA5D9A598B16E591DED0E8DD1823CBA37F3EEB156AD286E95BED7005908B0267B6B7E852D4AC4F5403A4EA447BD81E7473994D92484B34A8A326297C4E869396EDF8CED07C81A339248D9C6237E9E5B2AC2A4D9D835BAF00B26DAF74C105A243CBA35D847FFA53EC75337FFA4F661FB9EE4C1046AF7CA59BB8AB0379A45C41ECB64DB71BC5E86C228F0441A8851E1E9FE86F69662D469247A918591E6D82FFE104AFFE974FF7D9569E62CEB03B19992CD06A201700EA4C0D9E620B2225DAF2485E03BD0A390370AEE7E4039C34B2432EA012DC73F95142B076D9D9E43C833A1DCF31478FFD67D8C1D36C39421C1DFFA0721EA45C8B5AE8CC6BCD9E0113FFF49FCC8EA11B7914DCA07FE92E431F05460C5B24EBA9592754FB59CF745067D0C4F2044BB0C0D1C81C26E19025696A5FAEB193F17AA7813A06DB2D5E49987CF4F0D8E3D2CC5A4C883CC2FFAB591C82370FE76CCB1979C2A38929077366239E3A4BEDD8536C41A444F720192E5DC81980B91C4FD63869C431E60CC9173A4A2185A85C4876767EAE0B9E930923CCA3B6FDA205868EFFFFF88FFF98CBF9CCD13333479F76DA4B678EFE8C49517CF3B497BEF4B46F9A1D039C3856F2486F58748A66D4B09DD22583A929A87812F27AA56F4761DAD0C3638F4B336B3129F20822F715C71EABDE0105C299C4B51A4C0231AE0A8212F251CD0E3BEA6CB71CB5A172E60749629E31871CB55E07333A6959CE8033245FE8A8832AC6A95D7EB6DA087803E7644D8A074AA62FC1A0E31F54CEED199FF9A399993FFA0C6C5C0E02496D1860FFA5A75D6E760C63288F00D8A6BB9A91C3762A960C060B27456489F9E9EA5C0CD6EC606109D196A95C0260124915D4196AD32492ECB4D68250073D3C3ED6DFD2CC5A4C8A3C320300C6731EE324DA6D7087461385194148E8BBE7E00152A0C9AEFFD16BCBCB52C343487ED49E404AB4D8EB2ACC41DF19EA72E8A843A476A6F0B0DB3A5567A1DB42113AFE7FF6B39FDDA6F9148AA34F999DF5A78240CA7670EFA5A7AE373B0638B15F79A437347A37C6C8613B054B0683859332F30BE639D565AC17C112724FF46696C150A184121FC815F2445A902034410F8FA072CC5A4B45974B336BD1441EC1B0981C681C534B4118323AFE1F7DF4D12DC8056F999979CB056A53B3EE94836C026C1F74CA3ABD9D0127B62D8F523142D89A1919FE87B3ADFA9F3F0B3BB3713E5D134C31FA143DC32BD4991A3CC516444AB4E591BC067A157206E05CCFC9073869662752789E9C97919FEE543558429E1708B44C7909653E9022F244E7B282D0002B8FCC5A4B4D874B336BD1441EE9A04A8EA9A5200C192B8F7ED088A99247F8FF2959321840B980A893F2D3ED55906009DEA5982FE52564C47C20A5E689CE6505A1017A78EC7169662DC6421E9D72CA29F0D7D45210868C8EFF471E79E4A646C08953248F60C2CDD6B7056661321DEB69DC9F9A5541CEA23A3BAFABB3DD72D486CA991F248979C61C72D47A1DCCE8A4D99CC1C28365E687F3CB20F112F4B5547DB3EB1AAA9660F204BC555BFC5AF9962034C3CA23B3D6B2F3A599B568288F5E9E149147C2C400A17BF2C927DF75D75DBB76EDDA5C1338054E9C829FA4B513723EB90767613D4B638E812E19044285D3BC26352F124F70FC282C21D432F54A006C6A9691B44FEE5876D4295A106AA0E5518F4B336B21F248105202A17BEEB9E7CECECEDE73CF3D8FD4044E8113E1F436E411A899E448D80A82501D2D8F7A5C9A598B91E411C89A11B1E5B0711676051FD33A11EE1F26C6FB4901421700E970F2C9274324D7024E81137509A638020B43B05AF2C8F4A1D418E7044110CA80910D06BA1E9766D6625479A446F286D072D8380BBB2693A0A8F22FF5F36667AB9851256383F17E5230376C644C7104168660FDCA233F6C0541100A80910DF4CD23FD2DCDAC450279A4B7ED4645203F2D878DB3B00B19CCFC29DC7F7F457904E2BA189147C3858521585D79A4C32D15228F0441A8054CEBFD2ECDACC5583F3D32F3A750471EFDEBA5EB99ADFDF76FFCFBFA6F5DFEED2B993CFAE23150A4CB315F34C7AAF0BD335EF18A33BE67769A63BC17CA60610826F24810840101D37ABF4B336B91F2E911CEAF95D1F9F5B9228F4AA9258FAEDF7C8BB51B6FBEED96DBB6CD6DDF71E5D5DF8D3C3D0299149745051A48E451B7B030046B268F20DC46C496E387AD9004D3A0114CE40C0DE3BD30C5C0B40EC074D6D7D2CC5AA49747CA792E9574A2C6A6C05F7D6E709C850C26AAAAB0F16F5EFEF2BFD96876269006F2E8869B6EFDC12DB7DF3677C7F61D77DE75F73DD76CFC9EC8A341C3C210ACB13C5281D890D2B01546A162A4573113606383F15E98624C2F1F19531C810D776063278F94E7086C5B688ADDD67FF5B9D3268FA0765530B915B5E4D10D376DBD71CB0FB76C9D9B53CAE8DEFBEE831236DD7043257904A2475F1E13B31D2583E8CB383C219347F68C6662C9782F94C1C2106C1479A4B7ED46451287ADE0513DD28B1179244C156CB8031B3B7904C086DDD6D014BBADFFEA73A74D1E0150C1624CBE8CEA83E6572FFBE62DB76DBB7DDB8E1FDD79379CB86BD72EFD5BC75B6EB93532685279845247EF98AD4C0339E84473283B3D3FB51EC67BA10C168660A3C8A3C6D072589F845DC860EEABD08873EAFC438899AC3214A61636DC810D431E59E821BDA1CF9D427904602B44303908D507CDAF5FBE61FB8E3BEFB9F7DE9D3B77EEDEBDFBA719DBB6DF512E8FE838E868A02C45FB07E4874CAACD5517E3BD50060B43B051E491DEB6F15891C4612B78548F74D04376892198AC3214A61936DC810D491EB174BDADCF9D4E790460437898632ED507CD6F6EB8EAEE7BEE7DE081071E7AE821504590F2B39FFD0CFEDE79D75DE583261D07F5769E02D9B263FC10A2FE852A4F8F5A848521584279041B76DBA213353605FEEA7313C923085D2C1988F61E1DDD3562FC8BC7B09CE5E7A21B4DBA6F6AAA47BA9547B2CA5010D8700736D6F2C86EB06D8DDED5E74EAD3C02B02D0826D5A3FAA079D577AED1DAE8E1871F86DDFFC8B8EFBEFB2A0C9A30109A1DB3958F8C249B564AFA10E6D339F2ACB530DE0B65B030044B258FE0AF06BB60064DB1DBFAAF3E37853C425192052EF4AA480CEBE8AE1EE34D4603F424AE1D1A020D5205935B513DD2411EC92A4341D0B0E10E6C18F2486F507422FCD5E74EB33C02A0B21AB31FA2FAA079DDF59BB66CB9656E6EDB8FEEBCF3BEF9F99D0F3EF8E0AE5DF0DF030FECAC37689A21500F956690540714705406CD6E616108964A1E01B061B73534C56EEBBFFADCE461BB71E31737AA1D942A0A735067B399EDEC6DBBAD3D0193B21D3A20D8128E39C69C9C9D6B72C3012B8FDCF2712FF723A6E0A298A2E2987C19D5235D56190A82850D7760E3288F2AD2EA383B38A0BE662BC2399507CD62428366CF18EF8532581882B52A8F2CF490DED0E726085B3A5F5B5084E85438ACA25A4737FDAB32666767D9ECA9248FC19E9B97AC366C0A6EA82D72AEF54E5F00FE9AFD9A60C345303908D5235D56190A82850D7760228FA6858A83661533258E0DC67BA10C1686601DC82396AEB7F5B96DC923926836ADB831222507950C113486584A9E6EB66846732DBF7C0432E63B0D30C5B998632E15231D0490AC3214040B1BEEC0C6421E358696C34604D8850C26AA846A83A6C93A348CF742192C0CC1DA904776836D6BF4AE3E3741D85279622193B8D9D4D9F45F72D4E017124BC9D3CD16CD680AF6CB07201FD69E155A0F2C8060523DAACB23596528081636DC81F52F8F54A4378796636AA980DD7AE3ECA45365D014261B168660ADCA23BD41D189F0579F9B226C517764A203A6E2EC6990999E21451DD42AC6FE3567D87C5936BBA973AA04032D21DF2765A8ABE316A6E84CF658B641AED30C681F8DD90F5125D2B53C925586826061C31D58CFF22815228F4A117924B030044B288F2A925A1E017A5646ACF6403DA2309339ECC331FD1776ED1976AEB727982495834A195682D9375BEA44A850569E53BE3A9E5D088FD88B36024A355B11AACBA36242F2A8678CF782D0026CB8039B647904C38440291D3485C9868521D844C823C1A14AA483F4A962A6C4B1C1782F082DC0863BB07EE4110C8BC9F1C759C1C7B48E3095B030041B451E358696C3FA24EC420633190A8DA8228F4CD6A161BC17841660C31D583FF208A2B70D4C2D054108C1C210ACB13CD211D7185A8E714E01BB228F46449E130B4203D87007D68F3C52FF864C49704480948A98130461A2616108D64C1EA542E4511B883C128406B0E10EAC3779B42929B11101124D8E08CDC611384BF031AD5319339C0F19539381C0C2106C0CE511C4B230220D825110A61C36DC814DB83C0220DD64F2683C88C089F8CC4AC8B0ED5FAB49D93AD09819253296989A0C04168660B5E411A899E4B00E03BB42124C830A82500D36DC814DBE3C02E090C9471865048173A10A668614C8F37CF8AB37AA00D2C77C86388EC8A384B03004AB258FF4CD4D8E714E1004A13FD87007D6BF3C829915303B4DB1D3730C386AB22A461C94E174914714DBFEBA9D2B36AF9647FF7AE97A666BFFFD1BFFBEFE5B977FFB4A268FF2EFB7B1D4FA0A99865FD55B84A9C940606108564B1E419F4F4B306CF58DAD82394110046164D87007D6B33CD2E323A0778B81CC0C73A0823C02EC554A739602254015CC0C2978F2A862235B7974FDE65BACDD78F36DB7DCB66D6EFB8E2BAFFE6EE4E911C8A4B82C2AD040228FBC48AC2B8FF4CD4D452C6C6D2F8A51A577F9C05942124C8356C644CB90313511261736DC81F52C8F003D449A9D4274645AFC424C2DE3E813CDCE084021F5E491F3DC837E172FE38BC7141C44F01B78591693947F8B6F0FD8F687BFE6965498C3983CBAE1A65B7F70CBEDB7CDDDB17DC79D77DD7DCF351BBF27F2282D2C0CC1C6531E01B423314AFB550C3811AA208C028D74DDAA558028AE6226A8C6125313617261C31DD8C0E4D1F6C58BB4E991CE1CA82C8F52A1AF6EE2A60A744247391399DDAB481C28CAC953505C43A0765530B91574D034B744A11363C080A8E5D10D376DBD71CB0FB76C9D9B53CAE8DEFBEE833237DD7043257904A207DD012031DB5132888A523C219347F68CD1C592A9C94060610836B6F2088043261FA1207F29706EBDB0153CEC2D83BF7AA30A3AD28B117924F40B1BEEC0441E35415FDDC44D15DC09DDEEA1B4D1E07EB6A7D48F7B88E26A28BB6737AC28B0D7C8B2E311539A5B888729218EC99741074D734B32747A103D687EF5B26FDE72DBB6DBB7EDF8D19D774351BB76ED7A48B1E5965B2383266D4D943A7AC76C651AC841279A43D9E9F9A9CD313519082C0CC11ACBA3731466A729504241F70058772ACE5C0A9C2EF26844EC2DD3B7A6E21DD191AE571652935586C2F8C0863B3091474DD057377153053AA15B6D924B94ECB04DF10F11E0A04D83C326A33E253FD12FF48BC7E077CDB0F2A3401D63981C04366852747A103D687EFDF20DDB77DC79CFBDF7EEDCB973F7EEDD3FCDD8B6FD8E727944C74147036529E8AF223F64526DAE51303519082C0CC19AC9237DBB01BD5B0C64669803D5C2D65EA53467295082C8A311B1B7ACD67DB1F2C82E3104935586C258C1863BB09EE5910E361B691438C4806C13258FF4169485A804AA5AD821075B1C29579F0B09047DA62955AD6BD28B9BE8750A30A5B898632EB6FDE1AFB9250A9D18430F9ADFDC70D5DDF7DCFBC0030F3CF4D043A08A20E5673FFB19FCBDF3AEBBCA074D3A0EEAED3C05B265C7F8214435557CF0AD86A9C940606108D64C1E01FA8E9B9D42201BA541D8EA13CDCE084021F5C216C9E330DE574A970C4E0EF696C15F73172B2824268F6495A13086B0E10EAC677904C4C65948A4C029F07732E491D9C3F959A7C2961A5FAD6CF10FB9E81270E4B6C5EA73F501863AF4C5BF79391EC1911C36AB0EE750538A49F51865D0BCEA3BD7686DF4F0C30FC3EE7F64DC77DF7D15064D1808CD8ED9CA4746920D36AD3CC27C3A479EB531A626038185215837F268A861AB222C0B15E84391A8B1613B34A041AA60722BEC2D83BFE62E2A74620C2B8F6495A130B6B0E10E6C5CE411FC6540221B55FD1453C4B0E49115353611835B8DAF769CF50F3130E731C7D051599F8B85EB447B19730CF2E31E6C1E0327068A8C0195D598FD10B6FDE1AFBE237AB7183D685E77FDA62D5B6E999BDBF6A33BEFBC6F7E7EE7830F3EB86B17FCF7C0033BEB0D9A6608C426B383A43AA080A3533F68B23004137954848E29B373FFC68D5FDCA87630B434D8CBB23D9D53F73EC0F6509372CCDFE87F9F90D34DD978150849CC730C95606E376F09ED4901265F86BD65F0D7DCC50C9D1E4447BAAC3214C61936DC818D8B3C624006F8CB46553FC514310879946307C02C1547451DBE2A058FFB87186A8CCD87523DC8AA5D7B2D721AE63699C96665A030B315C1B63FFC85DBA1B74BD1836631A141738C303519082C0CC1441E1501A1E4C79E0D347BD8A6E487EC31F8BF4EC2B0C4148C3F5D68768846647E34DF6A1B689618260781453A45A707D1912EAB0C8571860D776063248FD8185A25C51431FEE3ECA463DB1FFEEA8D2AC08058C5CC35C612539381C0C210AC993CB231AB7729708801D9861AB664767640E9A2C9F44D2E817230CD1EB2859132CD26C993AB2227B1758CC72EE6988BBD65F0D7DC45854E8C01510C024856190AE30C1BEEC07A96473AD81AC3CA31B56C1F7D691337823B68EA26AA823979C8989A0C04168660CDE411A0EFB8D9214022054E81BF439547418D8293AD9E6B614B1DB6D9C86C6E20259883248FD9645751A9DDAA23041A8762523D68A49BBB58E169B19647B2CA501867D87007D6B33C02F4000A7F29D55374213668BB415FDAC48D4006CD5A9893878CA9C94060610836A23C82BF0C486462C84F31450C206C41A5D8F75E30F1AA6D3B176709B9BEC9B3E396CA0599740AE6C6147BC41EB2A71B30DDAC14EC16681F8DD90F616F19FCD53751EF16A3E591AC3214C61936DC81F52F8F00B60BD44D19FB7176C2E9B8FD8566B030041B511E312003FC6562C84F31450C236CF51C8C641A264B092C1924D9EDB46E5230B74E4381A49374162E8F8882EA1CF0CA6C45B0B70CFEC21DD4DBA56879544C481E8D11A626C2E4C2863BB0B19047A3D3FD380B5714285DB6BFD00C168660A3CB23267DAAA49822A6EB5F359E088A523D670FD85B067FF5461540FA5431738DB1C4D444985CD8700726F2A8097A681018A675847185852158337964B551335839C6B9F6D19736D35D47F80F9F0AD1D97B7A7454052A8F74AB56C19C3C644C4D84C9850D7760228F04615A606108D64C1E01B00D11077F29D553742153208F268D66B7CC9C3C644C4D84C9850D7760FDC82388B1E47439CE0AC210616108D6581E016C17A89BD271D88A3C1A1D19698549850D7760FDC823083041103A868521D828F26874BA9747F80F296134BABC6582D0196CB803EB471EC1383B5C6074305B420A6EBEF966B325789476B65ABD918521D8B4C9232109A64105618260C31D586FF268C330F9D297BE04A3C370FD1F37A03DB53C32FB02C176B6024A33505818824D953C12044188C1863B309147F5107994169147058C9B3C52AF561223F248108471800D7760228FEA21F2282D228F0A18377904D7120441180A3FFFF9CFEFBEFBEEF9F9F9871E7A68B7CBC3849FFCE4273FFD291FEEC0441ED5A3A63CBAE5D01998C01C3BF41C73AC98730EAD9AB3311D5CA2949AF2A8B3F66C76217DD6CE2AD7A9E2CFB8C92353CA30A9D55063C8D097E889FFFD329DFE8B3CEA94D1E511D881275C6B8E4780B913B2B5AA5D3AB84415469747602DB467F0428F9EF0397378442AFA3386F2C87836346A86EDD851334CC60EF1BF5FA6D67F91479D02F7A9BE3C228F13CED90967E72966579B9E7DAF3DE1409BB23073E82D916C3EF444FF8ADAE297D8B0E173273C6A13DD99DBE68762558D0EDC615DA0671199A24F79F4D043F3A3ACD63A73CD7EDF597BF26A6A41632B18A935754F5F77E739F9B5687A66DA9FCFED38D0A690DAD9CE5680C8A32AD40CDBB1A3F1F4302688FFFD32B5FE8B3CEA14B84F23C9A36CA255FA431F2586F3B13F7D06B331DCB3D0F4452B5EC278452D9BF5DDCC073E8A1379E6807F5626B6D8593BCE517A42AB2E7596112535FB7D67EDA9F290747D15DD26F15A53F7FC3BA2B3D5F0C776B602441E55A166D88E1D8DA7873141FCEF97A9F55FE451A7C07D1A511EE9070FDE8B15272799F219810211F3F8A1F8F4F825F4E9B91AD053B8CAE9966C9E9AE89CE6907DFAA2CB779FD918DD9065CEF58129B066BFEFAA3D4D3A3355B5A25AD3D24C0B1895A99F21652D5CD8F839B6B31520F2A80A91B0FDDC090742F2CC4CA8678C155E989C73A872DCE1C0AC4B8E1F9130776A31C6EE576AFF71EE4495FACF18DF01CFFF2C725DFC5B20F2A853E03EC16DA8EC7F60F6F5A6733A13174CE7816C396AF6256F79186597705E36595353BE3E64558E2E4ACFE5FC10AD9A16075643002A054F5425646745C6CD18BA22EDB7A773545B5697A25A53F7580BA8434179C4AF953B633B5B01A519282C0CC1A65A1EE563ACDB35C60F2F4C82D3DBF84E7081300FD6605CEF43C5F61F5B7D51CDFF699147BB76ED7AF0C10721C588239147A980FB04B7A1B2FF74BE34E453A3790E412D349DC7B3E57873B6A1E225BA9047FAE8A3279C832E59251718378BE8AA3D5D35E3504F1ED9929D021D7F00EE926937DBD90A28CD4061610836CDF2480FB15059FCEBF580B1C20B133DBD51AFFD9431C2F3DF4C6F7642CEA6BB319DA1CBDBDFE88DA1B4BF72777CE51027D27FCA5BDB97475A1B9D76DA695421893C4A03DC27B82D95FDF7A673234430454FAB46289809D2E4A4D36741B61C37DD9E52F112E650500D844A3639CD21F70189D90DC8A32CBF93EEF5FB62BA6A4F57CD3814D59ABA57471E11E821DBD90A28CD4061610836C5F2281B61AB8EB47DE28549441E8DEB84C7FDD76DEE788B49637B132AB47F28696C08FB3F7DF2486BA377BFFBDDAB56ADFAD8C73E661592C8A334C07D82DB52D97F3D5F723373B399DAA939D339DAA1B7146423E8C9D8CB53F11274D79A99CBDD92EB2DCD76E5912D8AC80EAFDF17D3597B3A6A8611AF753D79644ECC55A3357396ED6C059466A0B030049B5E79940FB003D0475E98E8B99831BED31DF77F60B373ACFD9D3E33CEDDA852FF19E3FBE1F9AF1BDB25D4F4541E696D74F2C927AF5EBDFAA28B2E82322FBEF862AD90441EA501DA146E4465FF03D339BD89769A84095E3FD53047ED94A926D4683617326DE7BAA4E22500723A5306B616306D73DDA0CBD466640A129447D9258C9840BC7E5F4C67EDC9ABC988D45ABB572E8F78E33B0A296F34DBD90A28CD4061610836B5F2884E66E3AF8FBC3009CA23604C2BC1FD1779D42D95FACFA4CB235042B3B3B3175E78E1A5975E7AF9E5975F71C515DFF9CE77200FA48B3C4A03DC27B811C3F57F54F4A397B86E28C6D7225EBF17726C672BA03403858521D8B4CAA3AAC3EB98E08549607A0E248D0DDC7FDDFCCE7C8C49637B0726ADFDB5B3C3D1A79EFF55B5A8FFF4C8479E1E2503EE13DC96E1FA5F9FC0031BF2BCA416EC810AE2F57B21C776B6024A33505818824DA93C0AA9A3719DDA102F4C26627A2613747643C674C62E6F7F53A131ED4261FFA74C1EE9A5D916BD285B3376F2082A3C50E0B60CDAFFDABCEF6EA8716E6FDC68D2EB70FEB13FD1A7BFF17D26C5A2FBBDD9115C74672BA03403858521D874CA233DB8D2D9619CB50500FE07E585C750A6E7480DC6F506546CFFB1D51B15FD1F4EFF9F6879A46F862000AF79CD6BCC96E0F1B297BD0C068502208FD9AA000B43B0A99447E651051D5C0349E344B5E96D7C9F0678FE6B9C5A8CF3B38C2AED3FB6DA02A8D67F441E71EB471E413D870BDC16B325A440F77B21486967ABD51B5918824DA53C1A1E11793118C4FF7E995AFF872A8F8CFB4303EE93C8A3B4E87E2F04117994041BB6667F68C8F4DC2FE27FBF34F65FE451A7C07D12799416DDEF8520E3268FA0FF0F14DD50666780E830313B0344FCEF97E9F43F268F4012E9BF1A914769801617795493B9D9A5D0669C15EBCC61DDEF87C3BA15A60680AD0401ABBB7476CEEC01E404279D12CB03FB662B4269060A0B43B05AF248B927F4C3D097E889FFFD329DFE8B3C6A136F0598C8A3FA787AC16550F208658CAD8BD27D4C21692D9857174E7076428AAA204F6967ABD51B591882D59247A6946132F4B05561B269B836B47F0571C4FF7E69E6BFC8A3B6C817F78B3C1A890992475CDF38C20680AA2E5DB122AF6E49D51585794A3B5BADDEC8C210ACAE3C3261303426206C559870CD31201379D12FD3E9BFC8A336309FF33DF040FE715F9147F5992079C460354371343B4713B97C0A5198A7B4B3D5EA8D2C0CC1441E0D0515265C730CC8445EF4CB74FA2FF2A80D401EA9AFE1D04F90441E8D04EA0506D503838D5B55AFFC599216478E66D29BEBF2FA07DEAC15E7817DB315A1340385852198C8A351C0878986AC4793248BBDA381FC94C273559870CD91C2D642D75BB18EA69C9FFBB1E27C929ED9DC494B675E3C3BE7A5AF3BC29C45B0258F10E62AD014A156A360CE3C7E8ADA3356263DC789C43686A9487F88F910F5CD5054DF36FC2FF3470F6DC17A85B223F96D5190B39BF92FF2A84D441E25804709A38D71A77D541C9320877D5347525D1DEC79DD717CE00343719ED2CE56AB37B230049B4C79D4C99241B851C57716C0E42C5349FEAD5BCD46063D17506142B4481A436D041079A4528C2AA2DB6E86A03C724DF97FD25CB6DB34CC69A0B12661E8480ADD0605393956A6533ECD04241FA6E062795DF0CAFA5A311F8A7C0BE29C90DEFF527F545A384BDC7D283552AD66FE8B3C6A13914709C0602071CA493EEEB48E8A6EA74690E28C0366C7AB3926044691789ED2CE56AB37B230049B3C79D4D19241EFB605C01924BB93A5F977EC5838F8E085952B7103A0E72A5498E4E263749B9B7D31B6D2D22356D0A747F804E88875369BF7A008CE5ABAE288F0D3236AAC9CC6F288B51B344BA8153117D605D7FD85A7D7827B61CBE46DEE5C2CF13015EB0F311F0A7D0BC0F3A7F6BFCC1FA89FB30A93E58F541F72394E139AF92FF2A84D441E252036121812C76DDB609CF3DA600D3D30CE03838617FF8579A01CB315A13403858521D864C9A30E970CF2BBE6E376FBF2FC0B0B9B372F2C5E0C7774E19057AF7FE1CCEB3EBCC5A42B5498E46A63749B9B3D49C917E7E51A6A26F2C847BF68CBC513A825381A7BB9961B96B974762D4D6C18E6ACDD420104CCCDCEAAC4C8E1E27B51EDA4F4F2A2B43F00AE0F39B17443E070BBC32CBB20ECC21E49F41C82FAFB8D8EA72DB543A95B8166FE8B3C6A13914709F042C3A5DDB84D4B4955144E1EDCC94781E0985098A7B4B3D5EA8D2C0CC1264E1E75B46450DFE4A25565EE7D2CCFAFB9EC329447CA1EDB6FBF85E38EB32FDD5498E46A239D39F228F4F4C81E859C4A1595CA23EFD11158B330778209E0FB0C37942CA17B515626A6D2B2D20E53FA9A65FD81FB90114BCF088D336D0EB3CC1FD855EDA92BA91B96B914AE0166CAEF44568CA699FF228FDA44E4510268940468336E13A3829AC3839C57979E94E7859180640AE70160DF6C4528CD406161083659F228A31B794487723E21853B01CBFF9DCD9BA141D1CE3E7B61D52AB4430E59D86F5FAB908C1D7C30882415268EE04864AE3CD2EBB2B3F546E826560CB7F1B59A7E2054228F028F8EC09A8579A81DE93E030F7B936E5919813231891594769852172057E5FD0708F8A088A55B02F5015A1B66B93FB06FAEEE38A2BA52962DEB577A2F86D328CDFC1779D426228FDAA7B5B89D044A3B5BADDEC8C2104CE45133BC290813F2E17E6EF64D33AFBCE4F34AFA5C7C31E89E877EE7BFAF79CEABFE03D40FD89225B9F429B5FDF7C7474A264C1CC191C8983C02CB3FB9B6625D7654BF56D3198AE551E468C330872992B6B3DBCC1EA1C3DEAD2A291377D90948DA61CA73CA7522E243349DE215AD696598F5FD8114BBCF3DD1A20859B10E8F15DC488593A799FF228F3A45E451725A89DB49A1B4B3D5EA8D2C0CC1441E35E4EFFEF09017BDE39EFCC1CF5FDDBDEFCC0F5F72083EE9810B55B3F9E71D806A09ECC413CDD3A3B56B175EFE3C9361F1625CA9BD678FBEA00A13AE3952982F8F88A1D6C1D764661DB74BF8AC7547B8AB978C350C73368D3265C3094DBAFE290565E20C1EBE40E2618A7B457C8AF910F7CD81976C483FCC86FCC16A78F03B02846E942A90263A3569E6BFC8A34E1179949CF4713B419476B65ABD91852198C8A300BB77E3539FECC10FDAF2E546C7547EF0B3E7C98BCC29871FAEF5D3B75E30F3917354B13B76783341C6E6CDA60438D1FDA8BF0A13AE3952982B8F9C673FE1D764C54F8F54CD02DF96D434CCD5845B221C2C815937D4D2913231395A7CEA61CA75D57A19F3A1D0374AA8BE4862FFABF843F338F98B2AE9B409C9D4CCFFA1CA2318B0064AAD09492825F5B833519476B65ABD918521D834CAA3E08A1FB03A0F7E160E3860E19057DFBDEFCCECCCCCE9682FBFFEB2CB4CB17C60B7E0E89F1199050E3EF8B1453367FEEFD56697A0C2846B8E14E63D3DC285D58680360273E591F23FCFC676AD8D10E679BBD1560D35B23BBF2A4AEF853D4A6F8FC596D6C23015E80F311F0A7C63158CD437B1FFC56D65C04CC417F02C23EE7024D354C923A8EA7039F5D453CD9620B40C743613E8116018315B156061083661F2E8EA4B2FDD3C3BBB79C5D2A341B2FCC61B771C7BECFCB265BB0F3A68E78B5E344FC54DB1EDB79F114C471F6DF4D39A3546FAE82F256A898B2FC6C754BB779B5D17E80C4C700CCB94FF0346FCEF9766FE0FF5E9D1705113120F7EB1C636F471BF552B553F53258FAEFFF4A751FDCCCE6E7FFBDB41FA8081F401FBC98107E6E2A6D40E3AC8A89F952B8DFAD1D267E346DD4ABD51A8BD861E26222FFA653AFD97B5479D923DA5E7C12FD6D8863EEEB76AD3238FAE5CBF5E4B9F9B3FF8412D7DEE3DEC30AD7E7EF1CBBFECE89BB83DFEF4A7EB531E78FDEB75215B4F3905CADCB06AD512C83064861E26222FFA653AFD1779D429228F92DBD0C7FD566DDCE4112EBE6BC4654AA3806D3EF6D85BDEF216B079F5CE0B8CEA9B62DBF5EBBFAE4FD125FCE0AD6FD5657EEBACB3CC65E2D46AA83164E86122F2A25FA6D37F91479D928DB33CF8C5E2467E00DCE0FF1853BE3B10F33F0EDDCAEF9CC3B68EF318A519282C0CC16AC923B85341B66CDA74C7673F0B76E7F9E73F70FCF1600F1D75D4A3AF7C25D82F9EFB5CAA6F0AECF1673F5B9FF2E337BF591772D7B9E7EA626FBDE61A73A51190258382306D883C6A0BFDF11745FE19189147F5CDFDD9A6F04F79E7478760A88D00522995D2C2EF9CABCE564469060A0B43B02AF268FB159BEEBCE46B600BB3B366B1CEB26566F94E266ECAEDE083CD29BA84B3CF8621006DF366E35CCBD46AA831648061E298F27FC088FFFDD2CC7F9147AD40B491C628249147F58DCB23F6934CC31AF73BFE9D73D5D98A28CD40616108B6F3DE07DFB774E9A5EF7EF7374E38E186DFFF7DB05B5FF7BA1F3CEB59BF78CD6F3DF6BCE7E7E2A6D0F62C59A257FCDC7BD8617AC5CFCD1FFCA05E4874E5FAF52A6E7A465EAEF56E222FFA653AFD1779D4065A1DA99FB7CC7E065CEB239147F52DF0F488EE0E6BDCEFF877CE55672BA224C3D6ADE6218D7AF0F3E049EF7BF49037FE6CE96F81517D536C3A3F9C082580F4997BC73BB4F4B9F6A28B30248680C8A3DE4DE445BF4CA7FF228F5A402B22AD8E8C56323B228FEA1B5994934145C030C77D471E859E1ED9A39053A9A25279E43D3A0283B6D2711E60CF1E88A24320C3DAB5E68DD571C7991758FBEFCF244ECC9EF8F5DFF8C1B39E75DFFFF81FB7BEEE75FAE9D1374E38E17D4B97EEFECABADBB6EF1C58D8C669471E91AFB083BBEDA76564C7C877E9F16FD0B384CA54F41426347869E7D42F8B15D556DAB5303D93B6B24D55D4FEA1FC9C689E36E405B918F90E44F6958BF991D1FB4F5AA2D70AD48BE6CD885602605F2929F2684CA10F92441E3531FEF448BD9FCA87CE9EC6FD11CD95477A16C9E6093D14E8A3F85A4D6BC1127914787404B63F74B6C62B7E162F36F9CDEF5AAC9A3F7B56AF22DAB6718B8EC460FC0F3A6C0B970C26046FB21DBFD5C41518ED6926DC3659BCB1DF5054661F6182BDDAF64915B64621A9BAE42BEDBC7EABC553ABF288364FAC3D698356C95F9427B9BC00DFF2F249E7C0EDFCB6E7902C31FF4975DDCA00A9FD8F5E0B0E84EB45704E0EA0CA737334F35FE4519B98B1361347228F9A1897472CA58F717F7463F2084C292445C2DF393FCE6A1DDFF0772D0ED9001BF6074DC9EF5A046161083661F28868230D5B32980E3EEE3B938281E67167B4F0FC5658660F61C21F67420F575DD4EDABDE9B65F54F026FA55D1BD3B36D2C6C4F7F1676B254C85F9827B1FFE11E80801301D7DCFCE1B31DF701D867FD271DB16BC5EB95C3CFE540194B57AC60E534F35FE4515B983547441B01228FEADB94C82362387FE0BCA2FEC1CD099F0553913BC7683B083A9B963E175C60A48FFBDDCA50A0D9AA000B43B0C99247F4496F70C9606B0466858289A2CA1CC273F51F266105EF3D3D826CA1957689A767D53AD9241B6C4F96589A1F28CA935E5E843C50D705B0EB22D13C9123143757EAF677B1D78AD6CB52E63C36C0EC9C97AB99FF228F5A21D346F9F3798DC8A3FAC6E511FBE766FFE37E1373E5913319781386B6F0EC624CFD832AB0864375B6224A33505818824D943C2A5F32D812389667D36A46F89FC82A2750328500BC4C0C93ADFFB2B0E1EFD1E6D7B37ED2BE61AF76BBA84AC1BA50590F89AA93B72E8F106C6385DFD0C1F62FCA9F11CB93D67F3DFBAF332D08D8ABE1F5F3DE01F99CAE325AFF698BFC5AF17A6584EE0B21ABB02E8854B299FF228FDAC07B482F9F5C6B6EF95BA70C6701B2EAF7F9EE40CC954760F826C210D04660EE8401A304CDC676AD41693ACE639466A0B030049B287944A10F92DA95477C1E5278A33BA37892D87DC315FBCF6C78EE4BCCD2B1FDF633AF53B52D7956E7F2C8D746C4C83B387CADA6BB71EBF2C891115E73FAED5F9C5F539427BD3CA22227E250A1A7C1FC9A409F6C4D1E39D72AAB977F5F1CE0B039EA651479343604D491C8A3B66C98F2A823539DAD88D20C1416866093298F4CFCE6AFC5DB92476A36080CF725B3008039C2F39B2AF3751FDEB2B0660D2E2F03B799AD59C53A49BB8642072A1352FCC6B27F2A404EFB24A96D7904F32E6D60D6E07EFB17E7D714E6492F8F9CEB6342A83FD44DD747FCBAB5238FBC6B614241BDBCC30E70D41EF4728A3C1A00228F929BC8A3022B9DD46BCDFA2C0CC1264F1E152E194C0AFECB3832D6B38916C0CC743AE3FB06BFCC55AB1C6D74C8CB590F69D7F0C990A372B244B6641BEA52B2D2AE5379146CFF82FC9AC23CEDFAAF2E86FD01D2793F51F902E9CEBE0193BD7A29D2CBA3E0B5327F33B27A69F85107CCEA61CF15793400441E2537914705A63A5B11A519282C0CC1264C1E952D194C47707ECD08CD5D15E60956E6FCFCC2D1473BDA68F1225C7EE47592B6CC7B029499FB6639F8A982EE5FAE91960BB57F51FE8CA23CA9FDF7FA83D98BF593FAFDC725B1FFD16BC5EA85B87B8578E54F973C82016BA0A871360F7BB1114DE45181954EEAB5667D16866093258F4A970C2603476F0F3BF207272FE72472D866A665AE9C99D90D0ECFCC3CB66871FE0069D50AD63D5AB5C2A7416A3592C6D74660ADCB2300675B83DBDC91F60FE7773347CB6CC17F7AC3A96A88F950A3FF586CB969FD2FBC56AC5EACA90DC1445586933C45F208AA3A5CE4A7BF85CE38F5D49526D023C00864B62AC0C2106CA2E451F992C121B06143BEE468D932FC1E87F979D8FEF9AFFDDAC29E6BACDA189C416736151C26E27FBF34F37FA84F8F86CB60C6D98130F4B86D95D2CE56AB37B230049B2879146718F288BE4DDB7F7FFC924FCDD6AD9072C7673FCB04C7B04CE445BF883CD2C248039248FFD5C8DAA3340CE99FA10341E45101228F923080B03DFB6CF301FEC5EA6DDA9E3D261DD8B061E1B8E3549870CD31201379D12FD3E9BFC8A34E1179949CA1C76DAB8C9B3C82FE3F50C6376CFDB7690CC8B07BB70A13AE390664222FFA653AFD1779D429633DCE8E2F64B1215FF238B6719B2F300CAC1C74C09CF91244A7AE067FD1A25B263DC759CC08FB662B4269060A0B43B05AF208EED47019C325835B376C78F8777F570BA35F3CF7B93B2EB8C01C10042105228F5A82ACF3241F131679541B2509C89CAFA400D9874E6CB6C608EA343A1C574846F138A286404E8E95E994CF5AABB4B3D5EA8D2C0CC16AC92353CA30A9D5505D50F0362D840A13FE4866403696615E03F1BF5F9AF92FF2A80DB2EF4FB1640A49E4514D70BAE7DAC2D51BE318B7CC6B7098D70131CA48FDBA74581E614DB323B132691EC4B9586967ABD51B591882D595473A0A06C778856DE9DBB4102A4CB8E6189089BCE897E9F45FE4510BD0DFB6747FE752E4513D42EA88318E71CBF410D622A07FE666675562E430AB7CB532D949A59DAD566F64610826F2A853E6E717962F37C2887E36AD022A4CB8E6189089BCE897E9F45FE451CBA8976CF6170A441ED5833F1A09308671EB4A147F9F11513A6EDDAB9589A9B42C91474968296CF10E1BE8AD24C9B45BCC9EF6F3A7A030DA3333F399DFF9ABC8DB34D501346E975261C235470AF37E5C399A4E7F5BDAF9556963E457992D6DFDA8488E177DA409113FC8C8FDB1642544EE5D6FC354CC9F683F89F4C9F6FCF7DA3FEA336D77F78C9C689E66FE8B3C6A11BDFE88FE7A93C8A37A606F8F4582A1A771A7088CF8722963F10708A0AC8C409998C40A2AED6CB57A230B43B0899347DD2D1984AE9DDFBFBC9FD39B986D6FDCB870D06FC2AD42C3B7696B2077B03F9170E1FD438509D12269CC7CF9B5278FFC74D446F68769D5176A87141231AC0BF942ED76C25CB5B06D330D5CD8D92F41F9A91B9ADF3BAFFD3B86FB63EB15EB27909EFB4C32015DB53FF739F3873433AB4C4E519E66FE8B3C6A1BFD76CD8CB5228FEA410324676E8EA4F431EE94E10C33BA167E305B4287FD8A179789BB81962AED6CB57A230B43B0C992471D2E19F4EFAFC69D9316AE39E3DF679EA385D1AE99BDD6FE43F6368D75068D5B26BB820A935C7C8C6EE63743961EA156CE95A5077E8636F8736C99F1FCE9E5918A18F093AFFC83A62D88558E73BF9C1D2C9F14D4C330C5FA92ED10B17EE2A633BA6AFF481BB2BAE0BEE76A619E66FE8B3C6A01FD4FD06C6CA57B228F6A120A591558360E7A18774AC9C35A118A6502CBADF04F292813C785F0054A3B5BADDEC8C2106CA2E451974B06235DC2E9EEB3B30BFB3D0DEE10FE6EDA51072D7EF587F3FCA12EE3E29404A830C9D5C6E836377B92922FFC255A2CDDB1E8AFD56AC373EDA3266D2D4CCFC1957FB00BC0DD5684A3CAC21A1977B3B282EDDF29DC03354C789D86E48AF4494D87ED1F6DC39CF8911C374F33FF451EB580F957A85644CE1B369147B551F1424201839CC653F7E34E056890C7C58B0133B3612B349245CA744701466967ABD51B5918824D943CA2A8A86D6FC9A0BE69EBF08E6AB29BAD6EFC35F836ED20B837601B6766FEDFBFDFCA6F72D14D57FD04708FAB30C9D5463A8BC9A00279848766569CEFA567E63D3A026B2DCCB1B948A8B9D10A07A3B1158E524C53B0033D0C53CC3DD52FF83E905510F7837D52D155FB23B136CCE03509C1F334F35FE4512B90250C8AF6FE193A15D87841D878D5C3B853896CF4711D869A78E36D7880080DCB8132F324822D0DB6CD5684D20C1416866013298F9C7FD0285A9147B463D8996CFE0BDF55AA086DC9921BFE2FF4040E607EDA21F87E085BA64285C926FC55DA0D7FBF30BF9E2A8FD1ACAE3C2AD3462A037B7404D6E5F44C701BD1C1BF0798D9A6B033FB18A6D005EB83DA09D5257334DA27155DB53F5E35D6860AE566A01A94409E66FE8B3C6A09B28E810CB4228F92D3C7B833184A3B5BADDEC8C2106C22E59142C76F5B4B06BDA91513FE79C5ACFEA6C7C76666CE9E99598C237C3679C04441F367C985CC5DF2A2994F7E602D7E69E4F2E58FBEF2950B8B17A1EA82BF7DC9237CA706F5E0D2C7B1C87BB79EE451FC281E716E61E81EE5FB3D0D53283034795FE29874AF424EFE8EDABFB00DD5AEEBA34F248FC8A30120F22839228F0A28ED6CB57A230B43B08992477491A0BB973E6CD934B0F1929D4FCB1E1A2D5B86BFB1AFB173873B89F0D3353815AA3C7BF6A02452EB960276E25B99F218CD2ACB237C6556B81C5B1B64231F58B3D6DDF44CDB39DCD00AFF084BC182F3FDFE87295BD1401DD53EAF91D332FDCB2374D3F12F403C8FC8A30120F22839228F0A28ED6CB57A230B43B08992479D2E19CC6605F24D8F3F5FB264E1937F4EE6543A39E076368DC426013ED31CFE3FFEFC91A38FC65F1D51E5A3257E7404564D1E95ACC5CE0DEB167AF5D6D1F4ECB5616C46567EE6A7299CFBC26E520FC314ED3ECE4EAC8E5E3AD9EBAAFD236DE8D42542619EE9924730600D94D4E3ECB423F2A880D2CE56AB37B230049B2879D4F592C1B92BF69FD90DC5E2373D3E79FBCA95E69B1E714E30B8833D0EFF7E7A3EBB21791E48DD0605DA6FD9D6367B12931D235B2579643EEDEFA28F2AFFF3D76D6CD75A57D33310BE016E3BF3DD8CF0B9403FC354D41DA79F900324DD6D957EDB9FBA65D167D91B51900798227904551D2E63F8D3DFC2A4029DCD047A041841CC56055818824D983CEA6EC920F96C9AF3362D217009FDD36C8B17E32F90C0C69267E1D26C4F790CC2A0339B7A0D13F1BF5F9AF93FD4A747C325F1383BF50C3D6E5BA5B4B3D5EA8D2C0CC1264E1E8549298F76EFCE9FE82C59B2B076AD494FCBAA55E612071F8CDA4B5F31FDA3A3EE4CE445BF883CD2C248039248FFD5C8DAA334C8CBB5E4883C2A40E451129285ED0517E8CFA6E1131DFB362D2D20864012C125C0E0129AC30FDF73C001C37D740426F2A25F441E6961A40149A4FF6A441EA541E45172441E15306EF208FAFF4019356C376ECC554B4B6FD300905F7A21368821B8A2E59043EE3CBFE0AB860660222FFA45E49116461A9044FAAF46E4511A128CB3D38A5E79E72EE2430617B781958724C9626B1A5D5EA9293C17B6CD5684D20C14168660B5E411DCA9E1D278C9E0ADD75CF3D051476961F4F8B39F0D32C51C48CAD60D1B1E79ED6BF5557EFCE637C345CD01C5AE638E315B82205446E451BBB8DFA522F2A831A802F0C7903C85009DD86C0D01A8465E03AC93AFF7745573E1549A9F42CF05C64A1E99528649C3B0EDE06D1A70D965E62AF017B67DE6E75598F0473203B26185B98FF8DF2FCDFC1779D426D90785451E8D8A5606F80489EBA321C56DC87F0ED54055F2533CFD54DAD96AF54616866075E5910983A1D1246CBB799B46177AC355E6E74DBA870A13AE390664222FFA653AFD1779D41AE433C2228F4604E67D2513027A6148719B55238E5BC1F2FC9440E39476B65ABD91852198C8A30020598E3BCE4896254B162EBED8A427071498FEC4FEE2C50B6BD698C4082A4CB8E6189089BCE897E9F45FE4514B98DF6C3A81FE7493C8A36690791F37DD0724038A5B5D8FD86F6223EEE39FF2FC14EFD11100E798AD08A519282C0CC1441E71ECDB34B0952B512A05C19BC5C96E1E3916BCE173B3AF9B79F5757FB1D25C457F741F282A33B53CC25F08E1645F02895F08A971BFE0F17CE21FFF417E6EDEB76CB718E6FC9F156A8C51B8FFD8A0ED1B8BC4689E16FC2FF6076BE1A696F52BA427FF03FEF8FE5362E746CB6CE6BFC8A356B04B8E9C5FB61479D40877F8C200A03DBFC57133357ADC8D57C5AD68797E0A3F5753DAD96AF546168660932A8F9A2C19A46FD30E39A4D6DB34BCB1E6E6A97B6E6E32DDB6CC5D74D0CCC69967980BAD5A65923D4899880A935C6DA435752DFD43694A1B995F05413D942924BAADBF44BB40216981D58D3C624146DB9C36A1D39CC11B539C27B5FFC5FEE84AD1249A05B7EDB9842EFDE7FE38EEEB149696133BB7A8CC66FE8B3C6A0135B8EA2FDD1579343218B41C12DCAD8D9BE9C1907586254CC8433878B8203FC5CBAA81A6325B114A33505818824DA63CAABB6470C4B769D8C1B3BB4AB701EFB63E78F8FEBF78F293E1420FBDC0FDE83E8395D3AA3CC2274999D6614F7DECEFCBD23C68A096A23FC106E269E98A23BA797A040DBC74C58ABC9159834333EA3DDE9EF600A1304F62FFE3D7C21A00AA5624877302E6A1676B7AF49F347BC47F42ECDC78994033FF451E2587AC39A2A8B156E4516D78D0EA94D6E2B655C0F3DC71C01DA6F8D1B2FC14FF5C456967ABD51B5918824DA03CAABB64B0E2DBB428CE28EE0EE900F67573C7E7E7177E5BFD48C8CCCCBFCF3CE7E35B0A3E04E715D3A23CC2273DF94B34F67BFBA896424F890A7EA1160E4109DDBC5C83768266A2ADC5E2080F85022ED0C01E6E9E76872972ADB9D959E530731D77B3FD2ADEF35C69FDF73CC8FB79C4FF9CD8B9056502CDFC1779941C91472971FAB8C1098476C79DC4B831EFD62D56D3E21C9AD891D2CE56AB37B230049B3879649EF6565A3238C2DBB41C76E7D82EDE7FB57FF1C50BFBED0B177AF4394B16FEE12FD83CC009F5061526B9DA4866EE63217C6BC6E5912F83E80B38667048E5EF421E41E3AA6624C309D954F07D8DBD2B05F03C6D0E53417F3091A561BF5094F88EB4EC7FAC9FE704FC37C4CE2D2CB399FF228FDA455EAE8D0476F1C04C407B7E9BE34E1B28DF0D2498557407AA1AC9CF3247CE1579548FAA4B06937D36CDEFDF38C6DBFB0C3BFBCDCC7CF74DE6A3FB1B0FF86D7C8614098A8CF0611526B9DA4864EEA3A34AF2A8401BA9D76ABAB4F6E51134936925D260BCED026D89496EE0FA04F2B4364CC5FCC174928CFDCAD604778AAAD081FFBC9F933D0DF39F123BB7A8CC66FE8B3C6A1791476DD3DAB833099476B65ABD918521D844C9A38A4B06D7AC19ED6D1A01A70036FB027A6047CE39EF9247F75217DAF7A967BEF07F9B8CE1B33222475598E46A238DF9EAA7F8E51AEE8273B99C720C8EDA73DB9647D04AB691688B41DBD3C6C343648EC6DD82A65744F2B4324C15F9E3BA1EA857C179DDF89FF773FD8D76A4A1013F85123B375A6633FF451E758AC8A3E4B432EE4C0AA59DAD566F6461083641F2482B220F25914CD86EDE9CE06D1A854D5A943D7B507BA96BED3EF8E03BDF77907687129E3C2265AA30D9B4B07BC3C28EAF5ACD31AA313104C6F410CD80AFE1D89324C7D4C7D938D997052496474A0370B03DD9A44C1B1367DED8DDCA88E7493F4C95F8E3D684F50A3C183AB74BFF29ACD991405298584637BD99FF228F3A45E45172DA8DDB8153DAD96AF54616866053228FD6AE5933AB940A5ABA6F7AC4C92830292CBD68FD56FC4D5975B94F1EFA1E73C8A2F2C4E6C54099C0EEDDF79C79E6C2E18760991BFEDE2A92114D5D8BBD26A3EFCEC887F9BDA74125D6F6D3238AD39EB8933520110B856D6E28CC93D8FF727F3007E9088EF071762CBDF91FBC30F39F103BB7B0CCE99247A033060A0CB9BAE98524883C2AA0B4B3D5EA8D2C0CC126481E39D0976B5B4F39654FAAB7692E304B79B3C2C2C2F257ED51D7DA3A33F3FF9C788949A4B8233F2BC4D99D9FC70FD61DA25491B625CFB282637453D7F2DF942985A4B0470B9E0C850BE94D1E01B8AFB1A97912414FDEB6C10BF20069FD2FBE9602B3B829E06906A96E2FFE2361772CDC7FEBA7D9C970CE8D973945F208AA3A5C1AFFF4B720D4053A9B09F408308E98AD0AB030049B6C79F4D77FFDE99F1C78A016161BE06F4BBF9B66013563A5CC71C735FFFDDA1D3B166667F3F780D48EFB432B388665D0994DED8689F8DF2FCDFC1FEAD3A3E1526B42124A197ADCB64A6967137914E4EA4B2FBDFBC823B5A4F8C52FFFF2C677BEB3F5B0B52BBE972C09FFEA7E75366F5E58BB16BF507BD932FB92CE58BA376B1D9BC88B7E1179A48591062491FEAB91B5476990976BC911795480C8A3066C3DE51490445A4FDCF9D6B782546A376C77935FDD3FFCF0842FEFB0A8830E322583257DB3D6B189BCE81791475A18694012E9BF1A9147691079941C9147058C9B3CC2C57763CC37CE3D77D7AFFFBA1613B001BBE6407B617BD965F8B8080ADF6FBFD25FDDAF87D546FBEF6F9E21AD5CCE34C7804CE445BF883CD2C248039248FFD5883C4A438BE3EC244356DC255A73D71FA42E76E5A1533F437630949F13CD0309662B4269060A0B43B05AF208EED4D872EB35D7EC3AE618D41033338F3FFBD9F79C79A63990917CC9E0964D9B76BEED6DFA8A3F7BC94B7EB87EBD399002A8CE1E25897EF1DCE742C90FFFEEEFC2F6F62F7CC11C1604A102228FDA817F4CD87CC39CC8A3DAA80F5490495F4901B20F9DD86C0D005A19DC0E7D6443D5D01CA892BF284F6967ABD51B591882D59247A6943164CD1AF30807ECC41383AFB71287EDE6CDE689CEE2C50B679F6D1253419F1BEDD88129679F0D3A893D8F19960D2ACC0388FFFDD2CC7F9147ED90FDE87786C8A366843401910FC0A0E2165DB7D20EEB46749EC1C952217F619ED2CE56AB37B23004AB2B8F54108C11D77F3AFF6C1A6CC0AE39E092386C410F812A8202412115FCEA7E33400F316D04AC5D8B4FAA3CCD31201379D12F228FB430D28024D27F35228FEAA11E1EE9DF27701079548F903A620C2A6EB13E997C09D68D2596E6078AF2883C8AC13E9BB6F59453CC8110C9C216F48AFDBCFD892736FFE87E0C281F5411140EC2CB6A2360F3E6ED5FF802131CC3329117FD22F2480B230D4822FD5723F2A816ECD59A797404883CAA87F36424CCE0E216EBA408542C54DFA2FC19B13C9062B6229466A0B030041BA83CA29F4D03910452C91C88305AD82AFD3A33B37C66E691A7E2AFEE873EBA6F6F60E43673DD6BCA04F254AB8D0EFACD4FBED22D66CF1E15265C738C68C469E72B1C23E9F825DA86C84FD216E4E929CCF376CE1B9454CF921D0CE557F4E07F353F63FFE272DD6FC37FEA1FBD5A2C5D13F02D87343F42EAD6CC7F91476DC05FADC9CBB58660A4446341D3D3B8D90CAC8F8D59AF7218DCEE68559C5F5394A7B4B3D5EA8D2C0CC106278FAEBDE8A2DDD967DD036FD3D22F19C47BBADFF24BF013FBEAA297BFF4506F6D931AD4CD5DF3FB00A0477D9B4CF36777DFD54600EB292A4C72B531BAC185F36FBBC6DF53333FB51649A73F3612FBD17E9E877E9B762F614EA229785F90EC0664DB91FCBD0F53C4CF50FFC9D19D2DD87F12E25C9738144BD7847DCB81B323C79AF92FF2A805F4206BDEAD9911570FB4228FEA81E1E0062F323747527A1F776A00D14B6BC36AE757B638BFA6304F6967ABD51B5918820D481E5D7DE9A577BEF5AD5AA344DFA6255F323837FBAE99DF7CF439D947F7DF75887F03F594604775BC81EE100F294B57ACC86F2BEB06EB56ECFFB20F3CA6B4D1CF7FF569FB81A32A379B26549818A991C062BFA1164B27FA092D9C0D1F1DD9DFA0C5DF212112AA873077DB99B5BA81DEBAC2FC3D0F53713FE90082478AFA4F3A9C2E0F644EC4D20B7DB340EED8A166FE8B3C6A1D2A96441ED58485B242058A0D839EC79D5AE4C1AE888F5386E2FC9AC23CA59DAD566F64610836147974CB073E50E56D9A0AD5744B06F7EC59F83DB3EE1B971CCDCFABBBE30FE0B4437BF71812609F26B33BBEFE7DF7CD3C032F71D041DB3FF421554AE0322A4C8CD44860F4A7F8A945D251EB38E98E12CA6CEC9E1E11BCFB82041335FC50AFFEBBCE04460CDBF9660BFB4F6BC41A92A417F8960187008854855B5E33FF451EB580FE37A83C3D4A028603EDEA10DCCE3F30FA1E376B81CEDBBA383B7A97C77D51FE8CA23CA59DAD566F64610836FEF2A8E46D9A8309D50CF3E8086812B61B37EA8FEEEFF9A5A7ECB21FDD8F4D03FAC629DC2E80233EE627273A656CDEBCB0EF53E12A3B7FF320F2CE0EB384A637233546372D77D6E53F346B9E0CC5D2434F8FC0C36C9718690727BDBF30C7C644FCFB86BEFA3375387F9FC394EBA7D37F00BE0FC4FA4F4BA816F31B329C1EF02DC31DFC2023A95633FF451EB581B7F628FB17A9C8A346D8311361A1DCE7B8D3045217B7267080554D11CEEF668E960909662B4269060A0B43B071964795DEA639A45B32087A485FF7BF3DF5A097BC27BF2338B6FB37196F9F4DC59D6CF8CF47787262BE09DA48FD4CDBC699FD3E79035DCF845942D39B23384631FD0BFCFE1AA358BA59739DBD2CD3FDD5934798C79EABDAA1D7976B0C7A6390F0BDCC71F3F7E73FF7B36C1F88F59F36C06BF18B2145E981E400CE0D68E6BFC8A39620432D795A2FF22839FD8F9B634C6967ABD51B5918828DAD3CAAF836CD81BE056FFCD077EBD6FCA3FB2B572EFCDBDBBCA9C81BDB61180F4E57B061D36D22A0F2DF9569A385DF3EE075336F73CB0C5C468589911AA39BF7B20CDF8581DC89A5ABEDFC53692BD6D1F4CCD88B39777DD21884B9DBAAF48E8471F2F7E6BFEF67A0BFB1CE12486AC57FBC4EA81163E948C0B7084ECE66FE8B3CEA149147C9198371737C29ED6CB57A230B43B031944775DEA61541C552D5B0A5BFBABF6103A6B0C19CCD4C9A883C52730407CB9A9BFDD3993F7C4C5F68D932AEC090C014A2C224531EA31B5F6394C99D587A9EA20CA50F79D7A66DDCE411DC17A715DD7DFF5616E6EF6D98F2FD2CEF93B1FE93146C1E7E6124966E08F86670DA1B702AD6CC7F91479D22F22839BD8D3B43A0B4B3D5EA8D2C0CC1C64A1ED57F9BE632CA92C1F979542AEAD2F8F3FBEE32A06CD0AE34218433613159EAE6AFFEFC29EA4270C53DFF16CA1E9BDE32E591C05CDD93BF448BA43B5A07F3D065D799792FD7885AEA23CCDD6674665B759BF82C5D94BFAF612AE66796A89AB96AFF49075EC1BB2C104BCF09F896E11E4AD1FE43954730600D94927156A8495FE3CE2028ED6CB57A230B43B0F19147F46DDABD871D56E96D1AA7E992C1925FDDC7515B43077E77F4C659CA109C1DECB401D752CF8D76EC37B3389A3D3085A83031522391A1CAC9A08F8222E928950C541BA976B0BBF90B38F729545F2FD7F27BC71ADABD7D9668FEBE86A9523FEBF49F649066CA812BC6D209DCB78A71D4CCFF41CA23A8EA7049FED3DF8210033A9B09F408308C98AD0AB030041B0779C4DEA6DDF0894F98034DA8B96470CF1E7C56A42EBD70C821F80CA955401BE91F6B3BFCF0BA3F48029DC14A8D219AF27FC088FFFDD2CCFFA13E3D1A2EE1715668CAD0E3B6554A3B5BADDEC8C210AC5F7944DFA63DFEF4A7FFF05DEF320752139647D947F75BF9D57D1FAB8D4090D5478509D71C03329117FD329DFECBDAA34E91976BC9197ADCB6CA04CBA3146FD3AA1208DB952BF5A551216DDD6A12DB63346D04A830E19A634026F2A25FA6D37F91479D22F22839438FDB5619377904FD7F742E9B9D9DCFDEA6EDFAF55FFFD6596799036D923714FBE87EF25FDDF719591B012A4CB8E6189089BCE897E9F45FE451A738E3AC508EBF568F2F251C5CDC46560F9264BEF4D0C2964B2AE8F10C9B0FB6CD5684D20C14168660B5E411DCA911D9B269D3CEB7BDEDBFF6DE1BFC7EE219CFB8F7031F3007DA472F19842BEAAB3FFEEC676FFFC217F4A156B9F3FCF3F5157FFCE6379B2441103A41E4515BE48B3CABACF114C2789FA1506A80A64027365B4300DCCF3511D6455705B76CBA9284C5E9519C13C6EFE9D148AC5D6B3E200676DC71DEEFDEB7CB12B868F8A3FB6DB2664D7EC5D15061C21FC90CC88615E63EE27FBF34F35FE4512BF08F08673FDF24F2A8269E3CD24944010C296E99EB965C2769605F658BA5C7E0F961621D2F79A4A3A02ED75E74D143AF7A95160A237F36AD09579D7AEA6E7575FC50FDC517EBD6681DAB8D56AD322923A0C2846B8E0199C88B7E994EFF451EB58156475A13D16D91477509C82326328614B765F2C6105351B17443E0706967ABD51B591882B52D8FAE5CBFFECEB7BEF53F172D02475BFD6C5A8CAB2FBD74DE3E34828DB63FBA6F49AA8D0015265C730CC8445EF4CB74FA2FF2A805942222AFD472441ED524248FDC8724038A5BAD5FD6C15F8357330473858EC4D233BC4747005CC36C4528CD40616108D6AA3CBAF9831FECECB369416EF8C427F6A8D7794FECB5D7CA2EC3D6D7465CFAE2CD3644BA0A4B5661C235C788469CC87FFDC3F96A47F29BB2CED7453AE9D462E7B6278FFCB62A6E5BFF5E6490F32CB680F4FEABF120C77A144B2FAD17424E76F324F6BFB0ADC8C1503BC7DA1F89D6B199FF228F5A40CBA3430F553F4B0064AFD6441ED50643C18B658C019BD8DAB8991E3DF6B8E315AB9CCAE255389E6E098F19A59DAD566F646108D6923CEAF16D9A7ED8BB7866E6EC67BFCC3A70D9EC6CAD861A89C07323D6716867F0EFBBCECC3B8B0A935C6D8C6ED079F36FBB767F54245336749BFE023FA6877E54849F4BF3B413E67E5B15B72DA04FF1438D83F525B9D2FB0F17080E08E1F4D27A21EA1E85F3B43ACCD2B682EDFCBAC4A18C82F6E775A4A736F35FE4510BE821D6415EAE35037B398B0F16B9ADC66D5A5CC701B7762AA203711F4BA778456B4A3B5BADDEC8C2102CB93CEAF76D9A0EDC036666366A81323303CE804BDD852D48227D69F24E0DEEEDD2152BC8FD75260DDA87544F81BE82B959D4A83031522381B9BF179B5BAE9394D96C6E7EEF87FDB5E1A323FB7B6D98873C404A1EE691B68AB6ADC6BB1711BC793DB9FF7005768B3591F4927A21989AD7CBDD6B7398A5AEB1AB7A14B53F6B73B7A866FE8B3C6A013DCA1A4554F3B72D0507ECE32C90BB8BDBE440003B714D6A87B11D8BF9503A83976C28ED6CB57A230B43B0B4F2A8EFB76918B72B670E785C89B30766660E9E794DA7FFAAB1DA6876D6A4003821CCCE399D1E77B27EC30ECCAA54D2AF32549818A991C0400605F48DAF7B1CC593D9583C3D8AB455B46D1148E0F7224820476AFFD195A54AE021F9C50AD2E3F50AC0F3B436CCBA178A8C6306AC5CB4FDBD641C3AED9D6DE6BFC8A316D08A287BA546C592C8A39A609F77067AECF34E4A6B71DB066E756CFC46023E9AEEE18C0484D2CE56AB37B230044B258F7AFF6C1AF0DDD3DE749972006C7ED9322ACEBA085BAB8DD6D01FB5851EA03A80D713541C20A1DBEE7633850A13233546372D83D6C15F43F6C428F0F4083CC976B5000242D24A1BA99793DEEAF4CCDA2AD2B6D17BC10945636AFFF11AB913996BF17424522F06560F71ABD856FBBB6DA59B36B23A33AB8CCE449DD3B06657F5B0FBCDFC1779D40ADEEB3579B9D68C2C56737860B4366EB604AD91095EBF92001C8BA5033014D08660BB16C86FB6229466A0B030041B5D1EB1B76973EF788739D02DB77CE0038F3F752FF0E1A77BEDF557AA9DF37FDF7410B6616D841DC0DC56EC0AF60EE33CE0EC90494181B9599A0A1347708C62288FD0077FED915A5B4DD71BA177E6ACDC988A3286E7DA3255BD5A7CB996C1DA2ADAB6917BE1133EDCF23015EA05884D8FD62B8A9BA91DFF795BE13EF193FA50A1FD31B77559EDE41568E6BFC8A3B6200AA9C37176FA6879DC1936A59DAD566F64610836A23CA26FD3E6972DFBEE97BF6C0E7408FDE8FE6533334B30602D9DFCAB26A28DC884E04E0930F0D3D921305B60129BFE549818A931BA792FD1F0B1502683F24F9FAD5847D3A985D2D90B3B77B9526B61EEB655AC6D61C3A6071A9C1039DAF230E5D622274B2FEF333E4E99ADF8EFB9114C401FE0FF36DDCB44D0A20859B12E3B57D1CC7F91479D22F228392D8F3BC3A6B4B3D5EA8D2C0CC11ACB23FA36ED9117BEB097B769C0E6D959ADCFFE73D1A2B9435F84C3AA51445D2D193CF144DD085C1BE959C0A3DA54E74C0C1A152699F218DDF8DAA3880C4289A39E12F1C745A13549632C8FA2F7C287959091D87F9401F4FAD9550BD243F572089C9BEFB7D2FECC2B80A798BB53A3FD2DE6544333FF451E758AC8A3E4B4366E4E02A59DAD566F646108D6401E5DB97EFD8E638FEDFD6D9A7EA9A7A5C94F0E3C10E45A0F4B06972FD70EF8DA88E3CC67386F85770CEECCA0506192298F04E6EA21AB7E1C4D8379B297655EFEC0F223EFE51AC9D35A98B3B62A6D5B762F38784A68DE4EEDBFEB365CD578144BAF50AFE8B9481BED8F6EF0B6F27CF07244DBDF49E7999AF93F54790403D64069659C9D625A1B372781D2CE56AB37B23004AB2B8F6E5ABD5A7FD122585F6FD30010433F7BFEF3B51B20924C6AC74B06B5365ABC187F90BF143EDAE3BC6108CC14EE1CA3506162A4462243C593419E0CA15432D08F9E39F989EE51B3B0CD96BF9863FAA9B530F7DBAAB86DF9BD50FE3B372678520BFEC7FCAC97EE3A8C7533B8D568A3FD236D457CF0B51150D0FEB1AA4F953C82AA0E17FDD3DF82D001D0D94CA0478071C46C55808521587579B46DE316FB93AE3DBE4D03B6BFFDEDFAD9152824DF8D8E960CD6D2462980CE60A5C6104DF93F60C4FF7E69E6FF509F1E0D97C4E3ECD433F4B86D95D2CE56AB37B23004AB228F6EDBBEF3C193DEF75F7B2F868BF5F8360DF8EE97BFBCFBA0835097781FDD2F26B13CEA5C1B012A4CB8E6189089BCE897E9F45FD61E758ABC5C4BCED0E3B6557A9747777DFE5F1F7B9E798D05B2A0AFB769C0D6534E0171066EC0DF9B56AF36A9D54819B67D6823408509D71C03329117FD329DFE8B3CEA149147C9197ADCB64A8FF268DBC62D8F1EF246940233337B5EF4921F7DF55B5002F4FFEE59BB66CD5DAF798DF664FEA083BEFAA94F9903754810B67BF698D78B9D6B23408509D71C03329117FD329DFE8B3CEA9434E3EC9441D6DB017C31DFE0E236B07CD0ADA126B42831C35D9C98E3A54339662B4269060A0B43B060FC1FF17BBFF7E87BCDDBB427F67DE603A79FA333C39DEA9E1D175CF0F8B39F0D9EFCD7DE7BDF73E69926B53E232E19DCB269D323AF7D2D36C8339EB1FD0B5F30A982208C31228FD263BE32C5A5F52F50994C9470A04AC14B804E6CB68600B89FEB17AC4B4005617248FC64E84F76F83902E9A59DAD3403858521981FFF97BDF39D0FECB30F940BF6F0517F3CB779CE6636A574C69E3D0B2B576A4F160E3E7861EB5693DE885A0DC5B1CF8DF6DB6F61F36693D82D2A4CF8239901D9B0C2DC47FCEF9766FE8B3C4A4F401E1D78C2E7D4219147B508EA07F6886448711B7BEA438968260B9411FCCDEA607A6967ABD51B591882D1F8BFF8ECB3EF7AD18B5004CCCC3CFE3FF16D1ACB0C25A820E8821B3EF109FBD1FD1DC71E6B529B3252D88E813602549870CD31201379D12FD3E9BFC8A396C10F0A67E248E4513D9C472D318614B7E5152A1350288242BF591D49EF461EFDC3273E71C3EFFFFE137BE16F96FD629F7D3EFDA217F51BB6C51FDD6F40F3B01D0F6D04A830E19A634026F2A25FA6D37F9147ADE28A239147B5C0C9BEE8398A664071ABD54BE4F7A815258F8EB408CA0ACA65502CBD0B79B4EAD5AFFEE9B39E850A6066E687FFEB7F7DFE231FE9316C375E7CF14F0E3C503B33BF6CD995EBD79B03A3D1306C77EFC6977A7062501BE1CD22E8FB861D8013EF1058847B9414EA1E5061C235471A737FFD239A8EBB84C0B7665B73BF625B596B61EEB66151FBE76DEBC49803393FD0FE69895D8BD6811EA8E03FE93E08C997D8FFF27EEEDE174AF9B9FA6CA796CDFC1779D422EA2BE6F22F9703441ED580058813BA79D76F6DDC4C8FAE41EE3AC6391FBFA223973A6C8EBA1963E9005CCE6C4528CD406161B86DE3965FBCE14D5A8BEC5EB2E4DF56AEEC376CED47F77FF1CBBF5CF7A3FB40E22583A08DF4772C2D59127E6E04773F3CFCE76007897608BCD9002D837428DE15549838822391E9EFC2F6E59197BEEE08FA0BFC71335FAEDD893C0AB42185B4BFCA69F2C56E0BCD136CFF84F06B057D2307A2791CE088C9C3697598F51C52DE5A7F0B0955469FEEA436F35FE4517BF8EA48E4512DA0E787A2183B7F9EDE6ADCA6C5751CC0847C08F00E3BC0517B90E68CA52B4A3B5BADDE6803F0B6ED3B77BEEF74FDD9B447F7DAEBBA238E3011ABE83E6CAFBEF452FB03B7B0D1ECDB95522E19B4DA68FFFD1776EC30892EF199280307FE7016BCCF805A6B16EB3FAC2FA830710447129B9B7DF1D21547F84F8FFC7455DF3C43D0E02C55AF2354BD9C43C9C33CDC8614DAFEAC35C3239373C3F00C526E62FF59DFB0EEB174EB6825FF31999E4C697198757D2EBF2F145E5F044AF0576136F35FE4515BB83F70691079548B50E7E7A1DE62DC26878F4A5893BC7EFCA88319355CE0DC58BA06B6CD5684D20C141D7D777DFE5F7FF1C2DFD05A64CF1F1C79CC9BDE64C235A3E3B0BD69F56AFDABFB8F3FFDE95B4F39C5A48EC8284B062B68233D862FB5B72E70DFDD5EEE32373BABEEB0DB7F1CF8E92A4C1CC191C0E64E5ABAF4A439FFE55A207DEDECD21793FA86DFACCDCD9EA47EBBAD8B976B656DE836208BCDF049989A2507DB3F19BCF4C84899E7ABEA7FB44FB636CCF2AA54E8DB167E2E829508ACC26CE6BFC8A396D0EA88AE3B42441ED504C3DE0B6C27A9B5B86D0337E6DD312D32C285080D0B88975EDAD96AF5C6B9CD733F5D76284EFC3333A090EEBCE46BC1F8EF2C6CAF5CBFFEDEC30ED3FE985FDD4FC3084B062B692300EF767EABE0C6B1FB59A937B8DDC98089885BA00A1347708C6CA87850FD7079144C777E8DDFE82793DFB72EE45146B00D79FBF3C0E2FB39789E829599D87FD63DD43D0FF704955ACDFFA23ED956FB47FB39BA183C9013383773DAAB6033FF451EB5847AB3C61F1E893C6A027675020B88D6C6CD96A0B571AA02C11E1CB1FC443FF80D5E3A5CC36C4528CD60D8B367E1ECB3ED373DEE7CDFE93A127B9447F4A3FBDBDFFE76939A82E64B06E7E7AB69231F36D2C76E3003B345A710B74815268EE018D1F0F599963BAE3C8AA5BB866A29FEAEAD7779C4DBBF6C5F832D6E53D91D4DED3F166FCB573BAC16E8A24DAAE63FC3A9413BED5FE0071E726BC4089C0B4926C53BD8CC7F9147ED107E7824F2283DAD8D9B93406967ABD41B2FBB6CE18003B410F9C99B8FA4DFF4D8973C023DA4FD49F5D17D42D32583A087401541B6DADA08702783C0C81FC43D8BE31C5561E2088E918C3EFEA1322896CE2D208088F52D8FFCF607A94013820D1FC893EFB7E0BF1645C88A75AE43B8E756A08AFF1C27532BEDEF36914B998BFEB9906213BCA3CDFC1779D429228F92D3DAB839099476B6920CF3F30B871FAE850828A43B2FF91A8BC4EEE5D1B5175D643FBA7FEF6187A5FAE8BEA5E19241AB8D0E3A081BAD14E75FE6803B7DB1C92C8A3B8504CA64D39B23384631B386DA05044D2C1D3FB63673845A57A4EDFC1551E504D6B73CF2DB9FE50ADE2096E8CED0ED0E53D43DBCED9E7315FD775AC2C9D48AFF41370CA1FB42F1CEC5133C6C09CDFC1779D429228F92D3EEB833704A3B5B34837A9B863F9E0A19F6DB0FB7E35F0B69C235A3BDB0DD7ACA29FAFB1E9B7D74BF028D960C526DB47BB7492CC11DFDDDB19ECF5351D8145254A60A13477024B3D8532227DD553CA096C678ED51A8FDD5E46B12F178685A77D259A6C4FEA33BB674B2E3A453AAF88F790AFB4F62D00FDECE16D7198FC27303EDD0CCFFA1CA2318B0068AC8A3B4B4366E4E020DE511799BB670F4D1F671080B43B0CEE4D177BFFC65FBD1FD075FFBDAAB2FBDD41C484CFD25834DB491064778833B59B913932194E84F216A16D4B8B955983882239955924760B8DEC840B491AA57B664DB58FFF2C86F7FDAB6F4A89B19F63202ED9F94D0A5C8EDCFC96A3766FEF34B33F87D61990BCFD5673BC79BF93F487904551D2E23FEF4B72054073A9B09F408300C9A2D8DFB360DE48C4957B03004EB461EB5F2D1FD2075970C36D7465D039D81AA8DC199F27FC088FFFDD2CCFFA13E3D1A2E6A9CE5C12FD6D8863EEEB76AE1499D906708BD4D63B030046B5B1E5D7DE9A5F3FA37CBD447F7375E7CB139D02D6179B479337E2336A48FBD3602861E26222FFA653AFD97B5479D928DB33CF8C51ADBD0C7FD56ADAA3C8ABC4D63B030046B551ED98FEEFFE7A245693FBA5F97803C026D042212120F3964FCB51130F4301179D12FD3E9BFC8A34E117994DC863EEEB76AA5F268096488BF4D63B03004AB2B8FA0FF57646BE6D54F7FF557BF75D65926B53F9C96B4DA68D9327CEA3604861E26222FFA653AFD1779D429D938CB835F2C6E6445A7817E427822E511AD32AD2C2E5935047FDDD35B240B19759C8739FBEC3D4A82C4DEA631581882D5924770A7AA70FB57BFFAB397BC446BA35DC71CB36513DEE2DEB14B06E72EB9E489673C037C7BE4B5AF1D13DF0441680391472DA13F02A3C93F0823F2A8BEF12FD8C50F57904FBE4027B68726C2B0BEF6B33CEA8B648C42C28A1B55843A29F8791FF6DBE9AAB385D8B0217F9B76F8E195BEAA27C5D3A3722EB8C0AC7F5AB2045FF98D0DA62507F8DC4833F43051FE0F18F1BF5F9AF92FF2A80DA83652649F85117954DFB83C625F3137F4719F5BEC0BF4DC2743289BDC6F8EC11F73F07E3B5D7536175042471F6D84D101072CF333C461610856571EA92008433FBAFFC0EB5FDFDA47F79B60C21634E530B51130F4301179D12FD3E9BFC8A316703E1EACA592D9117954DF024F8FE8EED0C7FD120B7FA98CF7F408B2815A2A7DB976F6D966825FBC18B7F7ECE1190A616108964A1EDDFCC10F3EFEF4A78363AD7F74BF1110B6A823F563AD016A2360E86122F2A25FA6D37F91472D109047E6FD9AC8A3FA86F2884195C1D0C7FD4253EFCB9C6546D9F223E7D11124069E308141461DE7F8E423F4362DCF5001168660A3CB23F6D1FDEF7EF9CBE6C03871D5A9A79A455ACB97EBA64801BE2C3538DF4B48BEDBCF4927F9DD038458996DCA23D6EB7097E03EE3E4C67B6CD6BD0177755D0BD373A83D695A46E058ACF99D4C09BE96B090883FECAB21835F9E18CD13AD630BFEC7FA79AC0D4972C10DD04CF3D74282DF66DC1A57B440B2D8C547228FEA1B7F7AA496E3E4436A8BE37ECFE66B2362E41D1CBE56D37A31288FDCB7696C418FEA8D5561610836A23CBAE1139FD8A3BE3AA8F78FEE6704960CDEB47AF5137BED955A1BA9B9C10CF2745B4D02243D1BE331D98EF7CE0939D13281D6C2440B1AD2EBA067C63A2D377EAEAA7B78755DEAE9B94A7BD24CBC6D9DB93703F2E7E9AA32B6CCD4FEC7FD81EB06AAE212CEC3CBA47952FB4F9BC7F13FD286B865D3B9731C759C140334F35FE4512BB0C547F66B78451ED5376FED919BD2DAB8DFABA97F827B8BAFA9E1FC818D0039ED3FD03D7974227436F76D9A0E7B8BEA8D55616108D6581E5DB97EFD9D6F7D2B3AA67E75FFFA4F7FDA1CE893C092C16FAD5EAD7FE56D4D9D862A874C0E889D209C9982ECB1FCEE24628895A968294CFC156FE0851BAD51E3E7BABD17FF15449E3C259E9E6BB7A7B3834D4BCFD6B80DCE482D2FA2FEC001DF3546388F5364B0FFA4C32D3CDF8BB521F30DF7A34D0D652C5DB18295D3CC7F91472DE0BC4F73DEB4893CAA6FD3278FF0C990A372B244B6641B1B413D4BE3D8C6395DE98F82CFA64166B35501168660CDE4D1B5175DF4C80B5FA8B51188A4E4BFBADF10EF9DF8B299E73FB6176AA31D871C52ABA14AF166013EFC2B627345F8487199AD848996E68EAC01D5FEE2A5F86F7745C19BB5C0B9D4DA7E7AE412684F9684BB596B865A1F289AB293CBA3983FB00D98E68FF813CEE3D5CAEF3F2D41AE5CD886399EAF3958B9D9392F4333FF451EB540401E993D9147F58DCBA3D03F2BF3A383B7C209236F07504BFEDCE39DBB183A5BE1C7E3556FAC0A0B43B006F268FBDBDF6E7F757FF3EC2C46C598E0CAA359A5DEC0E6972DCBC2361D4C0EE168EEED03E12980E7361496D94298A012C2CEE6F43A8CD65CD6680D64F2530B9E6B0FE9BA3B27B63D3DF3F6648DA9C03485DFF60096B274769DF11E7072B5E17FC81F4CCB7B0DF814E842913CACCA81FE931C750D20F3A6B80D335CCF1CB2CAE88248CD9BF92FF2A80DBCA7F49956127954DF70C075A10F51264D1E153E0DCA660E2038EB78930D64D4711EA33403858521583D7904A34CF6D17DD01C63F5D17D8D5D32B85C390976F79147427A7A79A4A7B66C88D7F35C60C06733165230371495993C4CF0D55864C51B31FE6F1B6D95CE751F97B6333D03C1F6F46657D59C3625705B4C41E42C37536AFFCBFD51C48FE4D83CB86173AB9DFCDCD6DA5F91B950DC868A82FE8FC7CCB9DE0D6CE6BFC8A396A00AC9682340E451724B3EEE4F92A9CE564469060A0B43B0EAF2E8BEF32ED0ABA0C6F3A3FB1A1DB4561B7DE2957FA0D35B9047809E809015EB70380F8DF96EBA9A1A9C519F132D337198D0C74245F2C87DE4A9ADD1B9AD4CCFB1F6C4743719DA9526F81902697EFBA7A3823F0AC78708344F71FF690F732DAF1EAEFFB817AE270247ED31AFA066FE8B3CEA149147C92DF1B83F59A63A5B11A519282C0CC1AAC8A3DB6FBDFBE1A3FE580B8EDD071D349E1FDD4794385AFE7FBE45BBFAB5E7C01E5B32D81A7616C0E9299F0E9C7DDC8C4E0D01DC99256D98449F710656C871F553E75C95AE76D34FCF05ED0987D81196E2CDBE083FCBB90189FD8FF9839562FD27E467691E20D07FD211F041ED735F88139825E4670666F5B0D768E6BFC8A34E117994DCD28EFB1366AAB315519A81C2C210AC541EDD79C9D71E7FCEAFC065FE6B6FFCE89C0983F1E49C43ED73A31DC7FE4168C9603AEC7CC677DC49C9CE164EFE08D1329116C3C47902E43E2E0AAE90A356F9DCC4D373617BF2B91B7126E7C84CEDDD3BB297D8FFA83F9E0F55FCD4799C36E10D94DAFF989F5EBADEE3EE94E1E56FE6FF50E5110C5803458DB3D9102036B2B538EE0FDF4A27F55AB33E0B43B0027974DBF69DBBDE7192561BBF78E16F6CBF02FC19EB7FD5CCBDE350EDEDE9D02806B664302938F41BDC811F877643768024E5E859C49901A36576268FC0C86241A26F949FDE1755F073A3ABEBD24ECF05ED09384D9A136E5C37332D389FE581D4F20288DDEC2A7E46CE8D15D98AFF817EAE08B461D5FE6FC1139CE466FE0F521E4155878BFDE96F41689B534F5D69023D028C3266AB022C0CC162F268D7C61B401269B5012209A41264861294D81847761C7BACF6F6423DF422FE92C101039DC14A8D219AF27FC088FFFDD2CCFFA13E3D1A2E431F67C78DA1C76DAB9476B65ABD9185215830FE2F3CE0007C953633F3F8737EE5475FFD96CD0C2518B93166586D145B332EF2A8771379D12FD3E9BFAC3DEA94091867C78DA1C76DAB742C8F3EFF918F3CF0821768A9F1F0517F7CFBAD77D3CC5082098371A2541B01228F7A379117FD329DFE8B3CEA149147C9197ADCB64A97F2E88AE5CB7FB1CF3E50E2A37BEDF5934FAF6139C1A004E8FF63C52D6F319F53BBEE84134C52049147FD9AC88B7E994EFF451E75CA048CB37D40560C76B166B00370E9A0B374932D3EF4571B3A6D60C84A20C79C423B9247177EF4A3DB5EF94AAD33EE7AD18B8E79D39B82610B776AACD8F9B6B7699FEF39F34C931447960C0AC2B421F2A825C8D742E64B3C451ED547E90632E92B2940F6A1139BADC160A490A364A05AAEB229065BC14828DA40B84D95556967ABD51B5918824178AE7AF5AB7FB6EFBE50D0137BED75DD11471487ED18B17CB9D6460B6BD69894426A35D418A2C2843F9219900D30CC1DC4FF7E69E6BFC8A336E03F2AE2FD62BF50113EDF23441A00C38A5BA38CD42F4A5339544F1D610BD8ECCE0E964F0A2AED6CB57A230BC3DBB6EFFCD971EFD022E38117BCE04B679C3194B09D5FB60C7CFECF458B6EFEE0074D5221F272AD771379D12FD3E9BFC8A316D0EAC83C34D2BFE3D4E617A84C302175C41856DCCECDCE2AF1C2640CEC96FECEB685350AEE6665F1F682C2CC5684D20C141A833FFAEAB7EC47F7372F5BF60F9FF88409DAB10F5BAB8D6E5ABDDA249521F2A8771379D12FD3E9BFC8A31608C8A3AE7E9D60C2709E8C841966DC3279E43E1043B1145748A136C134053B0029662B4269068A0DC09DEF3B5D7F74FF89E73FFFDDAF798D09D78C710EDB06DA0868256C95ACCDC9EFB8BD9900BD9FE484784C90939D3EA4C2846B8ED18C7CFDE38AF32BA4532379BC1F1231B8E7F614E6B17B114BD7B0E8465AF03FEA43AC0FC4D209248B5B8176FDB7D7A275CA701D09B42D21B1FF228FDA80BF5C03B4581279540FECEDF15850F4346E8E487990478EE289EED886996D0A3BB3B4B3D5EA8D107ADB366EF98F979955D80F1FF5C73BB7DFE3C7FFD8866D056DD4E19241B855817BECDC4D25884C267267FD3E60803C79BADB155498E46A6364535F6F6D140C6E67DF881D4BA7861AC8A6AB9F60D30A899F4B15521F611EBB17D17BA450096E1290DAFFA80FB13E104B27D06278B552FB5F742D8B534944E50CE7057899F4D466FE8B3C6A07FDCC0839F0D043F3B76B228FEAC13BB9666E8EA4F4316E8E0E562C12E440FCA8DF20CEB0C7339476B65ABDF1BEF32E7862DF67C239F0F79ECF7C11223118FF6318B657AE5FFFE06B5F5B431B295A5D3208F72D708BF9BC95DD5DF7B6FABD0009A71A549818A991C250E2D8DF47438963A44C2C9D58EC676B59BAFB7B233D8479EC5EC4D2F51D00BC95854062FF633EC4FA4061DF30B032DD53DAF53FE89E9BA7A06D339C13303FC9D7CC7F9147ADA3065D79B9D68C50DCA840B13DBF877133016EF0B2C102F72363997F84A5B80D56DAD9AAF6C6DDBB17D4A317B0470F79E3DCE6391D89839047A08D1E7AD5ABC0F3C79FFEF4A2776A8177E266A785B085FB5461B559A8FBC7520B7A0DA0C224531E092CF69428961EB74C06A196727E67CD515AFD8779A4D5697A646521D2AEFFD687581F28EC1B1AAF7E704E5BC36CF1B5143C4B41DB66E0A1EC183FBD99FF228F5A802E37328F91DA1B67271DD5E74947C740A2F1D1FFB8D90416E4EE6E7C2CF347119D66B33B3BA9E4D165972D2C590259FF6BEFC50F9C7E0E8DC4F19747541B5DFFE94F9BD4200179D4DEBF6ADC1B05F73F70C755D7776EB74A0142DD038F2D9D5D677200CE992A4CACF24863580773A54AE92123722AF0F4282FA1EF30F7EF8526988E892CAD4DFF731F627D2096EE80B78DA4BB354BEC7FE1B510962107B3060F6848DF33299A66FE8B3C6A83FCD59AA6D5A7F45380EDF3089B1AFA1E379BE10739A923A921A4D2FAB2DD8CF0B9002498AD082519F6EC5938EE38C88476F0C1DBAFD8C42271CCE5510D6D84F0976B4057EFC4F10EBAFDC19F31087E767302B9FF6E1E152699F24860CEFA2175A9FCE55A283D68F45113189E6B77F15CAC803ED4AF3C8ADD8BA27496DC9AFF8E0FB13E104B77514D9E2567EDAFF792FB5F742DED6F68A003026D9B81C5D8B37087E46BE6BFC8A396C8875AAB8D009147C9E975DC1C774A3B5B51868D1B170E38C068A395F8CBFF2C0CC1C6591ED5D4468AFCDF351D2F1974077D359B45A6074D6092F0A614278F0A13233512D8BA239C1761769D502CDDA658530F87BC576F4A212956AC43F1D4BF3C8ADD8BA27B14B83BADF8EFF98009A13E104BF7D0420559B1CEC9D382FFD16BF9EE12629EABF2E26DD1CC7F91479D22F22839BD8D9B43A0B4B34533AC5A6584112824D0490A168660632B8FAEBEF4D2DADAC8A5DD2583ECDFB67468C743DEDC10C8EF4D12A40C853FBD591532B28D288FF03D5A443659C373F3776DFD8479F05E00B17443600A4FEF7FD087581F28EC1B61DC2CEDB63F73877B4B897BCECEC28CF97E33FF451E758AC8A3E4F4336E0E8426F268EBD685830F36DA68F9725C949DC1C2106C3CE51168A3475EF8C2DADAA8D32583EE286F4776774C2744F23B7879C89E0A13223E4635EF259A5145B1746231CDE4A4F365DD3D8479EC5E44EF91C5BD118AC4FE477D88F581583AC129935FA04DFFF9B582DE65B8157150DD2D2BC7D99936790403D640493DCE4E3B3D8C9BC3A1B4B3F10C6BD62C2CC6EF7B5CD86F3F5C91EDC2C2106C0CE591D5467B962CD978F1C526B5121D2F19C401DC908DE338F67B6493013948C67D2885ECD1029C49448589911A892C7F11E66AA070BAF213E58EFAA2238E7989864F950CECBD5BF7611EBB1785F7488359DC94C4C354A10FB13E104E77FA4FA04B1AD2B77FFC5A6E9766F0B67533470B6DE6FF20E5115475B8C84F7F0B9D019DCD047A041846CCD6FCBCFDE83E6EC0AE070B43B0719347236823CDC42E1984CE40D5C6E04CF93F60C4FF7E69E6FF509F1E0D1735CEF2E0176B6C431FF75BB5D249DD64B8EC327C5C04DB8B1717FC823D0B43B0B19247236BA328228F7A379117FD329DFECBDAA34EC9C6591EFC628D6DE8E37EAB563AA9EF0719962F47610476F0C1B8F0280E0B43B0F19147ED692340E451EF26F2A25FA6D37F91479D22F228B90D7DDC6FD54A26F58D1BB76A6104B66A95498CC3C210ACAE3C82FEDF065FFBC4271E7DCE73A016F017B64D6A52441EF56B222FFA653AFD1779D429D938CB835F2C6E64A5A781FE60D340E591F39D2E85E9B4FA4EC58D91D5AC165B026CEB380FB072A51146E4A3FBC5B03004AB258FE04EB5C10FD7AFFFC5739F0B15D973C001B06D5253234B060561DA10799402FD9117F329600DF9140C49177954DF501F50C5801F4E209F88814E6C0F0DC4D49705BB958AA463DDED4778C86F9B478D358EEA6C1EE4A3FB6BE0EF9E3D26BD0C168660B5E49129252D3B762CECBF3FD6E5A083E877102427DC92C3618061E298F27FC088FFFDD2CC7F9147A3927FD685C820FEF304D9219147F58DCB23F5BC847D5F1C393ADE663ED5BCF408F5BBD365E96E4D5553147E991ECF1F9247B3B3E6A3FB4B962C5C765920431C16866075E5918E82546CBCF8E23DEAC7E01E79E10BAFBEF45293DA02F272AD771379D12FD3E9BFC8A351308F880E3C907E871CFB4E39AD94CC319147F52DF0F488EE0E6BDC9F9B3D49C917FE122D96EE58ECFBF48CE1B9ECDB625467CB087D74DFC950060B43B01EE55167DA081079D4BB89BCE897E9F45FE4D128800E525F8FE24820BEABF6D8AF13F0E0178B1BCA2386F775BA36F3502C26830AE4111E2AFA814FEFD11118B4958EF385B56BCD47F7E12FF9E87E9EA1022C0CC1FA9247D77FFAD39D692320BD3C225F5F6759B12E9E0EB0AF020C7F711EC9644E33F414263478D973D08C40970E44410BD3336D6BDA5824DD6D437220F6B585D1733BF43F03FB02F1B352FF8996D9AEFFF452257EE2E1506D0DB17BD4CC7F91472908C923FBB572F4A0C8A3FAC69F1EA9F750F943949EC6FD11ADAE3C2AD3462A037B7404869D6DF7EE828FEEABDE5815168660BDC823D0468F3FFDE909B451ED25836D81637A68BA72D261A7605A50607E9387CD8DBDC8238CDCD0CA39DA99FD8EAD52DC90074B3D3D3B4DAB6664DD7064D36D4338216F4FD2D084E8B94057FE5B541A7501CEF05D76282A33B5FFBCADF24B15F9A92B153D0EA7C6EE5133FF451EA540E4518BC6E5114BE963DC1FDD700EA82A8FF09D1A843D973E8E45DEBB1D0C9D4D3D65413BFB6C1DF314D51BABC2C210AC7B7964B5D143AF7AD595EBD79BD4FAE8A844880CCA1335D9A176E5913B8EE7B8E945B38606E78E7C7670F7FA9047B195732C9D74DDD8CA3CB0C4D3336F73D8D78DE51CC036D43BAC35C344CE5574E5BF01AEBE7405B4629E0839E809010ACB6CD77FD2BC313F310BF60DAC55B82285F7A899FF228F521092477657EDC9CBB5C636DDF208E79282F546994136FFB73F57660F8DE21FDD57BDB12A2C0CC13A964789B451E325836D101BD4593AEC02E813129D052CBCD8FEC3249341A881BCDF68D37DBE60055EE2E99991B7166EC1B559AA2B156244CE5574E5BF027661CF49C4A43AFD879799D67FE62F914B513FE7666755CBE2A9617954788F9AF92FF228054C1E958FB34EE48B151A97476C78ED7FDC6F62D5E451C95AECDCD4E8E2BD7A5BB502B5D171C7157C745FF5C6AAB03004EB521EA57A6EA4E2B3D992C116B0F30283A7E37E3EF8E324129B0970FE40DC0C7D8709766CD345034F8F582C742C8F548B91C6C6B656D834CCB174769D6959203C4103FEB99A0EFDCF3A8776DA7482EAFD47C3CA4CED3FEBDEF9D54AFDC4ACAC6D3578207E8F9AF92FF228056C9CCD1272B243228FEA1BCA2317FAC47E92E59179D7E0A28FC228425FB7B15D637BAE39A46C528702CD560558188275268FD2692342481E15BE134F8E1ED2FD792A966E61D34B08374BAF6142B4119A8AE86C17DDCC7A75665DCA236C6AD24EE88E6D79DB842A13B923E1E60F9FABE9CA7FDC373E1475A27005327899406AFFD1017B09B513F4C7F7137D0B7AAE9C8EDEA366FE8B3C4A81278FCAD6783A912F368AF53AEE8FBBA9CE564469060A0B43B06EE4D14DAB57FFE7A24589B511D0BB3C8A4D6045139B263A49109C3CBD85897A38E469F7FCDF3C2BD6F962A82B79A46654A7A1614EA5FBD98DF06E48A8FD23E76A3AF21F52ECBEE73421E4BFC62F53D182FF5A14212BD6C5FCF1D3A39EE301DE1679CE66FE8B3CEA149147C9ADB7717F08A63A5B11A519282C0CC13A9047561BCD2F5B96521B0121796477A9586A4B1EB109D5E2A7E354422785D099813C6C7AE0DDA375ABB2720EF593F33CB8237984CD136A439A66A75CDEDEA1493A76AEA21BFFF19A1EE827662EEB3F40A84C4D7AFF29B639CBFD0CB5BC86E7757236F35FE451A7883C4A6EFD8CFB0331D5D98A28CD40616108D6B63CA2DAC8242584C9A3CE9766F3B9202394EECE0AFEAC8114E5E9214C622BE79C745442DEB3A5F6E5113655500760DBDB0364C76B5BEF0EC5CF45BAF29FE0E429EA1B86C232DBF49FEE94FAE96670F0CE257BCDFC1FAA3C82016BA0A871D6897CB151AC87717F38563AA9D79AF5591882B52A8FDAD54600934759424E76280BDBC404272920928EE3BD811C7633E30C61708BE83E4C0A56CEA9A74A86D03756B42E8F4833E5647369B89DDD93623378ECDCC4F2A2D0FF0CCC449D28E93FC565A6F51F893655F48002DDA435B5FE2BC2F70868E6FF20E5115475B8C84F7F0B9D71EAA92B4DA0478051C46C55808521587BF2A8756D0478F2A86CC9E08081CE40D5C6E04CF93F60C4FF7E69E6FF509F1E0D97A18FB3E3C6D0E3B6554A3B5BADDEC8C210AC2579B4F594535AD746751079D4BB89BCE897E9F45FD61E75CA048CB3E3C6D0E3B65586288F401B815B60F71E769849EA1B9147BD9BC88B7E994EFF451E758AC8A3E40C3D6E5B65DCE411F4FF62AE3BE104AD8D6E79CB5B4CD27820F2A85F1379D12FD3E9BFC8A34E998071B62FF4A23BBEFC7078714B161EDADAD0B48CEC18596CE857DE102A5301FB662B4269060A0B43B05AF208EE5431F79C79A6D6460F1C7FBC491A1B64C9A0204C1B228F52A017743A6B3C155EBAC8A3A6A002C01FE3F13ECB009DD86C0D00558BAC064AF804240FCD84DB260B660F7C92A3B0CCB19247A694186BD6686DB4B06A95491927861EB62A4CF8239901D9A0C23C80F8DF2FCDFC1779342AF987815D79144C1779D4102D13420A6148714BC48E02F63DC143F3B8F50DEBA3C2324B3B5BADDEC8C210ACAE3C3261E0F1C377BD4B6BA31DC71E6B92C60979B9D6BB89BCE897E9F45FE4D128988F01F39FFE8EA68B3C6A4836E70714C280E336509BB00452141C22B8B94A3B5BADDEC8C2102C893C024934CEDA081079D4BB89BCE897E9F45FE4D128800C0AFDF477345DE45123C8948F9BCEC392E1C6AD5F15FF519046E504AA89235A406967ABD51B5918828D2E8FAC36FAE1BBDE6592C68F56C236BBAB067D73B10370B2FB498FF99D4413CDA3C2846B8E34C6BF1D1BBFD451E37EE523FD6D69F62B22B9910A38DFB8DD4298931B409B2A785F14C4B75828922CEE2D6AC1FFD8BD8EF810AF5700CCECE4E8D0FF0CEE43E47E3944CB6CE6BFC8A31404BE5F4E21F228056E986000D08EDF42DC76800A751EE4DE98C4E0556704CA2CED6CB57A230B43B011E591D5465B4F39C5247589B734D0E0A5B712B670370B6EA6026FB8E9106433D27B8AF3A830C9D5463AD362C8F99190ECD7F8510F650A896EEB2FD40E2824A840AEA8F09BB5F33CC9C31C1BCB348F1B777020745F946F244F20136D727E8B52FB8F1E84EE75DC8748BD42A813497581AEFCB7701F4893E321C739435199CDFC1779940291472D829D9E438223F9B8D93A2A7003E11D8BFA1CCC111EE22265425399AD08A519282C0CC1469147FD6A231D9A881BB6C1F436C2B67CB6221382B38DC0BE77B70BF3A830315223A181D059BAE288FCE9117B92041267E949737AC3D143A0969C874368B1DF68539638CCDD58A37BD06A81FB521E9B5EFBBBA724F63F76AFE33E84EB15024E5ABA6205AB6F47FE67701FDCC674F7320ACB6CE6BFC8A314883C6A0FDEE975CAA8FDBE375CE71D9C7056F0BAFB6DA1889759DAD96AF5461686608DE551AFDA28B6343096DE46D8E2F8BF14FF7DAC08DCBDF01460283C6870F3A830E19A6354034103EA87CA1AAB876C86E07BB4A01262E7BAD66698D3968ADC173F363DBC7BE2446BBBC35476EDB80F917AF960C6D939AFA06EFC37447CC8881E70707335F35FE4510A441EB5464811381DBFDDB84D4B615CC76A9AA705C7E8C2324B3B5BADDEC8C210AC993CBAF7B0C3FAD346406C69602CBD8DB0C5BB9DDF36B889EC1E867A4306DEF2E84103CFA3C2846B8ED16CEDEC52257188D6C1B7665C1EF90F84E80BB8DCF4B9EBF21FB27574553B61AE5A09C81B3F7C5F30DFD2D9752637106A7D76CBDC3BD0E63045AE14F5A1ACBF19B20378A293A323FF91A80F262710769EC2CA1479D423228F5A22102108EDFB6DC66D62B2E076B0210C035828EAC949E4B0CD5C5C266C9BAD08A519282C0CC11AC8A3F965CBE0AAFFB968D12D1FF8800E8ADE18A3B00D4C6B912980F6FD18813C2A4C72B531BAE16B35BD4EA89E3C0A6B23303C17FB78476B8F1C58F3E798033ACAF23B12CE8FA93659EDE4995AF39FDDEB221F08E10A4059A68E58AAD301BBF2BFC8879CB0FB165E26D0CC7F9147291079D41FED8E9B03A7B4B3D5EA8D2C0CC1EACA23AB8D6E5ABDDA84448F8C51D8E2809E8FE7B189410DFB9119232392478589911A090C748F9541540315BF5CC35DF02D1340AE7169A584D48A7566B7E53077DB3FC7A47B3724965F0B12447F4B9BCDD38AFF7805FF5E477D2084D221CD9685C79D823BF2BFD007021E0BD52B54A6A299FF228F3A45E451725A1E37874D6967ABD51B591882D59347CB978F9136027A9447FC9FBFB04F867477CF80A7C4668B8C781E152656798C6AFA490F03A50CD343542DE1D320FF451B31BEF6A84D7914687FB51F4857ED99FD3F233E3D5BDC2CE9872974B5AC3F581F62F522285DC1B1E774E37FD48780FFCEBE2154A6A699FF228F3A45E45172D2C7ED0451DAD96AF546168660D5E5D1C347FDF1786923A0CFA747EEE4E9CE5681B11FB357990BA379549858E591D4E8D323E7DD19F930BF9327668E1E6AF9E55AACFD2BA7F33BC4DA9FDF8CC4FEF3E233A23EE076A85E11BCF23BF29FE2D5A5C4FFC2329BF91F93478051468AB1934730600D94D4E3ECB4937ADC9C284A3B5BADDEC8C210AC8A3CBA6DFBCE9FBCF948B8D2C2E2C563A48D803EE5118073ACC11DD5FDC11F477E0F3D5BD8CC057900152699F2486B5CFA2885A4B0EFD1A24F9BD8771D9173DB5F9A4D1ACC69EED87DA10D1C99A963A7A61EA68AEE75D487F001C77F0B5EC049EECE7F0BF7819C14F2BFB8CC66FE0F521E4155878BFCF4B7D019D0D94CA0478011C46C5580852158A93C026DF4E8216F84CBFCD7DE8B172EBBCCC88D31A16779D429D019ACD418A229FF078CF8DF2FCDFC1FEAD3A3E132F47176DC187ADCB64A6967ABD51B59188215CB23AB8D9ED8F7993BD67F074A30726368883CEADD445EF4CB74FA3F547964C6ADA1212FD79233F4B86D951EE511D34690194A30613034441EF56E222FFA653AFD1779D429228F9233F4B86D95BEE4D1CE7B1F64DA080C4A80FE3F50441EF56B222FFA653AFD1779D4291330CE768BBFDE8EAF231C5CDC865748B28AE647C801BE76D1428A7433C1BED98A509A81C2C2102C18FF47FCDEEFFDE20D6F62DA080CEED47091258382306D5079B46BD7AE0743C021914785783FF10DE8F59D8AFC80C8A39AA03870267CA504680A7462B335049CCF89605DB2AAC07648FD902CD8145C1B2298C5A62B31951754DAD96AF5461686607EFC5FF8D18F6EDF775F5F1B81995286C9D0C35685097F2433201B5698FB88FFFDD2CC7F2A8F4009BDFFFDEF7FAF62E5CA95679C71C605175C00133AA48B3C8A92CB20228F8836D29863228F6AE2C9234F260C296E630A27A68EDCFCE1B3A9C642603FCF54DAD96AF5461686602CFE411BED7ADEF3501B3DFFF94C1B8141092A088687BC5CEBDD445EF4CB74FAEF3F3D3AEFBCF33EFEF18F5F78E185EBD6ADBBFAEAABE5E95101B19FF8D6EA48FDBC6596471F14795493803C6232614871EB48170A54A9F4F7B4C3EA88E3E682C2CC5684D20C1416866034FEAD367A609F7D767DFF1696130C4AC0181820228F7A379117FD329DFEB3B5475A217DF6B39FFDFAD7BF7EDD75D7696D246B8F62447EE25B2B22AD8ECC41B323F2A8262179E43E301950DC6AE912FADD6FAC512E6A502C511D84E721D5C4116D2F38C96C4528CD4061610866E3DF6AA39F3EEB597FFEFAD78F77D8D6A6CDB0F57A7876B70DF94DC74E62F042C2103DB70D79845F8A6DB03F318B5F75CDC9BF081BCDFD6A6C6EE46B21DD9FAD4D1FE6C1B6226D6CE18D5D9EC7BBA7C987A9421FC84167C888A55362793AF49F1CE34D6F29CE93ACFDB53CBAFFFEFB7FFCE31FEB55D8FA2DDB37BEF10DAB8D00914785307944A10F92441ED526D0D1756CD8C4F4E3666BE801391F759C7A502207A2F935AA78F7786967ABD51B591882E9F8A7DAE8E2B3CF1E4CD8F6BF6450F708F7A6C15D0EDC647A730337DA103E17516192AB8D914DE918A360E8B663D861BD9F5153F5B5298EA90E9E97497FBC367D98C7DBCAA2FC8F0909839727744F5B1EA6A80FB01D1C6162E994823C5DF9CFFB79EE4F4E712CA46C7F2D8F4009EDDEBD1B349006A4D2AE5DBBE0AFD957DAE8914702239EC823454C1E99B1361347228F6A837D9D75741635ADC66D5A5CC78150ED90BAE9FA48602829ED6CB57A230B433008CF3F7FFDEBA9361A4AD8E63288842DD1461A73AC8DB055770CEED98A15EE3D85A922708BD97C862707268EF0B90A1526466A2430F707D1C23FA9E6E631BF2BB2F408555F92CD9A5B08FB01FFE4615ED05606D6E641DC3CB17B0AB4384C511F221D239A4E29CCD391FFEE0E7AC4DA1160F785B88D9B49DB5FCB23AD844003C5006D24F2284E481E993547441B01228F6A12081016C52DC66D7220B09DF127AB1D0B789B2F90CE5B03C1E4F0B856DAD96AF546168660BBBE7FCB03FBEC03A5EC5EB2446BA32184AD09CD7E970CCECDCEAA3BC97A38EC0656A1B13E1FE909E173352A4C8CD418DD9876D12FDAFC9768F4F1CFDCEC494A2A617AFCE59AB5B69F1E15B595C26BF2003C4FE49E22AD0D53AE0FD9C8C189A5530AF374E4BFDACDDA8E37AFC64BCD632179FB6B79F4F0C30F1B1D44D09288C2863B3091470A4F1E65DAC8554C228F6AE375748C0527A5B5B86D03B73A34AE59BA89FF583A01B3F8A986D2CE56AB37B230DCB671CB13CF7F3E14B1EB79CFBBF0A31F35413B0C79A434100B5B1DB4D93F67D441B3D366D8B21E8E7D22BF9D7050EFE45D458127D17D4DE45C850A132B3E46B6C0D323F0279E21B75279841910477E259747456D85B0060F12CDC3EE29D2D630E5FA80170EAD6E8CA5538AF374E3BF06D37C0F2CEC14F49BE54CD6FE5A1E05C5D0A31E6CB8031379A4E0F248EF3BB4F7CFD08946F57D07368C0D4B1E01B4463484ED98C0AA48F29374C8ADF7FC06026CB9B06DB6229466A0D018046DF4D8F3501B6DDF775FAA8D80E1FEAB26471FCAA45287F28861A702D53DB27CBAAFC4CFD2D873111526B9DA18D9D4BAEC6CBD51E68F3DCA9FFD10ABF8F4880BAC96C3DC692B7D53F840C329C813B8A7EDF8CF7DC07D3A4E64D58AA5538AF374E3BFBEAA4D09B90960B24D573B2C1716CBCE6BE6BF964746FE94C1863B3091470A36CE06D491C8A3B66879DC1C36A59DAD566FB40168B5D1E3FFF3257FF43BBF63C2352316B630D65407861BB3250882D013208F7656830D7760228FEA21F22839228F0A68431E6DBF6293D6467B5EF4929DDBEFF1E33F16B67712EEAA80C92A0882901A33CA94717F65D8700726F2A81E228F9223F2A880E4F268C7FAEF3CB1EF33B536BAFDD6BB83F11F0BDB7B09F755C064150441680133D06480C4D9B973A7FE36A39FFEF4A78F3EFA28EC6AE9530536DC81F5268F40670C14914769117954405A7964B5D1A387BC11B41144622D79F46088071E78004616F80BDBBB5CD4136B41108434E8318702230F008760C00161A4BFFE51AFC51EAA3C821971B8C84F7F0B9D019DCD489B0835E4D1E6CD561BDDB6DDBC68AF258F60F4B1C03004680D343B3B0B7F750AC5641504416801186460E479FFFBDFAFE5D1EEDDBBED57600F581E99F17A98C8D3A3B48008305B8247B2A7479B372FECB71FD34660A3C823AD8D4E3EF9E40B2FBC50E49120081D03830C8C3CEF7DEF7BCF3BEF3CAD906AC923352E6E363BB2F66874E4E55A72441E1590461E45B411586379A4B5D1BBDFFDEED5AB575F7AE9A5228F0441E8181864B43CFAF8C73FFED9CF7EF641F2F3FB55E4D1FCFCFCDAB56BCD8EC8A3D11179941C914705249047975DA6B5D1C2B2654C1B8135964730EE9C76DA69AB56ADBAE8A28B2EBFFC7291478220740C0C3230F2AC5CB9F2C20B2FFCFAD7BFAE7F6876125EAE19B93134441ED5447F5719C5FD16B1C99447FAABCE14CEB79B91D670BFF58C9CE0B40FEC9BAD082519401B2D5E8CDAE8F0C317F6EC616108D6581EE9A7471FFBD8C72022AEB8E20A91478220740C0C3230F29C71C619EBD6ADBBEEBAEB2A3E3D827151BF53B31B1A36DC81893C52E89F2370BE7E977C35244917795413EFFB4F9D6F4C45264E1E290D646A48B755D5493AFD6ED95C13914C4069672BCA60B5D1F2E53A8185215863790403935648175F7CF177BEF31D91478220740C0C3230F25C70C105575F7D356C545C7B64DFA9C9CBB572721D94CBA0EC27D72CD921914735F1E411930693278F5C7D93D7D6AD76BEC79AC3A5B4B3453378DA08606108368A3C02B44282B81079240842C7C02003230F4CCA5A1B4DCE27D7B4DAE81B2383F84F7FD3DFB6747FE752E4514D70F267F28809820993479EDA617249437239CF8E38A59D2D9C21A48D0016866023CA23402B24F86BF60926AB2008420BC02043C79F62790403207BA76637346CB8031379A4840FFBCD358A3A94A92391477509C92357314CC1D3236F1FC82491164AB1DFD9867DB315219061EDDAA036025818828D2E8F0A30590541105AC00C3419C5F2C8BE4ABBEBAEBB601EA7291A36DC814DB93CCA88C8239D6CB51120F2A826D3278F54ED6CF5D48EDF02791B68B9943F3F72D5556967E319D6AC416114D246000B43B05AF208461F411084F1846A235F1E95C2863B3091478A82A747E6ED9A3926F2A8262179A41F98647A60E2E411A04511B2625D50200226DD6D0CC0C90F2598AD084E06AB8D56AD32292E2C0CC16AC923187A6A01A3952008422ACCC812876A2391478960F2C8DDA57B228F6A1210074C104CA23C22D806701F0BE5FBF0FF24F2A84C1B012C0CC16AC923313131B1E93191470A268FCC8A6DBDAF8F99376C228F6AE2C923F56085A64C9A3C72D41FDD719B2257455E3AD92BED6C2643056D04B03004137924262626163491470A268FB2841CF9E45A4370EE77711E950013F8F44849408D5B5BD21ACE01DA4A8E98847DB315013354D346000B4330914762626262411379A4F0E4917D828490B5D9228F9233E12FD746A3B4B39DAE8551056D04B0300413792426262616349147F51079941C91470594743690445A1BCDCE9A9442581882893C121313130B9AC8A37A883C4A8EC8A3028A3A9BD5466BD6989432581882893C121313130B5A6FF20874C64011799416914705443B5BA68D96D7E98D2C0CC10AE491989898D8945B0FF20866C4E172EAA9A79A2D416819E86C46DA50C873A35A629D85215830FE214510044100CCB0D888864F8F868B9A903689A53210012C45CC5A40FD9C78A2D546B0D7863C1204411046673AD71EF1694CACB1893C2A30AE7E962FA7DA081079240882309E883C121BC9441E1598A37EB4365ABC187F903F43E4912008C27822F248ACD8CECFBF24D170C43A926148F268DD11A6068415EBF4D1B5F6AB1D97CEAE2567D1EA3B150FD8DC494B675E3C3B97A7C0395AD904B5119067A8000B433091478220082D3111F2C8F9D95907F68591228FEA1BEA834C43A0E1774A2F3D692EDB1DEED3235211A58D569CAFD2B1BE9942A2DB9BE6665F5CA890B4C00AC9A38836024C866AB030041379240882D012839747F9EF87F8F2283B26F26804E3F2483D83C955C250E511AD057BEA0387B46C726BAA9AC2513FD4403C2D5D7144E0E9515C1B01AA375685852198C8234110849618B43C32BF1C72E081E427682DE46745441E8D6081A747747798F2089FF4E42FD1AC1ED2866A29F494C87B77961B1C8212822FD7401E45B411A07A6355581882893C1204416889A1CB23F5836AD1DF5C3BF404F7B59BC8A3FA86F2884157E70C521EB98F85F0AD199747BE0CA22FE098C121953F288F50D76CC5BF214C866AB030041379240882D01213B1F6C893473681AD4A127954DFF8D323B504271701039447EEA3A34AF2A8401BA9D76ABAB4983C8A539A81C2C2104CE4912008424B4CA23C52BBFA77FA451E8D6CDEDA23376578F2C8573FC52FD770D791538EC1517BAEC8234110844961F2E4115973445147451ED5B78993474C0C81313D4433E06B38F624C931F52C8D631B07B6B5B289519A81C2C2104CE4912008424B883C122BB6D0CB35222F06278FF0F3FCFC35197D7786F58DBD2C2B31797A24088230294CE6DA238BBC5C1BD9502EB8389FEA1AA23C0ABD29530A49618F163C190A1722F2481004615210792436920D7069767756AA7E4A3350581882893C120441688989904795117994DC441E1598C8234110848122F2486C2413795460228F044110064A4379043A63A0883C4A6B228F0A4CE4912008C24069228F60461C2EA79E7AAAD912849639F5D49546DA441079240882309E347C7A345CE4E9515A0311C052C4ACC9D32341108481226B8FC4463291470526F248100461A0883C121BC9441E1598C8234110848122F248ACD826F06B21339CAF708CA493EA477E92B6200F24686513A3340385852198C82341108496980879C4BEFC11E0BF2C628E893CAA6F38F7D31F15411931D81F1571BEED1A7F4FCD48BD483AFDB191D88FF6F33CF4DBB455672BA2340385852198C8234110849618BC3CD2DF988D507994A76A441E35362E8FA8AA001B923C8AFD865A2CDDAD69249BD33EF83B244442A9CE564469060A0B433091478220082D316879649E111D78A0FA1F9147EAC081277CCEEC5A441ED5B7C0D323BA3B2479047287FD56BFB6483AFBF1DD80524493A74782200813C8D0E591D240FC37D7D8ABB5FC80C8A3FA869A804115C080E491963BEBF21F9A354F8662E9A1A747BE3C42B3EB96D85148D1CA264669060A0B433091478220082D31116B8FB83CE2AFD6E4E5DA08C61F99A8DFB1CFDF310D4C1E516D97A99F58BA9186D9CB32AD813C798479ECB998475EAE0982200C9F499447FAE19179B7669E24E983228FEA9BFF46C94919DCD323F2B20CDF85414562E96A5B2924C58A75343D33F662CE5D9F0467696513A3340385852198C8234110849698C8A7470E542C893CAA6F93238FBC354699DC89A5E729CA50FA90776DDA441E0982204C2293288FF4AE3C3D4A635C1EB1672D4392474CF7E42FD122E98ED6C13C74D15566D83ECECB35D238AAB315519A81C2C2104CE4912008424B4CC7DAA3EC436C228FEA5BFE7629C3798232287904862A27835624928E52C940B511C820B24B9AC8790A25F248100461A84CEACB35A290326D04883C4A6E4393479D9AEA6C459466A0B030041379240882D01213218F2A23F228B9893C2A30914782200803A5893C82315D10848E61610826F2481004A1251A3E3D1204617440F4DC5F19168660228F0441105A42E49120F486C823411084F144E49120F486C823411084F144E49120F486C823411084F144E49120F446B13C820C9B376F363B228F0441103A44E49120F446B13C9A9F9F5FBB76ADD91179240882D021228F04A137E4E59A2008C27822F248107A23288F205DBF53B31B1A168660228F0441105A42E49120F446501ED9776AF2724D1004A12F441E09426FC8CB35411084F144E49120F4069547B0CBDEA9D90D0D0B433091478220082D21F248107A83CA23FB2AEDAEBBEEFAD297BE4453342C0CC1441E098220B484C82341E80D79B9260882309E883C1284DE1079240882309E349147626262E360228F0441105A42E49198D8504DE4912008424B883C12131BAA893C120441680991476262433591478220082D21F2484C6CA826F2481004A125441E89890DD5441E098220B444B93C1213131B5B1379240882D00625F248108431C784AB200882908E22792408822008823085883C120441100441701079240882200882E020F2481004411004C141E49120088220088283C8234110044110040791478220088220080E228F0441100441101C441E09822008822038883C120441100441701079240882200882E020F248100441100481F0A94FFDFF883E5B0D22D73FE50000000049454E44AE426082) Module Solutions Title: Solutions Description: Multiple diverse approaches are possible, resulting in diverse solutions. A few possible solutions are demonstrated in this module. Don't peek until you've made a solid attempt on your own. This is a very challenging transformation -- advanced level. Author: Lonnie Chrisman, Ph.D.~ Lumina Decision Systems NodeLocation: 272,384,1 NodeSize: 56,24 DiagState: 2,882,205,944,669,21,, WindState: 2,1102,660,720,350 Function To_Collect_Index( a : array[I] ; I : Index ) Title: To Collect Index Description: Given array Ğağ indexed by ĞIğ, re-indexes in to be the same data indexed by the global index Collect_index. Definition: a[@I = @Collect_index] NodeLocation: 352,176,1 NodeSize: 48,24 WindState: 2,1028,517,720,350 Variable Final_solution1 Title: Final solution Description: This solution is probably about the simplest one possible, with a certain elegance, but it is anything but obvious. Hence, I call it the most creative solution -- definitely thinking "out of the box". It is not one I would expect anyone, even an advanced modeller, to come up with, but it is kind of cool.~ ~ The solution utilizes a feature of Aggregate -- the fact that you can create your own custom aggregation function, but uses this feature in a way different from its intended purpose. Aggregate calls the aggregation with all the points that fall in the same category, so it does the hard work for us. Our aggregation function simply re-indexes these by the Collect_index for the final result. Definition: Aggregate( Data_Points, Data_category, I, Category, Handle(To_Collect_Index) ) NodeLocation: 472,176,1 NodeSize: 56,24 WindState: 2,1044,498,720,524 Alias Al1477504352 Title: Data category Definition: 1 NodeLocation: 96,48,1 NodeSize: 48,24 Original: Data_category Alias Al1477504353 Title: Data Points Definition: 1 NodeLocation: 96,120,1 NodeSize: 48,24 Original: Data_Points Variable Position_of_point Title: Position of point Description: The position along Index I of the result point.~ ~ The idea with this solution is to use Subset to find the subset of points landing in a particular category. Subset returns the position of the point (along the ĞIğ index), and allows you to specify the desired ĞresultIndexğ, so it is a really good match to this transformation.~ ~ The solution becomes more obvious if you visualize an easier problem first: Extract only the subset of points in category 'B', for example. Thinking of that simpler problem, it naturally matches to the Subset function. Once you've made that leap, array abstraction extends this over all categories automatically. Definition: Subset(Data_category = Category,I:I, ResultIndex:Collect_index) NodeLocation: 352,64,1 NodeSize: 48,24 ValueState: 2,150,562,622,425,,MIDM ReformVal: [Category,Collect_index] Variable Final_solution Title: Final solution Description: The desired result, computed using solution 1, based on Subset. Definition: Data_points[ I= Position_of_point ] NodeLocation: 472,64,1 NodeSize: 48,24 ValueState: 2,1356,26,444,422,,MIDM ReformVal: [Category,Collect_index] Text Te1477504667 Title: Solution 1: NodeLocation: 412,60,-1 NodeSize: 132,44 NodeInfo: 1,0,0,1,1,0,0,,0,,0,,, Text Te1477504783 Title: Solution 2: NodeLocation: 412,172,-1 NodeSize: 132,44 NodeInfo: 1,0,0,1,1,0,0,,0,,0,,, Alias Al1477504875 Title: I Definition: 1 NodeLocation: 96,184,1 NodeSize: 48,24 Original: I Alias Al1477504876 Title: Category Definition: 1 NodeLocation: 96,248,1 NodeSize: 48,24 Original: Category Alias Al1477504877 Title: Collect index Definition: 1 NodeLocation: 96,312,1 NodeSize: 48,24 Original: Collect_index Variable Sorted_data Title: Sorted data Description: This approach sorts the data by category first, making it easy to re-write the data copying consecutive data points into the same category until it is time to advance to the next category slice. Definition: Data_Points[I=SortIndex(Data_category,I)] NodeLocation: 352,288,1 NodeSize: 48,24 WindState: 2,187,656,720,350 Variable Points_before Title: Points before Description: The number of points in all previous categories. Add one to this to get the position of the first data point is Sorted_data that lands in the indicated Category. Definition: Cumulate(Category_counts[@Category=@Category-1,defVal:0], Category ) NodeLocation: 472,288,1 NodeSize: 56,24 ValueState: 2,395,739,416,303,,MIDM Alias Al1477504952 Title: Category counts Definition: 1 NodeLocation: 352,360,1 NodeSize: 48,24 Original: Category_counts Variable Final_solution2 Title: Final solution Description: Copy from Sorted_data into the corresponding Category column.~ ~ When writing expressions in a functional paradigm like Analytica, you should try to think in terms of where the result is getting its data from, instead of where the input data is moving to. Notice that here a single expression explains where the data is coming from, namely:~ ~ Sorted_data[ I = Collect_index + Points_before ]~ ~ This is "referentially transparent" in that when you look at a given result cell, it tells you exactly where the result came from. In contrast, if you think about it in terms of moving the input data (from Sorted_data) to its final result cell, you'll tend to think in terms of assigning the data to its final location. This creates "imperative code" which destroys referential transparency and relies on side-effects. This illustrates how a simple shift in how you think about the same thing can lead to important improvements in your modeling style.~ Definition: if Collect_index <= Category_counts Then Sorted_data[ I = Collect_index + Points_before ] Else null NodeLocation: 472,360,1 NodeSize: 48,24 ValueState: 2,711,547,416,303,,MIDM ReformVal: [Category,Collect_index] Text Te1477505347 Title: Solution 3: NodeLocation: 412,320,-1 NodeSize: 132,88 NodeInfo: 1,0,0,1,1,0,0,,0,,0,,, Variable Imperative_coding_so Title: Imperative coding solution -- yuck Description: This solution takes the prize by far for the least desirable approach. I hope your own solution didn't take this approach! However, despite its inelegance and abundance of disadvantages, you may find it very useful as a point of comparison with the other solutions included here, especially if you find yourself drawn to an imperative coding style like this. ~ ~ This approach takes an imperative programming approach. Imperative programming style computes things by way of side-effects -- namely, assignment operations. In an imperative program, the same variable might recieve an assignment from many different places in the code; hence, when looking at the value of a variable, you have no information about where that value came from -- exactly where the assignment took place. Hence, we say that imperative programming lacks "referential transparency" -- and referential transparency should be a strong guiding principle for any model builder. Most modern programming languages are imperative, which is a big reason they make poor modeling environments.~ ~ The code here considers each input data point one at a time, and figures out where to move it to, using assignment to set it in the final result. nSoFar tracks how many points have been written to each category so far.~ ~ How can you avoid writing such atrocious expressions yourself? It largely boils down to making small changes to how you conceptualize things. Think about how the final result is computed, or where the final result comes from, instead of **what** you need to **do** to your input data. The later encourages you to think algorithmically and imperatively, whereas the former encourages you to think functionally. If you were drawn to an imperative solution (e.g., if you used assignment operators), study the other solutions and then test yourself with the exercise of describing where each cell in the final desired result comes from. Definition: var nSoFar := 0;~ var result := null;~ ~ For ii := I do (~ Var c := Data_category[I=ii];~ Var pos := (nSoFar[Category=c] := nSoFar[Category=c]+1);~ result[ Category=c, Collect_index=pos] := Data_points[I=ii]~ );~ ~ result NodeLocation: 416,504,1 NodeSize: 88,24 WindState: 2,102,86,899,601 ValueState: 2,88,94,571,689,,MIDM ReformVal: [Category,Collect_index] Text Te1477507787 Title: Solution 4: NodeLocation: 416,500,-1 NodeSize: 136,68 NodeInfo: 1,0,0,1,1,0,0,,0,,0,,, Close Solutions Close Rearrange_data_point