{"text_format":"1","workbook":"xlsx","n_sheets":13,"sheets":["Readme","Codes","Curve_Template","Constants_Template","Lookups_Template","Attributes_Template","Stratum_Template","Notes","Input Variables","Netdown","Curve Library","General Attributes","Responses"],"not_rendered":{"charts":0,"images":7,"macros":1,"external_links":0,"defined_names":69,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"Readme","index":0,"n_rows":27,"n_cols":2,"rows_kept":27,"cut":false,"hidden":false,"merged":[]}
[]
[null,"Simple Forest Model Generator\nCopyright (C) 2006-2025 Spatial Planning Systems\nAll rights reserved"]
[null,{"$f":"Codes!version","v":"2025-07-28"}]
[]
[null,"This spreadsheet tool can help prepare descriptions of stand dynamics using the ForestModel XML language.  Fill in the forms on the following sheets, and then click on the 'Generate XML' button below in order to generate an XML specification.  Besides the buttons below, you may also access these commands from the 'Forest Model' menu."]
[]
[null,"Input Variables.  The 'Input Variables' sheet gathers information about the names of the variables that will be read from the inventory file.  You must provide the names of the fields that contain the block label, area and age values, as well as the stratification variables that differentiate the polygons.\n\nOther values include the length of the planning horizon, and a reselect expression to filter out unneeded polygons."]
[]
[null,"Constant tables.  Constant tables provide a simple and convenient way to define tables of constants that can be used elsewhere in the model where varaibles are allowed.  Multiple sheets of constants can be used, one for each category of data.  "]
[]
[]
[null,"Lookup tables.  Lookup tables can be used to support tablemap and tablelist functions within other cells of the model.  These functions translate one value to another, and can assist in making compact models that are easy to modify and verify."]
[]
[]
[null,"Curve Library.  The 'Curve Library' sheet allows the specification of simple curves that describe the development of stand characteristics, such as volume, habitat, or structural characteristics.  Curves must be first defined in curve libraries, and then later they can be referenced in the stratum description sheets.  You may organize the curves in single or multiple sheets."]
[]
[]
[null,"General Attributes.  The 'General Attributes' sheet allows the addition of attribute curves that apply to arbitrary groupings of stand types.  For example, attributes that are calculated across all stand types can be defined in one place, rather than being duplicted on each strata sheet.  You may organize the attributes in single or multiple sheets."]
[]
[]
[null,"Netdown.  The 'Netdown' sheet allows the specification of aspatial netdowns that are applied proportionally to each matching polygon.   Aspatial netdowns consist of a 'selection criteria'  (which determines the set of polygons that are to be netted down), a set of variable assignments that modify the conditions of the neted down portion, a netdown proportion, and an optional set of feature attributes.\n\nNetdowns are optional, and can be useful when the input dataset has not been processed using GIS operations to identify explicit spatial net downs."]
[]
[null,"Stratum description.  Stratum descriptions provide a means to describe feature attributes, succession rules, treatment options and responses for each analysis unit.  The curves that you have defined in the 'Curve Libary' may be referenced in the stratum descriptions.\n\nPolygons start in a stratum as defined by the stratification criteria.  Succession and treatment response rules can allow polygons to change their stratum values.\n\nStratum descriptions are contained in worksheets.  You add stratum description worksheets by clicking on the button below.  You may add as many stratum descriptions as are required to represent your problem. Each stratum description sheet must have a unique name.  "]
[]
[]
[]
[null,"Click here to generate a ForestModel XML file from the completed set of worksheets that you have prepared."]

{"sheet":"Codes","index":1,"n_rows":192,"n_cols":18,"rows_kept":192,"cut":false,"hidden":true,"merged":[]}
["curveType","Treatments","Stratum_Template","boolean","curves","offsetType","columns","allChoices","attributeType","Curve_Template","Attributes_Template","Constants_Template","Lookups_Template","scaleMethod","manualMethod","output_codes","version","outputTypes"]
["feature",null,"Stratum_Template",true,null,"absolute",null,null,"Curve","Curve_Template","Attributes_Template","Constants_Template","Lookups_Template","A",null,true,"2025-07-28","accounts"]
["product",null,"Responses",false,"one","relative","polyid","polyid","Expression","Curve Library","General Attributes",null,null,"N"," 'Managed'",false,null,"blocks"]
["both",null,null,null,null,null,"managed","managed",null,null,null,null,null,"P"," 'Unmanaged'","NonZero",null,"curves"]
[null,null,null,null,null,null,"yield","yield",null,null,null,null,null,null,null,null,null,"features"]
[null,null,null,null,null,null,"lgfu","lgfu",null,null,null,null,null,null,null,null,null,"groups"]
[null,null,null,null,null,null,"fu","fu",null,null,null,null,null,null,null,null,null,"messages"]
[null,null,null,null,null,null,"au_ns","au_ns",null,null,null,null,null,null,null,null,null,"packages"]
[null,null,null,null,null,null,"au_si","au_si",null,null,null,null,null,null,null,null,null,"products"]
[null,null,null,null,null,null,"au_yc","au_yc",null,null,null,null,null,null,null,null,null,"sequences"]
[null,null,null,null,null,null,"curvetype","curvetype",null,null,null,null,null,null,null,null,null,"stratas"]
[null,null,null,null,null,null,"tcr","tcr",null,null,null,null,null,null,null,null,null,"tracknames"]
[null,null,null,null,null,null,"agsfrc","agsfrc",null,null,null,null,null,null,null,null,null,"treatments"]
[null,null,null,null,null,null,"package","package"]
[null,null,null,null,null,null,"silvsys","silvsys"]
[null,null,null,null,null,null,"inPackage","inPackage"]
[null,null,null,null,null,null,"action","action"]
[null,null,null,null,null,null,"regime","regime"]
[null,null,null,null,null,null,"next_au_yc","next_au_yc"]
[null,null,null,null,null,null,"next_yield","next_yield"]
[null,null,null,null,null,null,"Resp_'+getEnv('repeat.r')","Resp_'+getEnv('repeat.r')"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,"Songbird.Sb.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BBWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BRCR_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BTGW_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.CAWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Pine.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.BBWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.BRCR_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.BTGW_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.CAWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.BBWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.BRCR_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.BTGW_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.CAWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BBWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BRCR_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BTGW_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.CAWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Pine.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Pine.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.BBWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.BRCR_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.BTGW_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.CAWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Mx.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Mx.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.BBWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.BRCR_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.BTGW_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.CAWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Sb.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BBWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BRCR_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BTGW_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.CAWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Sb.OVEN_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BBWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BRCR_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BTGW_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.CAWA_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.OVEN_RAHA.Standard"]
[null,null,null,null,"Songbird.Lt.BBWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BRCR_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.BTGW_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.CAWA_RAHA.HLIN"]
[null,null,null,null,"Songbird.Lt.OVEN_RAHA.HLIN"]

{"sheet":"Curve_Template","index":2,"n_rows":68,"n_cols":2,"rows_kept":68,"cut":false,"hidden":true,"merged":[[1,1,1,6],[3,1,3,7],[5,1,5,8]]}
[]
[null,"Yield curve library"]
[]
[null,"In the following columns enter a label and values to represent yield curves.  The name that you enter will be refered to as the 'Curve ID' on the strata worksheets.   Leave the label field blank to ignore a colunm.  "]
[]
[null,"Yield Curves"]
["Age"]
[0]
[5]
[10]
[15]
[20]
[25]
[30]
[35]
[40]
[45]
[50]
[55]
[60]
[65]
[70]
[75]
[80]
[85]
[90]
[95]
[100]
[105]
[110]
[115]
[120]
[125]
[130]
[135]
[140]
[145]
[150]
[155]
[160]
[165]
[170]
[175]
[180]
[185]
[190]
[195]
[200]
[205]
[210]
[215]
[220]
[225]
[230]
[235]
[240]
[245]
[250]
[255]
[260]
[265]
[270]
[275]
[280]
[285]
[290]
[295]
[300]

{"sheet":"Constants_Template","index":3,"n_rows":7,"n_cols":2,"rows_kept":7,"cut":false,"hidden":true,"merged":[[0,1,0,7],[2,1,2,7],[5,1,5,18]]}
[null,"Matrix Builder Constants"]
[]
[null,"Define constants in the table below.  Constants may be used in Matrix Builder expressions, such as selection expressions and curve expression.\n\nThe constants will be defined with Label1 and Label2 joined using an underscore character.  "]
[]
[]
[null,"Label2"]
["Label1"]

{"sheet":"Lookups_Template","index":4,"n_rows":6,"n_cols":2,"rows_kept":6,"cut":false,"hidden":true,"merged":[[4,1,4,17],[0,1,0,8],[2,1,2,10]]}
[null,"Matrix Builder Lookups"]
[]
[null,{"$f":"CONCATENATE(\"Define Lookup table values in the cells below.  The values in these tables can be referenced in other sheets using the 'tablemap' Query Language function.\",CHAR(10),CHAR(10),\"To use the lookup table in a worksheet, include a function like:\",CHAR(10),\"tablemap('\",MID(CELL(\"filename\",A1),FIND(\"]\",CELL(\"filename\",A1))+1,255),\"', 'KeyColumn',KeyValue,'ResultColumn')\",CHAR(10),\"where\",CHAR(10),\"'\",MID(CELL(\"filename\",A1),FIND(\"]\",CELL(\"filename\",A1))+1,255),\"' - the name of the lookup table to use\",CHAR(10),\"'KeyColumn' - the column that holds the key\",CHAR(10),\"KeyValue - a Patchworks query language expression that provides a value in the key column\",CHAR(10),\"'ResultColumn' - the name of another column to lookup the result in for the row that matches the key\")","v":"Define Lookup table values in the cells below.  The values in these tables can be referenced in other sheets using the 'tablemap' Query Language function.\n\nTo use the lookup table in a worksheet, include a function like:\ntablemap('Lookups_Template', 'KeyColumn',KeyValue,'ResultColumn')\nwhere\n'Lookups_Template' - the name of the lookup table to use\n'KeyColumn' - the column that holds the key\nKeyValue - a Patchworks query language expression that provides a value in the key column\n'ResultColumn' - the name of another column to lookup the result in for the row that matches the key"}]
[]
[null,"Label2"]
["Label1"]

{"sheet":"Attributes_Template","index":5,"n_rows":100,"n_cols":18,"rows_kept":100,"cut":false,"hidden":true,"merged":[[1,2,1,14],[3,2,3,14]]}
[]
[null,null,"General Attributes"]
[]
[null,null,"This sheet lets you specify attributes that can be applied to mutiple strata and management status classes.  Enter the stratification column and category codes that qualify the set of polygons that the attribute will be applied towards.  If you leave the stratification fields blank then the attribute will apply to all polygons.\n\nGeneral attributes will be defined in the XML file after the more specific strata descriptions. Attributes wth the same name in the strata description sheet will take precedence over these attributes.  Use the strata worksheets for attributes that will applied to specific strata"]
[]
[]
[null,"Repeat","Applies to","Curve or Expression","Attribute Name","Factor","Future","Cycle","Ignore","Output","Scale","Prior",null,null,null,null,null,"Repeat"]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]
[null,null,"feature",null,null,1,null,true,false,true,"A",false]

{"sheet":"Stratum_Template","index":6,"n_rows":144,"n_cols":29,"rows_kept":144,"cut":false,"hidden":true,"merged":[[42,4,42,5],[43,4,43,5],[44,4,44,5],[62,13,62,14],[63,13,63,14],[65,13,65,14],[66,12,75,12],[64,13,64,14],[45,4,45,5],[46,4,46,5],[47,4,47,5],[52,13,52,14],[53,12,60,12],[53,13,53,14],[54,13,54,14],[60,13,60,14],[51,13,51,14],[61,13,61,14],[55,13,55,14],[59,13,59,14],[56,13,56,14],[57,13,57,14],[58,13,58,14],[14,2,14,3],[28,2,28,3],[30,4,30,5],[31,4,31,5],[32,4,32,5],[39,4,39,5],[40,4,40,5],[41,4,41,5],[36,4,36,5],[37,4,37,5],[38,4,38,5],[33,4,33,5],[34,4,34,5],[35,4,35,5],[76,13,76,14],[77,13,77,14],[78,13,78,14],[79,13,79,14],[80,13,80,14],[84,12,89,12],[81,13,81,14],[82,13,82,14],[83,13,83,14],[95,2,95,3],[95,4,95,5],[96,2,96,3],[96,4,96,5],[97,2,97,3],[97,4,97,5],[91,13,91,14],[92,2,92,3],[92,4,92,5],[93,2,93,3],[93,4,93,5],[94,2,94,3],[94,4,94,5],[101,2,101,3],[101,4,101,5],[102,2,102,3],[102,4,102,5],[103,2,103,3],[103,4,103,5],[98,2,98,3],[98,4,98,5],[99,2,99,3],[99,4,99,5],[100,2,100,3],[100,4,100,5],[107,2,107,3],[107,4,107,5],[108,2,108,3],[108,4,108,5],[109,2,109,3],[109,4,109,5],[104,2,104,3],[104,4,104,5],[105,2,105,3],[105,4,105,5],[106,2,106,3],[106,4,106,5],[113,2,113,3],[113,4,113,5],[114,2,114,3],[114,4,114,5],[115,2,115,3],[115,4,115,5],[110,2,110,3],[110,4,110,5],[111,2,111,3],[111,4,111,5],[112,2,112,3],[112,4,112,5],[119,2,119,3],[119,4,119,5],[120,2,120,3],[120,4,120,5],[121,2,121,3],[121,4,121,5],[116,2,116,3],[116,4,116,5],[117,2,117,3],[117,4,117,5],[118,2,118,3],[118,4,118,5],[125,2,125,3],[125,4,125,5],[126,2,126,3],[126,4,126,5],[127,2,127,3],[127,4,127,5],[122,2,122,3],[122,4,122,5],[123,2,123,3],[123,4,123,5],[124,2,124,3],[124,4,124,5],[132,4,132,5],[133,2,133,3],[133,4,133,5],[128,2,128,3],[128,4,128,5],[129,2,129,3],[129,4,129,5],[130,2,130,3],[130,4,130,5],[13,5,13,10],[143,2,143,3],[143,4,143,5],[140,2,140,3],[140,4,140,5],[141,2,141,3],[141,4,141,5],[142,2,142,3],[137,2,137,3],[137,4,137,5],[138,2,138,3],[138,4,138,5],[139,2,139,3],[139,4,139,5],[142,4,142,5],[134,2,134,3],[134,4,134,5],[135,2,135,3],[135,4,135,5],[136,2,136,3],[136,4,136,5],[131,2,131,3],[131,4,131,5],[132,2,132,3]]}
[null,null,{"$f":"CONCATENATE(\"Stratum description for '\", F3,\"'\")","v":"Stratum description for 'Stratum_Template'"}]
[]
[null,null,null,null,null,{"$f":"MID(CELL(\"filename\",B1),FIND(\"]\",CELL(\"filename\",B1))+1,256)","v":"Stratum_Template"}]
[]
[null,null,"Column","Value"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,"Succession rules",null,null,"Renewal values"]
[null,null,"Selection Criteria"]
[null,"Repeat",null,null,"Breakup at",null,null,null,null,null,null,"Renewal age"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,"Feature curves"]
[null,null,"Selection Criteria"]
[null,"Repeat",null,null,"Curve or Expression",null,"Feature Name","Factor","Cycle","Ignore","Output","Scale"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[]
[]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Treatment definitions"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Select repeat clause"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Treatment name"]
[null,null,null,null,null,null,null,null,null,null,null,null,"Select"]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Treatment repeat clause"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Minimum operable age"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Maximum operable age"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Operability expression"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Treatment eligibility expression"]
[null,null,null,null,null,null,null,null,null,null,null,null,"Renew"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Age after treatment",null,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Absolute or relative",null,"absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Regen curve"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Retention",null,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Scheduling method"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Package name"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Package scheduling method"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Package sequence"]
[null,null,null,null,null,null,null,null,null,null,null,null,"Produce"]
[]
[]
[]
[]
[]
[]
[null,null,"Product curves",null,null,null,null,null,null,null,null,null,null,"Selection Criteria"]
[null,"Repeat","Curve or expression",null,"Product Name",null,"Factor","Future","Ignore","Output","Scale"]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A"]
[null,null,"one",null,null,null,1,0,false,true,"A"]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A"]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one",null,null,null,1,0,false,true,"A"]
[null,null,"one",null,null,null,1,0,false,true,"A",null,null,null,null,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
[null,null,"one",null,null,null,1,0,false,true,"A"]
[null,null,"one",null,null,null,1,0,false,true,"A"]
[null,null,"one",null,null,null,1,0,false,true,"A"]

{"sheet":"Notes","index":7,"n_rows":10,"n_cols":2,"rows_kept":10,"cut":false,"hidden":false,"merged":[]}
["Date","Note"]
["2024-08-27","Build new template for NW based on DRM pilot data"]
[45695,"Update template after feedback from NW team"]
[45712,"Update the product defintions to use proportions"]
[45722,"Add harvest patch worksheet"]
[45723,"Add shelterwood worksheet"]
["2025-03-31","Add mill requirements and composition"]
["2025-08-02","Start building Southern region model with this template.  Many changes for shelterwood, selection, generic species, etc"]
["2025-09-05","Modify for proportional succession and harvest response for NE region"]
["2025-09-23","Make generic so that can do deterministic or proportional based on columns present in BMI"]

{"sheet":"Input Variables","index":8,"n_rows":127,"n_cols":13,"rows_kept":127,"cut":false,"hidden":false,"merged":[[90,3,90,4],[85,3,85,4],[86,3,86,4],[87,3,87,4],[88,3,88,4],[89,3,89,4],[84,3,84,4],[83,3,83,4],[80,3,80,4],[1,1,1,4],[5,3,5,4],[7,3,7,4],[9,3,9,4],[3,3,3,4],[13,3,13,4],[15,3,15,4],[17,3,17,4],[19,3,19,4],[81,3,81,4]]}
[]
[null,"Input variables"]
[]
[null,null,null,"The variables on this worksheet are used to describe the fields in the inventory file that are needed to build the input matrix.  These fields describe unique record labels, polygon area, and stratification codes.  The values that you enter must match the database colum names or Patchworks query language expressions."]
[]
[null,"Problem description",null,"Generic template based on standard data input package"]
[]
[null,"Starting year of analysis",null,2025]
[]
[null,"Forecasting horizon",null,150]
[]
[null,"Maximum inventory age",null,300]
[]
[null,"Exclude expression",null,"eval(tableMap('InputColumns','ColumnName','ExcludeRecords','Value'))"]
[]
[null,"Unique record label",null,"eval(tableMap('InputColumns','ColumnName','UniqueId','Value'))"]
[]
[null,"Polygon area",null,"eval(tableMap('InputColumns','ColumnName','AreaExpression','Value'))"]
[]
[null,"Stand age",null,"eval(tableMap('InputColumns','ColumnName','AgeExpression','Value'))"]
[]
[null,"Initial matrix builder constants","Repeat","Label","Value"]
[null,null,null,"loaderFile","getEnv('property.dataInputPackage')"]
[null,null,null,"respList","sort(unique(filter(tableList('fragments'),'Resp_(?!AU_NS)(.*)','{1}')))"]
[]
[]
[]
[null,"Lookuptable references","Repeat","Filename","Attributes"]
[null,null,"name=\"sheet\" list=\"split('YieldTables,InputColumns,GenericSpecies,NaturalSuccession,CC_Treatments,CC_Operability,UnharvestedVolume,SH_Treatments,SE_Treatments,SE_ProductProportions,Products,LGC definitions,LGC targets,LLP Definitions,Biological Limits,Operational Limits,TreesPlanted,RoadsLandingsWSY,HarvestPatches,MillRequirements')\"","  'Excel \"'+loaderFile+'\" \"'+getEnv('repeat.sheet')+'\" startRow=3'","id=\"getEnv('repeat.sheet')\" "]
[]
[]
[]
[]
[]
[]
[]
[null,"Curvetable references","Repeat","Filename","Attributes"]
[null,null,"name=\"y\" table=\"YieldTables\"","getEnv('repeat.y.FILE')","ageexpression=\"eval(getEnv('repeat.y.AGE'))\" patternexpression=\"eval(getEnv('repeat.y.Label'))\" ignorecolumns=\"getEnv('repeat.y.IgnoreColumns')\" missing=\"NA\" replacemissing=\"0\""]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,"Middle matrix builder constants","Repeat","Label","Value"]
[]
[]
[]
[]
[]
[null,"Additional stratification columns","Repeat","Label","Definition"]
[]
[null,null,null,"polyid","eval(tableMap('InputColumns','ColumnName','polyid','Value'))"]
[null,null,null,"managed","eval(tableMap('InputColumns','ColumnName','managed','Value'))"]
[null,null,null,"yield","eval(tableMap('InputColumns','ColumnName','yield','Value'))"]
[null,null,null,"lgfu","eval(tableMap('InputColumns','ColumnName','lgfu','Value'))"]
[null,null,null,"fu","eval(tableMap('InputColumns','ColumnName','fu','Value'))"]
[null,null,null,"au_ns","eval(tableMap('InputColumns','ColumnName','au_ns','Value'))"]
[null,null,null,"au_si","eval(tableMap('InputColumns','ColumnName','au_si','Value'))"]
[null,null,null,"au_yc","eval(tableMap('InputColumns','ColumnName','au_yc','Value'))"]
[null,null,null,"curvetype","eval(tableMap('InputColumns','ColumnName','curvetype','Value'))"]
[null,null,null,"tcr","eval(tableMap('InputColumns','ColumnName','tcr','Value'))"]
[null,null,null,"agsfrc","eval(tableMap('InputColumns','ColumnName','agsfrc','Value'))"]
[null,null,null,"package","eval(tableMap('InputColumns','ColumnName','package','Value'))"]
[null,null,null,"silvsys","eval(tableMap('InputColumns','ColumnName','silvsys','Value'))"]
[]
[null,null,null,"inPackage","  false"]
[null,null,null,"action"]
[null,null,null,"regime"]
[]
[null,null,null,"next_au_yc"]
[null,null,null,"next_yield"]
[]
[null,null,"name=\"r\" list=\"respList\""," 'Resp_'+getEnv('repeat.r')","asString(column('Resp_'+getEnv('repeat.r')))"]
[]
[]
[]
[null,null,"Repeat","Selection"]
[null,"Ineligible for treatments",null,"not(managed)"]
[]
[null,null,null,"File or Fragement"]
[null,"Include at beginning",null,"<exec interpreter=\"beanshell\">\n  <script><![CDATA[\n  {\n    /*\n     * Query for the data input package\n     */\n    \n    // Check if input package name already specified (batch mode)\n    dataInputPackage = System.getProperty(\"dataInputPackage\");\n    if (dataInputPackage != null) {\n        if(new File(dataInputPackage).exists())\n            return;\n        else\n            throw new IllegalStateException(\"File \"+dataInputPackage+\" not found\");\n    }\n\n    // Initialize the file chooser\n    SFileFetch sff = new SFileFetch(\"Data Input Package\");\n    sff.addFilter(new String[]{\"xlsx\",\"xlsm\",\"xlsb\"}, \"Excel workbook\");\n    sff.setMatchingFilter(new File(\"temp.xlsx\"));\n    \n    // Get the saved value if available\n    Properties props = IProperties.loadProps();\n    dataInputPackage = props.getProperty(\"builder.dataInputPackage\", \"\");\n\n    // Determine the initial folder - either the saved input file or the location of the XML file\n    defDir = null;\n    if (dataInputPackage == null || dataInputPackage.trim().isEmpty()) {\n        xml = System.getProperty(\"ForestModel_XML\");\n        if (xml != null)\n            sff.setCurrentDirectory(new File(xml).getParentFile());\n    } else {\n        dip = new File(dataInputPackage);\n        sff.setCurrentDirectory(dip.getParentFile());\n        sff.setSelectedFile(dip);\n    }\n    \n    // Get the file selection\n    file = sff.filenameOpen(WindowMgr.topFrame);   \n    if (file == null)\n        throw new IllegalStateException(\"No data input package selected\");\n\n    // Update the default working directory\n    AttributeStore.setCwd(file.getParentFile());\n    // Update the property\n    location = file.getPath().replace(\"\\\\\",\"/\");\n    System.setProperty(\"dataInputPackage\", location);\n    props.setProperty(\"builder.dataInputPackage\", location);\n    IProperties.saveProps(props);\n    \n    System.err.println(\"data input package = \"+System.getProperty(\"dataInputPackage\"));\n    System.err.println(\"default working directory = \"+file.getParent());\n  }\n  ]]></script>\n </exec>"]
[null,"Include before curves"]
[null,"Include after curves"]
[null,"Include after retention"]
[null,"Include after unmanaged"]
[null,"Include after stratum"]
[null,"Include after attributes"]
[]
[null,"Final matrix builder constants","Repeat","Label","Value"]
[]
[null,null,null,null,null,null,null,null,null,null,null,"ycList","sort(unique(filter(curveNames(),'Strata.*\\.(\\w*)','{1}')))"]
[null,null,null,"standSppList","listremove(sort(unique(filter(curveNames(),'Stand:.*\\:(\\w*)','{1}'))),{'DBHQ','STEMS','HT','BA','GTV','GMV','NMV'})"]
[null,null,null,"strataSppList","listremove(sort(unique(filter(curveNames(),'Strata:.*\\:(\\w*)','{1}'))),{'DBHQ','STEMS','HT','BA','GTV','GMV','NMV'})"]
[]
[null,null,null,"sppList","sort(unique(append(standSppList, strataSppList)))"]
[null,null,null,"evenagedList","sort(unique(tablelist('CC_Treatments','TREATMENT')))"]
[null,null,null,"shelterwoodRegimeList","sort(unique(tableList('SH_Treatments','REGIME')))"]
[null,null,null,"shelterwoodLabelList","sort(unique(tableList('SH_Treatments','TREATMENT')))"]
[null,null,null,"selectionNameList","sort(unique(tableList('SE_Treatments','TREATMENT')))"]
[]
[]
[null,null,null,"prdNames","sort(unique(tablelist('Products','ProductName')))"]
[null,null,null,"sppGroups","sort(unique(tablelist('Products','SpeciesGroup')))"]
[null,null,null,"genericSpp","sort(unique(tablelist('GenericSpecies','GenericSpecies')))"]
[null,null,null,"prdCombos","sort(unique(tablelist('Products',q($SpeciesGroup+'.'+ProductName$))))"]
[]
[null,null,"name=\"g\" list=\"genericSpp\""," 'generic_stand_'+getEnv('repeat.g')","asList(tablelist('GenericSpecies','Species',q($getEnv('repeat.g')=GenericSpecies and Species in '$)+join(standSppList,',')+q($'$)),{''})"]
[null,null,"name=\"g\" list=\"genericSpp\""," 'generic_strata_'+getEnv('repeat.g')","asList(tablelist('GenericSpecies','Species',q($getEnv('repeat.g')=GenericSpecies and Species in '$)+join(strataSppList,',')+q($'$)),{''})"]
[]
[]
[]
[]
[]
[]
[]
[null,"Override default output names",null,"Type","Filename"]
[null,null,null,"accounts","accounts.csv"]
[]
[]
[]
[]
[]
[null,"Execute command","Repeat","File","Option"]

{"sheet":"Netdown","index":9,"n_rows":100,"n_cols":11,"rows_kept":100,"cut":false,"hidden":false,"merged":[[3,1,3,9],[1,1,1,9],[6,1,6,4],[6,5,6,8]]}
[]
[null,"Aspatial netdown"]
[]
[null,"Aspatial netdowns are applied proportionally to each polygon that matches the criteria.  These are different from spatial netdowns, where GIS operations define polygons that are entirely inoperable due to landbase constraints.  Records that match the selection criteria will be split into two parts, according to the netdown proportion.  The netdown portion can have strata codes reassigned (usually to an unmanaged category), and optionally one or more feature curves can be added.  The original portion is left unchanged (except for a reduced area)."]
[]
[null,null,null,null,null,null,null,null,null,null,"Feature name"]
[null,"Selection criteria",null,null,null,"New assignment"]
[null,null,null,null,null,null,null,null,null,"Netdown"]
[]
[]
[]
[]
[]
[]
[]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]
[null,null,null,null,null,null,null,null,null,7.0000000000000007E-2]

{"sheet":"Curve Library","index":10,"n_rows":12,"n_cols":2,"rows_kept":12,"cut":false,"hidden":false,"merged":[[1,1,1,6],[3,1,3,7],[5,1,5,8]]}
[]
[null,"Yield curve library"]
[]
[null,"In the following columns enter a label and values to represent yield curves.  The name that you enter will be refered to as the 'Curve ID' on the strata worksheets.   Leave the label field blank to ignore a colunm.  "]
[]
[null,"Yield Curves"]
["Age"]
[-1000]
[0]
[25]
[26]
[1000]

{"sheet":"General Attributes","index":11,"n_rows":73,"n_cols":18,"rows_kept":73,"cut":false,"hidden":false,"merged":[[1,2,1,14],[3,2,3,14]]}
[]
[null,null,"General Attributes"]
[]
[null,null,"This sheet lets you specify attributes that can be applied to mutiple strata and management status classes.  Enter the stratification column and category codes that qualify the set of polygons that the attribute will be applied towards.  If you leave the stratification fields blank then the attribute will apply to all polygons.\n\nGeneral attributes will be defined in the XML file after the more specific strata descriptions. Attributes wth the same name in the strata description sheet will take precedence over these attributes.  Use the strata worksheets for attributes that will applied to specific strata"]
[]
[]
[null,"Repeat","Applies to","Curve or Expression","Attribute Name","Factor","Future","Cycle","Ignore","Output","Scale","Prior","silvsys",null,null,null,null,"Repeat"]
[null,null,"feature",null,null,1,0,false,false,true,"A",false]
[null,null,"product","one","product.harvested","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,true,"A",false]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,null,"both","one"," '%f.AreaFu.%m.'+fu","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false]
[null,null,"feature","one"," '%f.AreaFu.%m.RdLndgs'","asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,"name=\"genspp\" list=\"genericSpp\"","feature","asCurve(eval(join(filter(eval('generic_stand_'+getEnv('repeat.genspp')),'.*',q($curvematch(':','Stand',polyid,'{0}')$)),'+')))"," '%f.Yield.%m.'+getEnv('repeat.genspp')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false,null,"curvetype='Stand'"]
[null,"name=\"genspp\" list=\"genericSpp\"","feature","asCurve(eval(join(filter(eval('generic_strata_'+getEnv('repeat.genspp')),'.*',q($curvematch(':','Strata',au_yc,tcr,agsfrc,yield,'{0}')$)),'+')))"," '%f.Yield.%m.'+getEnv('repeat.genspp')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false,null,"curvetype='Strata'"]
[null,null,null,null,null,1]
[null,"name=\"genspp\" list=\"genericSpp\"","product","asCurve(eval(join(filter(eval('generic_stand_'+getEnv('repeat.genspp')),'.*',q($(curvematch(':','Stand',polyid,'{0}')*(1-tablemap('UnharvestedVolume',{'FU','YIELD','TREATMENT'},{fu,yield,treatment},'{0}',0)))$)),'+')))"," 'tempStandHarvest.'+getEnv('repeat.genspp')",1,0,true,false,false,"A",false," 'CC,SH,SE'","curvetype='Stand'"]
[null,"name=\"genspp\" list=\"genericSpp\"","product","attribute('tempStandHarvest.'+getEnv('repeat.genspp'))"," '%f.Yield.%m.'+getEnv('repeat.genspp')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false," 'CC'","curvetype='Stand'"]
[null,"name=\"genspp\" list=\"genericSpp\"","product","asCurve(eval(join(filter(eval('generic_strata_'+getEnv('repeat.genspp')),'.*',q($(curvematch(':','Strata',au_yc,tcr,agsfrc,yield,'{0}')*(1-tablemap('UnharvestedVolume',{'FU','YIELD','TREATMENT'},{fu,yield,treatment},'{0}',0)))$)),'+')))"," '%f.Yield.%m.'+getEnv('repeat.genspp')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false," 'CC'","curvetype='Strata'"]
[]
[null,"name=\"genspp\" list=\"genericSpp\"","product","setVar('age',if(setVar('ta',tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,regime,treatment},'TARGET_AGE',''))='',offset(),Number(getVar('ta'))));\nsetVar('c',\nlookupCurve(attribute('tempStandHarvest.'+getEnv('repeat.genspp')),offset())-\nasNumber(eval(join(filter(eval('generic_strata_'+getEnv('repeat.genspp')),'.*',q($(lookupCurve(curvematch(':','Strata',next_au_yc,tcr,agsfrc,next_yield,'{0}'),getVar('age'))*(1-tablemap('UnharvestedVolume',{'FU','YIELD','TREATMENT'},{fu,yield,treatment},'{0}',0)))$)),'+'))));\nif(getVar('c')<0,0,getVar('c'))\n"," '%f.Yield.%m.'+getEnv('repeat.genspp')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,false,false,"NonZero","A",false," 'SH'","curvetype='Stand'"]
[null,"name=\"genspp\" list=\"genericSpp\"","product","setVar('age',if(setVar('ta',tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,regime,treatment},'TARGET_AGE',''))='',offset(),Number(getVar('ta'))));\nsetVar('c',\nlookupCurve(asCurve(eval(join(filter(eval('generic_strata_'+getEnv('repeat.genspp')),'.*',q($curvematch(':','Strata',au_yc,tcr,agsfrc,yield,'{0}')$)),'+'))),offset())-\nasNumber(eval(join(filter(eval('generic_strata_'+getEnv('repeat.genspp')),'.*',q($(lookupCurve(curvematch(':','Strata',next_au_yc,tcr,agsfrc,next_yield,'{0}'),getVar('age'))*(1-tablemap('UnharvestedVolume',{'FU','YIELD','TREATMENT'},{fu,yield,treatment},'{0}',0)))$)),'+'))));\nif(getVar('c')<0,0,getVar('c'))"," '%f.Yield.%m.'+getEnv('repeat.genspp')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,false,false,"NonZero","A",false," 'SH'","curvetype='Strata'"]
[]
[null,"name=\"genspp\" list=\"genericSpp\"","product","setVar('age',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR'},{fu,au_si,tcr},'TARGET_AGE'));\nsetVar('c',\nlookupCurve(attribute('tempStandHarvest.'+getEnv('repeat.genspp')),offset())-\nasNumber(eval(join(filter(eval('generic_strata_'+getEnv('repeat.genspp')),'.*',q($(lookupCurve(curvematch(':','Strata',next_au_yc,tcr,agsfrc,next_yield,'{0}'),getVar('age'))*(1-tablemap('UnharvestedVolume',{'FU','YIELD','TREATMENT'},{fu,yield,treatment},'{0}',0)))$)),'+'))));\nif(getVar('c')<0,0,getVar('c'))"," '%f.Yield.%m.'+getEnv('repeat.genspp')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,false,false,"NonZero","A",false," 'SE'","curvetype='Stand'"]
[null,"name=\"genspp\" list=\"genericSpp\"","product","setVar('age',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR'},{fu,au_si,tcr},'TARGET_AGE'));\nsetVar('c',\nlookupCurve(asCurve(eval(join(filter(eval('generic_strata_'+getEnv('repeat.genspp')),'.*',q($curvematch(':','Strata',au_yc,tcr,agsfrc,yield,'{0}')$)),'+'))),offset())-\nasNumber(eval(join(filter(eval('generic_strata_'+getEnv('repeat.genspp')),'.*',q($(lookupCurve(curvematch(':','Strata',next_au_yc,tcr,agsfrc,next_yield,'{0}'),getVar('age'))*(1-tablemap('UnharvestedVolume',{'FU','YIELD','TREATMENT'},{fu,yield,treatment},'{0}',0)))$)),'+'))));\nif(getVar('c')<0,0,getVar('c'))"," '%f.Yield.%m.'+getEnv('repeat.genspp')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,false,false,"NonZero","A",false," 'SE'","curvetype='Strata'"]
[]
[null,null,"both","asCurve(eval(join(filter(genericSpp,'.*',q($attribute('%f.Yield.%m.{0}')$)),'+')))","%f.total.Yield.%m",1,0,true,true,"NonZero","A",false]
[]
[null,"name=\"spg\" list=\"sppGroups\"","both","asCurve(eval(join(filter(sort(unique(tableList('Products','GenericSpecies',q($SpeciesGroup=getEnv('repeat.spg')$)))),'.*',q($attribute('%f.Yield.%m.{0}')$)),'+')))"," '%f.YieldSpg.%m.'+getEnv('repeat.spg')",1,0,true,true,"NonZero","A",false,null,null,null,null,null,"name=\"prd\" list=\"prdNames\""]
[]
[null,"name=\"prd\" list=\"prdNames\" || name=\"genspp\" list=\"genericSpp\"","product","attribute('%f.Yield.%m.'+getEnv('repeat.genspp'))*curveMatch(':','Prop',fu,yield,getEnv('repeat.genspp'))","  '%f.YieldProduct.%m.'+getEnv('repeat.genspp')+'.'+getEnv('repeat.prd')",1,0,true,true,"NonZero","A",false," 'CC,SH'"]
[null,"name=\"prd\" list=\"prdNames\" || name=\"genspp\" list=\"genericSpp\"","product","setVar('y',attribute('%f.Yield.%m.'+getEnv('repeat.genspp')));\n(getVar('y')*agsfrc*tableMap('SE_ProductProportions',{'FU','GenericSpecies','Product','Quality'},{fu,getEnv('repeat.genspp'),getEnv('repeat.prd'),'AGS'},'Proportion'))","  '%f.YieldQuality.%m.'+getEnv('repeat.genspp')+'.AGS.'+getEnv('repeat.prd')",1,0,true,true,"NonZero","A",false," 'SE'"]
[null,"name=\"prd\" list=\"prdNames\" || name=\"genspp\" list=\"genericSpp\"","product","setVar('y',attribute('%f.Yield.%m.'+getEnv('repeat.genspp')));\n(getVar('y')*(1-agsfrc)*tableMap('SE_ProductProportions',{'FU','GenericSpecies','Product','Quality'},{fu,getEnv('repeat.genspp'),getEnv('repeat.prd'),'UGS'},'Proportion'))","  '%f.YieldQuality.%m.'+getEnv('repeat.genspp')+'.UGS.'+getEnv('repeat.prd')",1,0,true,true,"NonZero","A",false," 'SE'"]
[null,"name=\"prd\" list=\"prdNames\" || name=\"genspp\" list=\"genericSpp\"","product","attribute( '%f.YieldQuality.%m.'+getEnv('repeat.genspp')+'.AGS.'+getEnv('repeat.prd'))+attribute( '%f.YieldQuality.%m.'+getEnv('repeat.genspp')+'.UGS.'+getEnv('repeat.prd'))","  '%f.YieldProduct.%m.'+getEnv('repeat.genspp')+'.'+getEnv('repeat.prd')",1,0,true,true,"NonZero","A",false," 'SE'"]
[]
[null,null,null,null,null,1,0,true,false,true,"A",false]
[null,"name=\"cmb\" list=\"prdCombos\"","both","setVar('spg',matchgroup(getEnv('repeat.cmb'),'(.*)\\.(.*)',1)); setVar('prd',matchgroup(getEnv('repeat.cmb'),'(.*)\\.(.*)',2));\nasCurve(eval(join(filter(sort(unique(tableList('Products','GenericSpecies',q($SpeciesGroup='$)+getVar('spg')+q($' and ProductName='$)+getVar('prd')+q($'$)))),'.*',q($attribute('%f.Yield.%m.{0}')*curvematch(':','Prop','$)+fu+q($','$)+yield+q($','{0}','$)+getVar('prd')+q($')$)),'+')))"," '%f.YieldPrd.'+getEnv('repeat.cmb')",1,0,true,true,"NonZero","A",false]
[null,"name=\"cmb\" list=\"prdCombos\"","product","setVar('spg',matchgroup(getEnv('repeat.cmb'),'(.*)\\.(.*)',1)); setVar('prd',matchgroup(getEnv('repeat.cmb'),'(.*)\\.(.*)',2));\nasCurve(eval(join(filter(\nsort(unique(tableList('Products','GenericSpecies',q($SpeciesGroup='$)+getVar('spg')+q($' and ProductName='$)+getVar('prd')+q($'$)))),\n'.*',\nq($attribute('%f.Yield.%m.{0}')*curvematch(':','Prop','$)+fu+q($','$)+yield+q($','{0}','$)+getVar('prd')+q($')*asNumber(tablemap('Products',{'GenericSpecies','ProductName'},{'{0}','$)+getVar('prd')+q($'},'RenewalCharge'))$)\n),'+')))"," '%f.RenewalCharge.'+getEnv('repeat.cmb')",1,0,true,true,"NonZero","A",false]
[null,null,"product","asCurve(eval(join(filter(prdCombos,'(.*)',q($attribute('%f.RenewalCharge.{1}')$)),'+')))"," '%f.total.RenewalCharge'",1,0,true,true,true,"A",false]
[]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,"name=\"prd\" table=\"Products\"",null,"curveClip(attribute('%f.Yield.%m.'+getEnv('repeat.prd.ProductName')),Number(getEnv('repeat.prd.FromAge')),Number(getEnv('repeat.prd.ToAge')))"," '%f.Prd.%m.'+getEnv('repeat.prd.ProductName')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,false,"A",false," 'CC,SH'"]
[null,"name=\"grp\" list=\"prdGroups\"",null,"asCurve(eval(join(filter(tableList('Products','ProductName',q($indexof(ProductGroup,getEnv('repeat.grp')) ge 0$)),'.*',q($attribute('%f.Prd.%m.{0}')$)),'+')))"," '%f.PrdGroup.'+getEnv('repeat.grp')",1,0,true,false,"NonZero","A",false," 'CC,SH'"]
[]
[null,"name=\"prd\" table=\"Products\"",null,"curveClip(attribute('%f.Yield.%m.'+getEnv('repeat.prd.ProductName')),Number(getEnv('repeat.prd.FromAge')),Number(getEnv('repeat.prd.ToAge')))"," '%f.Prd.%m.'+getEnv('repeat.prd.ProductName')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,false,"A",false," 'SE'"]
[null,"name=\"grp\" list=\"prdGroups\"",null,"asCurve(eval(join(filter(tableList('Products','ProductName',q($indexof(ProductGroup,getEnv('repeat.grp')) ge 0$)),'.*',q($attribute('%f.Prd.%m.{0}')$)),'+')))"," '%f.PrdGroup.'+getEnv('repeat.grp')",1,0,true,false,"NonZero","A",false," 'SE'"]
[]
[]
[null,null,"feature","curvematch(':','Stand',polyid,'BA')"," '%f.Stand.%m.BA'","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","N",false," 'SE'","curvetype='Stand'"]
[null,null,"feature","curvematch(':','Strata',au_yc,tcr,agsfrc,yield,'BA')"," '%f.Stand.%m.BA'","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","N",false," 'SE'","curvetype='Strata'"]
[null,null,"feature"]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,null,"product","Number(tableMap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu,if(listsize(respList)>0,asString(column('Resp_'+treatment)), au_si),treatment},'RENEWAL_COST'))"," '%f.total.RenewalCost'","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false," 'CC'"]
[null,null,"product","Number(tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','TREATMENT'},{fu,au_si,yield,treatment},'RENEWAL_COST'))"," '%f.total.RenewalCost'","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false," 'SH'"]
[null,null,"product","Number(tableMap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,treatment},'RENEWAL_COST'))"," '%f.total.RenewalCost'","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false," 'SE'"]
[null,null,"product","Number(tableMap('TreesPlanted',{'SOURCE_FU','TREATMENT'},{fu,treatment},next_yield,0))"," '%f.TreesPlanted'","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false,null,"next_yield in tableList('TreesPlanted')"]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,null,"feature","curveClip(curve(0,1,999,1),Number(getEnv('repeat.lg.Start')),Number(getEnv('repeat.lg.End')))"," '%f.LG.'+getEnv('repeat.lg.Category')+'.'+getEnv('repeat.lg.LG_Code')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,"NonZero","A",false,null,"(silvsys = getEnv('repeat.lg.SILVSYS') or '?' =  getEnv('repeat.lg.SILVSYS')) and (lgfu = getEnv('repeat.lg.LGFU') or '?' =  getEnv('repeat.lg.LGFU')) and (yield = getEnv('repeat.lg.YIELD') or '?' = getEnv('repeat.lg.YIELD'))",null,null,null,"name=\"lg\" table=\"LGC definitions\""]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,null,"product","one"," '%f.Treated.'+fu+'.'+if(silvsys='SH',action,treatment)","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,true,"A",false]
[null,null,"product","one"," '%f.TreatedByFu.'+fu","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,true,"A",false]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,null,"product","one"," '%f.BioLimits.'+getEnv('repeat.bio.GROUP')+'.'+treatment","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,true,"A",false,null,"getEnv('repeat.bio.TREATMENT') eq treatment and fu in split(getEnv('repeat.bio.SOURCE_FU'))",null,null,null,"name=\"bio\" table=\"Biological Limits\""]
[null,null,"product","one"," '%f.OperLimits.'+getEnv('repeat.oper.GROUP')+'.'+treatment","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,true,"A",false,null,"getEnv('repeat.oper.TREATMENT') eq treatment and fu in split(getEnv('repeat.oper.SOURCE_FU'))",null,null,null,"name=\"oper\" table=\"Operational Limits\""]
[null,null,"product","one"," '%f.TreatedByBioGroup.'+getEnv('repeat.bio.GROUP')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,true,"A",false,null,"fu in split(getEnv('repeat.bio.SOURCE_FU'))",null,null,null,"name=\"bio\" table=\"Biological Limits\""]
[null,null,"product","one"," '%f.TreatedByOperGroup.'+getEnv('repeat.oper.GROUP')","1-asNumber(tableMap('RoadsLandingsWSY','SOURCE_FU',fu,yield))",0,true,false,true,"A",false,null,"fu in split(getEnv('repeat.oper.SOURCE_FU'))",null,null,null,"name=\"oper\" table=\"Operational Limits\""]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,null,"feature","curveClip(curve(0,1,999,1),Number(getEnv('repeat.llp.Start')),Number(getEnv('repeat.llp.End')))"," '%f.LLP.%m.'+getEnv('repeat.llp.Indicator')",1,0,true,false,true,"A",false,null,"(silvsys = getEnv('repeat.llp.SILVSYS') or '?' = getEnv('repeat.llp.SILVSYS')) and (lgfu = getEnv('repeat.llp.LGFU') or '?' = getEnv('repeat.llp.LGFU'))",null,null,null,"name=\"llp\" table=\"LLP Definitions\""]
[]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]
[null,null,"feature",null,null,1,0,true,false,true,"A",false]

{"sheet":"Responses","index":12,"n_rows":142,"n_cols":30,"rows_kept":142,"cut":false,"hidden":false,"merged":[[13,5,13,13],[14,2,14,3],[28,2,28,3],[30,4,30,5],[31,4,31,5],[32,4,32,5],[39,4,39,5],[40,4,40,5],[41,4,41,5],[42,4,42,5],[33,4,33,5],[34,4,34,5],[35,4,35,5],[36,4,36,5],[37,4,37,5],[38,4,38,5],[58,13,70,13],[71,14,71,15],[50,14,50,15],[51,14,51,15],[52,14,52,15],[53,14,53,15],[54,14,54,15],[46,14,46,15],[47,14,47,15],[48,13,52,13],[48,14,48,15],[49,14,49,15],[73,14,73,15],[74,14,74,15],[75,14,75,15],[76,14,76,15],[77,14,77,15],[78,14,78,15],[55,14,55,15],[56,14,56,15],[57,14,57,15],[72,14,72,15],[89,2,89,3],[89,4,89,5],[90,2,90,3],[90,4,90,5],[91,2,91,3],[91,4,91,5],[79,13,84,13],[86,14,86,15],[87,2,87,3],[87,4,87,5],[88,2,88,3],[88,4,88,5],[95,2,95,3],[95,4,95,5],[96,2,96,3],[96,4,96,5],[97,2,97,3],[97,4,97,5],[92,2,92,3],[92,4,92,5],[93,2,93,3],[93,4,93,5],[94,2,94,3],[94,4,94,5],[101,2,101,3],[101,4,101,5],[102,2,102,3],[102,4,102,5],[103,2,103,3],[103,4,103,5],[98,2,98,3],[98,4,98,5],[99,2,99,3],[99,4,99,5],[100,2,100,3],[100,4,100,5],[107,2,107,3],[107,4,107,5],[108,2,108,3],[108,4,108,5],[109,2,109,3],[109,4,109,5],[104,2,104,3],[104,4,104,5],[105,2,105,3],[105,4,105,5],[106,2,106,3],[106,4,106,5],[113,2,113,3],[113,4,113,5],[114,2,114,3],[114,4,114,5],[115,2,115,3],[115,4,115,5],[110,2,110,3],[110,4,110,5],[111,2,111,3],[111,4,111,5],[112,2,112,3],[112,4,112,5],[119,2,119,3],[119,4,119,5],[120,2,120,3],[120,4,120,5],[121,2,121,3],[121,4,121,5],[116,2,116,3],[116,4,116,5],[117,2,117,3],[117,4,117,5],[118,2,118,3],[118,4,118,5],[125,2,125,3],[125,4,125,5],[126,2,126,3],[126,4,126,5],[127,2,127,3],[127,4,127,5],[122,2,122,3],[122,4,122,5],[123,2,123,3],[123,4,123,5],[124,2,124,3],[124,4,124,5],[131,2,131,3],[131,4,131,5],[132,2,132,3],[132,4,132,5],[133,2,133,3],[133,4,133,5],[128,2,128,3],[128,4,128,5],[129,2,129,3],[129,4,129,5],[130,2,130,3],[130,4,130,5],[137,2,137,3],[137,4,137,5],[141,2,141,3],[141,4,141,5],[134,2,134,3],[134,4,134,5],[135,2,135,3],[135,4,135,5],[136,2,136,3],[136,4,136,5]]}
[null,null,{"$f":"CONCATENATE(\"Stratum description for '\", F3,\"'\")","v":"Stratum description for 'Responses'"}]
[]
[null,null,null,null,null,{"$f":"MID(CELL(\"filename\",B1),FIND(\"]\",CELL(\"filename\",B1))+1,256)","v":"Responses"}]
[]
[null,null,"Column","Value"]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,"Succession rules",null,null,"Renewal values"]
[null,null,"Selection Criteria",null,null,null,null,null,null,null,null,"name=\"r\" list=\"respList\""]
[null,"Repeat",null,null,"Breakup at","yield","lgfu","fu","au_ns","au_yc","au_si"," 'Resp_'+getEnv('repeat.r')","curvetype","polyid","Renewal age"]
[null,null,null,null,"Number(tablemap('NaturalSuccession',{'SOURCE_SILVSYS','SOURCE_AU_NS','SOURCE_YIELD'},{silvsys,au_ns,yield},'TRANSITION_AGE',999))","if(setVar('v',tablemap('NaturalSuccession',{'SOURCE_SILVSYS','SOURCE_AU_NS','SOURCE_YIELD'},{silvsys,au_ns,yield},'TARGET_YIELD'))='Same',yield,getVar('v'))","if(setVar('v',tablemap('NaturalSuccession',{'SOURCE_SILVSYS','SOURCE_AU_NS','SOURCE_YIELD'},{silvsys,au_ns,yield},'TARGET_LGFU'))='Same',lgfu,getVar('v'))","if(setVar('v',tablemap('NaturalSuccession',{'SOURCE_SILVSYS','SOURCE_AU_NS','SOURCE_YIELD'},{silvsys,au_ns,yield},'TARGET_FU'))='Same',fu,getVar('v'))","if(setVar('auns',tablemap('NaturalSuccession',{'SOURCE_SILVSYS','SOURCE_AU_NS','SOURCE_YIELD'},{silvsys,au_ns,yield},'TARGET_AU_NS'))='Same',au_ns,getVar('auns'))","if(setVar('v',tablemap('NaturalSuccession',{'SOURCE_SILVSYS','SOURCE_AU_NS','SOURCE_YIELD'},{silvsys,au_ns,yield},'TARGET_AU_YC'))='Same',au_yc,getVar('v'))","if(setVar('v',tablemap('NaturalSuccession',{'SOURCE_SILVSYS','SOURCE_AU_NS','SOURCE_YIELD'},{silvsys,au_ns,yield},'TARGET_AU_SI'))='Same',au_si,getVar('v'))","tablemap('NaturalSuccession',{'SOURCE_SILVSYS','SOURCE_AU_NS','SOURCE_YIELD'},{silvsys,au_ns,yield},'TARGET_FU')+'_Future'"," 'Strata'"," '0'","Number(tablemap('NaturalSuccession',{'SOURCE_SILVSYS','SOURCE_AU_NS','SOURCE_YIELD'},{silvsys,au_ns,yield},'STARTING_AGE',100))"]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[null,null,"Feature curves"]
[null,null,"Selection Criteria"]
[null,"Repeat",null,null,"Curve or Expression",null,"Feature Name","Factor","Cycle","Ignore","Output","Scale"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[null,null,null,null,null,null,null,1,true,false,true,"A"]
[]
[]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Treatment definitions"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Select repeat clause",null,"name=\"treat\" list=\"evenagedList\"","name=\"regime\" list=\"shelterwoodRegimeList\" || name=\"treat\" list=\"shelterwoodLabelList\"","name=\"treat\" list=\"selectionNameList\""]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Treatment name","Treatment name","getEnv('repeat.treat')","getEnv('repeat.treat')","getEnv('repeat.treat')"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Select",null,null,"managed","managed"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"silvsys='CC'","silvsys='SH'","silvsys='SE'"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"tablemap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu, if(listsize(respList)>0,column('Resp_'+getEnv('repeat.treat')), au_si), getEnv('repeat.treat')},'TREATMENT','') ne ''\n","tableMap('SH_Treatments', {'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TREATMENT','') ne ''","tableMap('SE_Treatments', {'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TREATMENT','') ne ''"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"tablemap('CC_Operability',{'SOURCE_FU','SOURCE_YIELD'},{fu,yield},'MIN_AGE',-1) ne -1"]
[]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Treatment repeat clause"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Minimum operable age",null,"tableMap('CC_Operability', {'SOURCE_FU','SOURCE_YIELD'},{fu,yield},'MIN_AGE')","asNumber(tableMap('SH_Treatments', {'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'MIN_AGE'))",null,null,null,null,60,60,60,60,60,60,60,60]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Maximum operable age"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Operability expression",null,"setVar('minv',tableMap('CC_Operability', {'SOURCE_FU','SOURCE_YIELD'},{fu,yield},'MIN_VOLUME',''));\nsetVar('spg',tableMap('CC_Operability', {'SOURCE_FU','SOURCE_YIELD'},{fu,yield},'SPECIES_GROUP',''));\nif(getVar('minv')='',true,lookupCurve(attribute(if(getVar('spg')='','feature.total.Yield.managed','feature.YieldSpg.managed.'+getVar('spg'))),offset()) ge Number(getVar('minv')))",null,"setVar('ba',lookupCurve(if(curvetype='Stand',curveId('Stand:'+polyid+':BA'),curveMatch(':','Strata',au_yc,tcr,agsfrc,yield,'BA')),offset()));\ngetVar('ba') ge tableMap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'MinBA') and getVar('ba') le tableMap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'MaxBA')"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Treatment eligibility expression"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Renew","yield",null,"if(setVar('v',tablemap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu,if(listsize(respList)>0,column('Resp_'+getEnv('repeat.treat')), au_si),getEnv('repeat.treat')},'TARGET_YIELD'))='Same',yield,getVar('v'))","if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_YIELD'))='Same',yield,getVar('v'))","if(setVar('v',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_YIELD'))='Same',yield,getVar('v'))"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"lgfu",null,"if(setVar('v',tablemap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu,if(listsize(respList)>0,column('Resp_'+getEnv('repeat.treat')), au_si),getEnv('repeat.treat')},'TARGET_LGFU'))='Same',lgfu,getVar('v'))","if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_LGFU'))='Same',lgfu,getVar('v'))","if(setVar('v',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_LGFU'))='Same',yield,getVar('v'))"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"fu",null,"if(setVar('v',tablemap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu,if(listsize(respList)>0,column('Resp_'+getEnv('repeat.treat')), au_si),getEnv('repeat.treat')},'TARGET_FU'))='Same',fu,getVar('v'))","if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_FU'))='Same',fu,getVar('v'))","if(setVar('v',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_FU'))='Same',yield,getVar('v'))"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"au_ns",null,"if(setVar('v',tablemap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu,if(listsize(respList)>0,column('Resp_'+getEnv('repeat.treat')), au_si),getEnv('repeat.treat')},'TARGET_AU_NS'))='Same',au_ns,getVar('v'))","if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_AU_NS'))='Same',au_ns,getVar('v'))","if(setVar('v',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_AU_NS'))='Same',yield,getVar('v'))"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"au_yc",null,"if(setVar('v',tablemap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu,if(listsize(respList)>0,column('Resp_'+getEnv('repeat.treat')), au_si),getEnv('repeat.treat')},'TARGET_AU_YC'))='Same',au_yc,getVar('v'))","if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_AU_YC'))='Same',au_yc,getVar('v'))","if(setVar('v',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_AU_YC'))='Same',yield,getVar('v'))"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"au_si",null,"if(setVar('v',tablemap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu,if(listsize(respList)>0,column('Resp_'+getEnv('repeat.treat')), au_si),getEnv('repeat.treat')},'TARGET_AU_SI'))='Same',au_si,getVar('v'))","if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_AU_SI'))='Same',au_si,getVar('v'))","if(setVar('v',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_AU_SI'))='Same',yield,getVar('v'))"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"silvsys",null,null,"if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_SILVSYS'))='Same',silvsys,getVar('v'))","if(setVar('v',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_SILVSYS'))='Same',yield,getVar('v'))"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"package",null," ''","tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'PACKAGE','')"," ''"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"agsfrc",null,null,null,"tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_AGS')/100.0"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null," 'Resp_'+getEnv('repeat.r')","name=\"r\" list=\"respList\"","tablemap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu,column('Resp_'+getEnv('repeat.treat')),getEnv('repeat.treat')},'TARGET_FU','')+'_Future'","if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_FU'))='Same',fu,getVar('v'))+'_Future'"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"inPackage",null," false","tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'SEQUENCE','')!=''"," false"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"curvetype",null," 'Strata'"," 'Strata'"," 'Strata'"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"polyid",null," '0'"," '0'"," '0'"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Age after treatment",null,0,"if(setVar('ta',tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_AGE',''))='',0,Number(getVar('ta')))","tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_AGE')",0,0,0,0,0,0,0,0,0,0,0]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Absolute or relative",null,"absolute","if(tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_AGE','')='','R','A')","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute","absolute"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Regen curve"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Retention",null,0,"if(setVar('ta',tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'DELAY',''))='',0,Number(getVar('ta')))","tableMap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'DELAY')",0,0,0,0,0,0,0,0,0,0,0]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Scheduling method",null,null,"if(tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'REGIME','')='','','Managed')"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Package name",null,null,"getEnv('repeat.regime')"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Package scheduling method",null,null,"if(inPackage,'manual','')"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Package sequence",null,null,"tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'SEQUENCE','')"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,"Produce","regime",null,null,"getEnv('repeat.regime')"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"action",null,"getEnv('repeat.treat')","tableMap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'ALIAS','')"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"next_au_yc",null,null,"if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_AU_YC'))='Same',au_yc,getVar('v'))","if(setVar('v',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_AU_YC'))='Same',yield,getVar('v'))"]
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"next_yield",null,"if(setVar('v',tablemap('CC_Treatments',{'SOURCE_FU','SOURCE_AU_SI','TREATMENT'},{fu,if(listsize(respList)>0,column('Resp_'+getEnv('repeat.treat')), au_si),getEnv('repeat.treat')},'TARGET_YIELD'))='Same',yield,getVar('v'))","if(setVar('v',tablemap('SH_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_YIELD','SOURCE_PACKAGE','REGIME','TREATMENT'},{fu,au_si,yield,package,getEnv('repeat.regime'),getEnv('repeat.treat')},'TARGET_YIELD'))='Same',yield,getVar('v'))","if(setVar('v',tablemap('SE_Treatments',{'SOURCE_FU','SOURCE_AU_SI','SOURCE_TCR','TREATMENT'},{fu,au_si,tcr,getEnv('repeat.treat')},'TARGET_YIELD'))='Same',yield,getVar('v'))"]
[]
[]
[]
[null,null,"Product curves",null,null,null,null,null,null,null,null,null,null,null,"Selection Criteria"]
[null,"Repeat","Curve or expression",null,"Product Name",null,"Factor","Future","Ignore","Output"]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true]
[null,null,"one","one",null,null,1,0,false,true]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1]
[null,null,"one","one",null,null,1,0,false,true]
[null,null,"one","one",null,null,1,0,false,true,null,null,null,null,null,null,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
[null,null,"one","one",null,null,1,0,false,true]
[null,null,"one","one",null,null,1,0,false,true]
[null,null,"one","one",null,null,1,0,false,true]
[null,null,"one","one",null,null,1,0,false,true]
[null,null,"one","one",null,null,1,0,false,true]
[null,null,"one","one",null,null,1,0,false,true]