wr 6 anos atrás
commit
57283e21dc
100 arquivos alterados com 26785 adições e 0 exclusões
  1. 7022 0
      api/fix/FIX44.xml
  2. 34 0
      api/fix/SessionCfgMk.cfg
  3. 269 0
      api/fix/app.go
  4. 352 0
      api/fix/broadcast.go
  5. BIN
      api/fix/cfix.dll
  6. 18 0
      api/fix/cgo_fix.go
  7. 108 0
      api/fix/const.go
  8. 692 0
      api/fix/fix.go
  9. 26 0
      api/fix/fix_test.go
  10. 4520 0
      api/fix/include/FixValue.h
  11. 1652 0
      api/fix/include/FixValueNumber.h
  12. 259 0
      api/fix/include/cfunc.h
  13. BIN
      api/fix/lib/cfix.lib
  14. BIN
      api/fix/lib000000/libcfix.so
  15. BIN
      api/fix/lib000000/libsignalsync.so
  16. BIN
      api/fix/lib000000/quickfix.lib
  17. 2 0
      api/fix/log/FIX.4.4-DISANBO-XW-MKD.event.current.log
  18. 1 0
      api/fix/log/FIX.4.4-DISANBO-XW-MKD.messages.current.log
  19. 0 0
      api/fix/log/GLOBAL.event.current.log
  20. 0 0
      api/fix/log/GLOBAL.messages.current.log
  21. 28 0
      api/fix/marketdata/main.go
  22. BIN
      api/fix/msvcp120.dll
  23. BIN
      api/fix/msvcr120.dll
  24. 59 0
      api/fix/order/main.go
  25. 1 0
      api/fix/somewhere/FIX.4.4-DISANBO-XW-MKD.body
  26. 1 0
      api/fix/somewhere/FIX.4.4-DISANBO-XW-MKD.header
  27. 1 0
      api/fix/somewhere/FIX.4.4-DISANBO-XW-MKD.seqnums
  28. 1 0
      api/fix/somewhere/FIX.4.4-DISANBO-XW-MKD.session
  29. 1 0
      api/fix/src/AUTHORS
  30. 170 0
      api/fix/src/CCall/Application.cpp
  31. 166 0
      api/fix/src/CCall/Application.h
  32. BIN
      api/fix/src/CCall/Application.o
  33. 62 0
      api/fix/src/CCall/CCall.def
  34. 258 0
      api/fix/src/CCall/CCall.vcxproj
  35. 44 0
      api/fix/src/CCall/CCall.vcxproj.filters
  36. 3 0
      api/fix/src/CCall/CCall.vcxproj.user
  37. 4520 0
      api/fix/src/CCall/FixValue.h
  38. 1652 0
      api/fix/src/CCall/FixValueNumber.h
  39. 126 0
      api/fix/src/CCall/HsBatchOrder.h
  40. 127 0
      api/fix/src/CCall/HsCollectiveCancelRequest.h
  41. 125 0
      api/fix/src/CCall/HsCollectiveOrder.h
  42. 127 0
      api/fix/src/CCall/HsCollectiveOrderStatusRequest.h
  43. 47 0
      api/fix/src/CCall/HsFixFieldNumbers.h
  44. 47 0
      api/fix/src/CCall/HsFixFields.h
  45. 55 0
      api/fix/src/CCall/HsMarketDataRequest.h
  46. 62 0
      api/fix/src/CCall/HsMessageCracker.h
  47. 290 0
      api/fix/src/CCall/HsPositionMaintenanceRequest.h
  48. 291 0
      api/fix/src/CCall/HsPositionReport.h
  49. 236 0
      api/fix/src/CCall/HsRequestForPositions.h
  50. 16 0
      api/fix/src/CCall/Makefile
  51. 88 0
      api/fix/src/CCall/MarketDataSnapshotFullRefresh.h
  52. 1167 0
      api/fix/src/CCall/cfunc.cpp
  53. 259 0
      api/fix/src/CCall/cfunc.h
  54. BIN
      api/fix/src/CCall/cfunc.o
  55. BIN
      api/fix/src/CCall/libfix.a
  56. BIN
      api/fix/src/CCall/libfix.so
  57. 57 0
      api/fix/src/CCall/ufx_security_interface.h
  58. 25 0
      api/fix/src/CONTRIBUTORS
  59. 1 0
      api/fix/src/INSTALL
  60. 46 0
      api/fix/src/LICENSE
  61. 6 0
      api/fix/src/Makefile.am
  62. 1373 0
      api/fix/src/NEWS
  63. BIN
      api/fix/src/Release/ccall_example.exe
  64. BIN
      api/fix/src/Release/ccall_example.pdb
  65. BIN
      api/fix/src/Release/cfix.exp
  66. BIN
      api/fix/src/Release/cfix.pdb
  67. BIN
      api/fix/src/Release/sync.exp
  68. BIN
      api/fix/src/Release/sync.pdb
  69. 12 0
      api/fix/src/THANKS
  70. 1 0
      api/fix/src/bin/Makefile.am
  71. 1 0
      api/fix/src/bin/cfg/Makefile.am
  72. 25 0
      api/fix/src/bin/cfg/banzai.cfg
  73. 46 0
      api/fix/src/bin/cfg/banzai.cfg.0
  74. 95 0
      api/fix/src/bin/cfg/executor.cfg
  75. 36 0
      api/fix/src/bin/cfg/ordermatch.cfg
  76. 21 0
      api/fix/src/bin/cfg/tradeclient.cfg
  77. BIN
      api/fix/src/bin/debug/executor_cpp/executor_cpp.exe
  78. BIN
      api/fix/src/bin/debug/executor_cpp/executor_cpp.ilk
  79. BIN
      api/fix/src/bin/debug/ordermatch/ordermatch.exe
  80. BIN
      api/fix/src/bin/debug/ordermatch/ordermatch.ilk
  81. BIN
      api/fix/src/bin/debug/tradeclient/tradeclient.exe
  82. BIN
      api/fix/src/bin/debug/tradeclient/tradeclient.ilk
  83. 4 0
      api/fix/src/bin/run_banzai.bat
  84. 5 0
      api/fix/src/bin/run_banzai.sh
  85. 1 0
      api/fix/src/bin/run_executor_cpp.bat
  86. 2 0
      api/fix/src/bin/run_executor_cpp.sh
  87. 1 0
      api/fix/src/bin/run_executor_cpp_debug.bat
  88. 1 0
      api/fix/src/bin/run_executor_csharp.bat
  89. 1 0
      api/fix/src/bin/run_executor_csharp_debug.bat
  90. 4 0
      api/fix/src/bin/run_executor_python.sh
  91. 6 0
      api/fix/src/bin/run_executor_ruby.sh
  92. 1 0
      api/fix/src/bin/run_executor_vbnet.bat
  93. 1 0
      api/fix/src/bin/run_executor_vbnet_debug.bat
  94. 1 0
      api/fix/src/bin/run_ordermatch.bat
  95. 2 0
      api/fix/src/bin/run_ordermatch.sh
  96. 1 0
      api/fix/src/bin/run_ordermatch_debug.bat
  97. 1 0
      api/fix/src/bin/run_tradeclient.bat
  98. 2 0
      api/fix/src/bin/run_tradeclient.sh
  99. 1 0
      api/fix/src/bin/run_tradeclient_debug.bat
  100. 20 0
      api/fix/src/bootstrap

+ 7022 - 0
api/fix/FIX44.xml

@@ -0,0 +1,7022 @@
+<fix major='4' type='FIX' servicepack='0' minor='4'>
+ <header>
+  <field name='BeginString' required='Y' />
+  <field name='BodyLength' required='Y' />
+  <field name='MsgType' required='Y' />
+  <field name='SenderCompID' required='Y' />
+  <field name='TargetCompID' required='Y' />
+  <field name='OnBehalfOfCompID' required='N' />
+  <field name='DeliverToCompID' required='N' />
+  <field name='SecureDataLen' required='N' />
+  <field name='SecureData' required='N' />
+  <field name='MsgSeqNum' required='Y' />
+  <field name='SenderSubID' required='N' />
+  <field name='SenderLocationID' required='N' />
+  <field name='TargetSubID' required='N' />
+  <field name='TargetLocationID' required='N' />
+  <field name='OnBehalfOfSubID' required='N' />
+  <field name='OnBehalfOfLocationID' required='N' />
+  <field name='DeliverToSubID' required='N' />
+  <field name='DeliverToLocationID' required='N' />
+  <field name='PossDupFlag' required='N' />
+  <field name='PossResend' required='N' />
+  <field name='SendingTime' required='Y' />
+  <field name='OrigSendingTime' required='N' />
+  <field name='XmlDataLen' required='N' />
+  <field name='XmlData' required='N' />
+  <field name='MessageEncoding' required='N' />
+  <field name='LastMsgSeqNumProcessed' required='N' />
+  <group name='NoHops' required='N'>
+   <field name='HopCompID' required='N' />
+   <field name='HopSendingTime' required='N' />
+   <field name='HopRefID' required='N' />
+  </group>
+ </header>
+ <messages>
+  <message name='Heartbeat' msgcat='admin' msgtype='0'>
+   <field name='TestReqID' required='N' />
+  </message>
+  <message name='TestRequest' msgcat='admin' msgtype='1'>
+   <field name='TestReqID' required='Y' />
+  </message>
+  <message name='ResendRequest' msgcat='admin' msgtype='2'>
+   <field name='BeginSeqNo' required='Y' />
+   <field name='EndSeqNo' required='Y' />
+  </message>
+  <message name='Reject' msgcat='admin' msgtype='3'>
+   <field name='RefSeqNum' required='Y' />
+   <field name='RefTagID' required='N' />
+   <field name='RefMsgType' required='N' />
+   <field name='SessionRejectReason' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='SequenceReset' msgcat='admin' msgtype='4'>
+   <field name='GapFillFlag' required='N' />
+   <field name='NewSeqNo' required='Y' />
+  </message>
+  <message name='Logout' msgcat='admin' msgtype='5'>
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='IOI' msgcat='app' msgtype='6'>
+   <field name='IOIID' required='Y' />
+   <field name='IOITransType' required='Y' />
+   <field name='IOIRefID' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Side' required='Y' />
+   <field name='QtyType' required='N' />
+   <component name='OrderQtyData' required='N' />
+   <field name='IOIQty' required='Y' />
+   <field name='Currency' required='N' />
+   <component name='Stipulations' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+    <field name='LegIOIQty' required='N' />
+    <component name='LegStipulations' required='N' />
+   </group>
+   <field name='PriceType' required='N' />
+   <field name='Price' required='N' />
+   <field name='ValidUntilTime' required='N' />
+   <field name='IOIQltyInd' required='N' />
+   <field name='IOINaturalFlag' required='N' />
+   <group name='NoIOIQualifiers' required='N'>
+    <field name='IOIQualifier' required='N' />
+   </group>
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='URLLink' required='N' />
+   <group name='NoRoutingIDs' required='N'>
+    <field name='RoutingType' required='N' />
+    <field name='RoutingID' required='N' />
+   </group>
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='YieldData' required='N' />
+  </message>
+  <message name='Advertisement' msgcat='app' msgtype='7'>
+   <field name='AdvId' required='Y' />
+   <field name='AdvTransType' required='Y' />
+   <field name='AdvRefID' required='N' />
+   <component name='Instrument' required='Y' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='AdvSide' required='Y' />
+   <field name='Quantity' required='Y' />
+   <field name='QtyType' required='N' />
+   <field name='Price' required='N' />
+   <field name='Currency' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='URLLink' required='N' />
+   <field name='LastMkt' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+  </message>
+  <message name='ExecutionReport' msgcat='app' msgtype='8'>
+   <field name='OrderID' required='N' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='SecondaryExecID' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='OrigClOrdID' required='N' />
+   <field name='ClOrdLinkID' required='N' />
+   <field name='QuoteRespID' required='N' />
+   <field name='OrdStatusReqID' required='N' />
+   <field name='MassStatusReqID' required='N' />
+   <field name='TotNumReports' required='N' />
+   <field name='LastRptRequested' required='N' />
+   <component name='Parties' required='N' />
+   <field name='TradeOriginationDate' required='N' />
+   <group name='NoContraBrokers' required='N'>
+    <field name='ContraBroker' required='N' />
+    <field name='ContraTrader' required='N' />
+    <field name='ContraTradeQty' required='N' />
+    <field name='ContraTradeTime' required='N' />
+    <field name='ContraLegRefID' required='N' />
+   </group>
+   <field name='ListID' required='N' />
+   <field name='CrossID' required='N' />
+   <field name='OrigCrossID' required='N' />
+   <field name='CrossType' required='N' />
+   <field name='ExecID' required='N' />
+   <field name='ExecRefID' required='N' />
+   <field name='ExecType' required='Y' />
+   <field name='OrdStatus' required='Y' />
+   <field name='WorkingIndicator' required='N' />
+   <field name='OrdRejReason' required='N' />
+   <field name='ExecRestatementReason' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='DayBookingInst' required='N' />
+   <field name='BookingUnit' required='N' />
+   <field name='PreallocMethod' required='N' />
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='CashMargin' required='N' />
+   <field name='ClearingFeeIndicator' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Side' required='Y' />
+   <component name='Stipulations' required='N' />
+   <field name='QtyType' required='N' />
+   <component name='OrderQtyData' required='N' />
+   <field name='OrdType' required='N' />
+   <field name='PriceType' required='N' />
+   <field name='Price' required='N' />
+   <field name='StopPx' required='N' />
+   <component name='PegInstructions' required='N' />
+   <component name='DiscretionInstructions' required='N' />
+   <field name='PeggedPrice' required='N' />
+   <field name='DiscretionPrice' required='N' />
+   <field name='TargetStrategy' required='N' />
+   <field name='TargetStrategyParameters' required='N' />
+   <field name='ParticipationRate' required='N' />
+   <field name='TargetStrategyPerformance' required='N' />
+   <field name='Currency' required='N' />
+   <field name='ComplianceID' required='N' />
+   <field name='SolicitedFlag' required='N' />
+   <field name='TimeInForce' required='N' />
+   <field name='EffectiveTime' required='N' />
+   <field name='ExpireDate' required='N' />
+   <field name='ExpireTime' required='N' />
+   <field name='ExecInst' required='N' />
+   <field name='OrderCapacity' required='N' />
+   <field name='OrderRestrictions' required='N' />
+   <field name='CustOrderCapacity' required='N' />
+   <field name='LastQty' required='N' />
+   <field name='UnderlyingLastQty' required='N' />
+   <field name='LastPx' required='N' />
+   <field name='UnderlyingLastPx' required='N' />
+   <field name='LastParPx' required='N' />
+   <field name='LastSpotRate' required='N' />
+   <field name='LastForwardPoints' required='N' />
+   <field name='LastMkt' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='TimeBracket' required='N' />
+   <field name='LastCapacity' required='N' />
+   <field name='LeavesQty' required='Y' />
+   <field name='CumQty' required='Y' />
+   <field name='AvgPx' required='N' />
+   <field name='DayOrderQty' required='N' />
+   <field name='DayCumQty' required='N' />
+   <field name='DayAvgPx' required='N' />
+   <field name='GTBookingInst' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='ReportToExch' required='N' />
+   <component name='CommissionData' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='YieldData' required='N' />
+   <field name='GrossTradeAmt' required='N' />
+   <field name='NumDaysInterest' required='N' />
+   <field name='ExDate' required='N' />
+   <field name='AccruedInterestRate' required='N' />
+   <field name='AccruedInterestAmt' required='N' />
+   <field name='InterestAtMaturity' required='N' />
+   <field name='EndAccruedInterestAmt' required='N' />
+   <field name='StartCash' required='N' />
+   <field name='EndCash' required='N' />
+   <field name='TradedFlatSwitch' required='N' />
+   <field name='BasisFeatureDate' required='N' />
+   <field name='BasisFeaturePrice' required='N' />
+   <field name='Concession' required='N' />
+   <field name='TotalTakedown' required='N' />
+   <field name='NetMoney' required='N' />
+   <field name='SettlCurrAmt' required='N' />
+   <field name='SettlCurrency' required='N' />
+   <field name='SettlCurrFxRate' required='N' />
+   <field name='SettlCurrFxRateCalc' required='N' />
+   <field name='HandlInst' required='N' />
+   <field name='MinQty' required='N' />
+   <field name='MaxFloor' required='N' />
+   <field name='PositionEffect' required='N' />
+   <field name='MaxShow' required='N' />
+   <field name='BookingType' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='SettlDate2' required='N' />
+   <field name='OrderQty2' required='N' />
+   <field name='LastForwardPoints2' required='N' />
+   <field name='MultiLegReportingType' required='N' />
+   <field name='CancellationRights' required='N' />
+   <field name='MoneyLaunderingStatus' required='N' />
+   <field name='RegistID' required='N' />
+   <field name='Designation' required='N' />
+   <field name='TransBkdTime' required='N' />
+   <field name='ExecValuationPoint' required='N' />
+   <field name='ExecPriceType' required='N' />
+   <field name='ExecPriceAdjustment' required='N' />
+   <field name='PriorityIndicator' required='N' />
+   <field name='PriceImprovement' required='N' />
+   <field name='LastLiquidityInd' required='N' />
+   <group name='NoContAmts' required='N'>
+    <field name='ContAmtType' required='N' />
+    <field name='ContAmtValue' required='N' />
+    <field name='ContAmtCurr' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+    <field name='LegQty' required='N' />
+    <field name='LegSwapType' required='N' />
+    <component name='LegStipulations' required='N' />
+    <field name='LegPositionEffect' required='N' />
+    <field name='LegCoveredOrUncovered' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='LegRefID' required='N' />
+    <field name='LegPrice' required='N' />
+    <field name='LegSettlType' required='N' />
+    <field name='LegSettlDate' required='N' />
+    <field name='LegLastPx' required='N' />
+   </group>
+   <field name='CopyMsgIndicator' required='N' />
+   <group name='NoMiscFees' required='N'>
+    <field name='MiscFeeAmt' required='N' />
+    <field name='MiscFeeCurr' required='N' />
+    <field name='MiscFeeType' required='N' />
+    <field name='MiscFeeBasis' required='N' />
+   </group>
+  </message>
+  <message name='OrderCancelReject' msgcat='app' msgtype='9'>
+   <field name='OrderID' required='Y' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='ClOrdID' required='Y' />
+   <field name='ClOrdLinkID' required='N' />
+   <field name='OrigClOrdID' required='Y' />
+   <field name='OrdStatus' required='Y' />
+   <field name='WorkingIndicator' required='N' />
+   <field name='OrigOrdModTime' required='N' />
+   <field name='ListID' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='TradeOriginationDate' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='CxlRejResponseTo' required='Y' />
+   <field name='CxlRejReason' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='Logon' msgcat='admin' msgtype='A'>
+   <field name='EncryptMethod' required='Y' />
+   <field name='HeartBtInt' required='Y' />
+   <field name='RawDataLength' required='N' />
+   <field name='RawData' required='N' />
+   <field name='ResetSeqNumFlag' required='N' />
+   <field name='NextExpectedMsgSeqNum' required='N' />
+   <field name='MaxMessageSize' required='N' />
+   <group name='NoMsgTypes' required='N'>
+    <field name='RefMsgType' required='N' />
+    <field name='MsgDirection' required='N' />
+   </group>
+   <field name='TestMessageIndicator' required='N' />
+   <field name='Username' required='N' />
+   <field name='Password' required='N' />
+  </message>
+  <message name='News' msgcat='app' msgtype='B'>
+   <field name='OrigTime' required='N' />
+   <field name='Urgency' required='N' />
+   <field name='Headline' required='Y' />
+   <field name='EncodedHeadlineLen' required='N' />
+   <field name='EncodedHeadline' required='N' />
+   <group name='NoRoutingIDs' required='N'>
+    <field name='RoutingType' required='N' />
+    <field name='RoutingID' required='N' />
+   </group>
+   <group name='NoRelatedSym' required='N'>
+    <component name='Instrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLinesOfText' required='Y'>
+    <field name='Text' required='Y' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+   <field name='URLLink' required='N' />
+   <field name='RawDataLength' required='N' />
+   <field name='RawData' required='N' />
+  </message>
+  <message name='Email' msgcat='app' msgtype='C'>
+   <field name='EmailThreadID' required='Y' />
+   <field name='EmailType' required='Y' />
+   <field name='OrigTime' required='N' />
+   <field name='Subject' required='Y' />
+   <field name='EncodedSubjectLen' required='N' />
+   <field name='EncodedSubject' required='N' />
+   <group name='NoRoutingIDs' required='N'>
+    <field name='RoutingType' required='N' />
+    <field name='RoutingID' required='N' />
+   </group>
+   <group name='NoRelatedSym' required='N'>
+    <component name='Instrument' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='OrderID' required='N' />
+   <field name='ClOrdID' required='N' />
+   <group name='NoLinesOfText' required='Y'>
+    <field name='Text' required='Y' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+   <field name='RawDataLength' required='N' />
+   <field name='RawData' required='N' />
+  </message>
+  <message name='NewOrderSingle' msgcat='app' msgtype='D'>
+   <field name='ClOrdID' required='Y' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='ClOrdLinkID' required='N' />
+   <component name='Parties' required='N' />
+   <field name='TradeOriginationDate' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='DayBookingInst' required='N' />
+   <field name='BookingUnit' required='N' />
+   <field name='PreallocMethod' required='N' />
+   <field name='AllocID' required='N' />
+   <group name='NoAllocs' required='N'>
+    <field name='AllocAccount' required='N' />
+    <field name='AllocAcctIDSource' required='N' />
+    <field name='AllocSettlCurrency' required='N' />
+    <field name='IndividualAllocID' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='AllocQty' required='N' />
+   </group>
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='CashMargin' required='N' />
+   <field name='ClearingFeeIndicator' required='N' />
+   <field name='HandlInst' required='N' />
+   <field name='ExecInst' required='N' />
+   <field name='MinQty' required='N' />
+   <field name='MaxFloor' required='N' />
+   <field name='ExDestination' required='N' />
+   <group name='NoTradingSessions' required='N'>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <field name='ProcessCode' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='PrevClosePx' required='N' />
+   <field name='Side' required='Y' />
+   <field name='LocateReqd' required='N' />
+   <field name='TransactTime' required='Y' />
+   <component name='Stipulations' required='N' />
+   <field name='QtyType' required='N' />
+   <component name='OrderQtyData' required='Y' />
+   <field name='OrdType' required='Y' />
+   <field name='PriceType' required='N' />
+   <field name='Price' required='N' />
+   <field name='StopPx' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='YieldData' required='N' />
+   <field name='Currency' required='N' />
+   <field name='ComplianceID' required='N' />
+   <field name='SolicitedFlag' required='N' />
+   <field name='IOIID' required='N' />
+   <field name='QuoteID' required='N' />
+   <field name='TimeInForce' required='N' />
+   <field name='EffectiveTime' required='N' />
+   <field name='ExpireDate' required='N' />
+   <field name='ExpireTime' required='N' />
+   <field name='GTBookingInst' required='N' />
+   <component name='CommissionData' required='N' />
+   <field name='OrderCapacity' required='N' />
+   <field name='OrderRestrictions' required='N' />
+   <field name='CustOrderCapacity' required='N' />
+   <field name='ForexReq' required='N' />
+   <field name='SettlCurrency' required='N' />
+   <field name='BookingType' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='SettlDate2' required='N' />
+   <field name='OrderQty2' required='N' />
+   <field name='Price2' required='N' />
+   <field name='PositionEffect' required='N' />
+   <field name='CoveredOrUncovered' required='N' />
+   <field name='MaxShow' required='N' />
+   <component name='PegInstructions' required='N' />
+   <component name='DiscretionInstructions' required='N' />
+   <field name='TargetStrategy' required='N' />
+   <field name='TargetStrategyParameters' required='N' />
+   <field name='ParticipationRate' required='N' />
+   <field name='CancellationRights' required='N' />
+   <field name='MoneyLaunderingStatus' required='N' />
+   <field name='RegistID' required='N' />
+   <field name='Designation' required='N' />
+  </message>
+  <message name='NewOrderList' msgcat='app' msgtype='E'>
+   <field name='ListID' required='Y' />
+   <field name='BidID' required='N' />
+   <field name='ClientBidID' required='N' />
+   <field name='ProgRptReqs' required='N' />
+   <field name='BidType' required='Y' />
+   <field name='ProgPeriodInterval' required='N' />
+   <field name='CancellationRights' required='N' />
+   <field name='MoneyLaunderingStatus' required='N' />
+   <field name='RegistID' required='N' />
+   <field name='ListExecInstType' required='N' />
+   <field name='ListExecInst' required='N' />
+   <field name='EncodedListExecInstLen' required='N' />
+   <field name='EncodedListExecInst' required='N' />
+   <field name='AllowableOneSidednessPct' required='N' />
+   <field name='AllowableOneSidednessValue' required='N' />
+   <field name='AllowableOneSidednessCurr' required='N' />
+   <field name='TotNoOrders' required='Y' />
+   <field name='LastFragment' required='N' />
+   <group name='NoOrders' required='Y'>
+    <field name='ClOrdID' required='Y' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='ListSeqNo' required='Y' />
+    <field name='ClOrdLinkID' required='N' />
+    <field name='SettlInstMode' required='N' />
+    <component name='Parties' required='N' />
+    <field name='TradeOriginationDate' required='N' />
+    <field name='TradeDate' required='N' />
+    <field name='Account' required='N' />
+    <field name='AcctIDSource' required='N' />
+    <field name='AccountType' required='N' />
+    <field name='DayBookingInst' required='N' />
+    <field name='BookingUnit' required='N' />
+    <field name='AllocID' required='N' />
+    <field name='PreallocMethod' required='N' />
+    <group name='NoAllocs' required='N'>
+     <field name='AllocAccount' required='N' />
+     <field name='AllocAcctIDSource' required='N' />
+     <field name='AllocSettlCurrency' required='N' />
+     <field name='IndividualAllocID' required='N' />
+     <component name='NestedParties' required='N' />
+     <field name='AllocQty' required='N' />
+    </group>
+    <field name='SettlType' required='N' />
+    <field name='SettlDate' required='N' />
+    <field name='CashMargin' required='N' />
+    <field name='ClearingFeeIndicator' required='N' />
+    <field name='HandlInst' required='N' />
+    <field name='ExecInst' required='N' />
+    <field name='MinQty' required='N' />
+    <field name='MaxFloor' required='N' />
+    <field name='ExDestination' required='N' />
+    <group name='NoTradingSessions' required='N'>
+     <field name='TradingSessionID' required='N' />
+     <field name='TradingSessionSubID' required='N' />
+    </group>
+    <field name='ProcessCode' required='N' />
+    <component name='Instrument' required='Y' />
+    <group name='NoUnderlyings' required='N'>
+     <component name='UnderlyingInstrument' required='N' />
+    </group>
+    <field name='PrevClosePx' required='N' />
+    <field name='Side' required='Y' />
+    <field name='SideValueInd' required='N' />
+    <field name='LocateReqd' required='N' />
+    <field name='TransactTime' required='N' />
+    <component name='Stipulations' required='N' />
+    <field name='QtyType' required='N' />
+    <component name='OrderQtyData' required='Y' />
+    <field name='OrdType' required='N' />
+    <field name='PriceType' required='N' />
+    <field name='Price' required='N' />
+    <field name='StopPx' required='N' />
+    <component name='SpreadOrBenchmarkCurveData' required='N' />
+    <component name='YieldData' required='N' />
+    <field name='Currency' required='N' />
+    <field name='ComplianceID' required='N' />
+    <field name='SolicitedFlag' required='N' />
+    <field name='IOIID' required='N' />
+    <field name='QuoteID' required='N' />
+    <field name='TimeInForce' required='N' />
+    <field name='EffectiveTime' required='N' />
+    <field name='ExpireDate' required='N' />
+    <field name='ExpireTime' required='N' />
+    <field name='GTBookingInst' required='N' />
+    <component name='CommissionData' required='N' />
+    <field name='OrderCapacity' required='N' />
+    <field name='OrderRestrictions' required='N' />
+    <field name='CustOrderCapacity' required='N' />
+    <field name='ForexReq' required='N' />
+    <field name='SettlCurrency' required='N' />
+    <field name='BookingType' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+    <field name='SettlDate2' required='N' />
+    <field name='OrderQty2' required='N' />
+    <field name='Price2' required='N' />
+    <field name='PositionEffect' required='N' />
+    <field name='CoveredOrUncovered' required='N' />
+    <field name='MaxShow' required='N' />
+    <component name='PegInstructions' required='N' />
+    <component name='DiscretionInstructions' required='N' />
+    <field name='TargetStrategy' required='N' />
+    <field name='TargetStrategyParameters' required='N' />
+    <field name='ParticipationRate' required='N' />
+    <field name='Designation' required='N' />
+   </group>
+  </message>
+  <message name='OrderCancelRequest' msgcat='app' msgtype='F'>
+   <field name='OrigClOrdID' required='Y' />
+   <field name='OrderID' required='N' />
+   <field name='ClOrdID' required='Y' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='ClOrdLinkID' required='N' />
+   <field name='ListID' required='N' />
+   <field name='OrigOrdModTime' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <component name='Parties' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Side' required='Y' />
+   <field name='TransactTime' required='Y' />
+   <component name='OrderQtyData' required='Y' />
+   <field name='ComplianceID' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='OrderCancelReplaceRequest' msgcat='app' msgtype='G'>
+   <field name='OrderID' required='N' />
+   <component name='Parties' required='N' />
+   <field name='TradeOriginationDate' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='OrigClOrdID' required='Y' />
+   <field name='ClOrdID' required='Y' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='ClOrdLinkID' required='N' />
+   <field name='ListID' required='N' />
+   <field name='OrigOrdModTime' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='DayBookingInst' required='N' />
+   <field name='BookingUnit' required='N' />
+   <field name='PreallocMethod' required='N' />
+   <field name='AllocID' required='N' />
+   <group name='NoAllocs' required='N'>
+    <field name='AllocAccount' required='N' />
+    <field name='AllocAcctIDSource' required='N' />
+    <field name='AllocSettlCurrency' required='N' />
+    <field name='IndividualAllocID' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='AllocQty' required='N' />
+   </group>
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='CashMargin' required='N' />
+   <field name='ClearingFeeIndicator' required='N' />
+   <field name='HandlInst' required='N' />
+   <field name='ExecInst' required='N' />
+   <field name='MinQty' required='N' />
+   <field name='MaxFloor' required='N' />
+   <field name='ExDestination' required='N' />
+   <group name='NoTradingSessions' required='N'>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Side' required='Y' />
+   <field name='TransactTime' required='Y' />
+   <field name='QtyType' required='N' />
+   <component name='OrderQtyData' required='Y' />
+   <field name='OrdType' required='Y' />
+   <field name='PriceType' required='N' />
+   <field name='Price' required='N' />
+   <field name='StopPx' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='YieldData' required='N' />
+   <component name='PegInstructions' required='N' />
+   <component name='DiscretionInstructions' required='N' />
+   <field name='TargetStrategy' required='N' />
+   <field name='TargetStrategyParameters' required='N' />
+   <field name='ParticipationRate' required='N' />
+   <field name='ComplianceID' required='N' />
+   <field name='SolicitedFlag' required='N' />
+   <field name='Currency' required='N' />
+   <field name='TimeInForce' required='N' />
+   <field name='EffectiveTime' required='N' />
+   <field name='ExpireDate' required='N' />
+   <field name='ExpireTime' required='N' />
+   <field name='GTBookingInst' required='N' />
+   <component name='CommissionData' required='N' />
+   <field name='OrderCapacity' required='N' />
+   <field name='OrderRestrictions' required='N' />
+   <field name='CustOrderCapacity' required='N' />
+   <field name='ForexReq' required='N' />
+   <field name='SettlCurrency' required='N' />
+   <field name='BookingType' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='SettlDate2' required='N' />
+   <field name='OrderQty2' required='N' />
+   <field name='Price2' required='N' />
+   <field name='PositionEffect' required='N' />
+   <field name='CoveredOrUncovered' required='N' />
+   <field name='MaxShow' required='N' />
+   <field name='LocateReqd' required='N' />
+   <field name='CancellationRights' required='N' />
+   <field name='MoneyLaunderingStatus' required='N' />
+   <field name='RegistID' required='N' />
+   <field name='Designation' required='N' />
+  </message>
+  <message name='OrderStatusRequest' msgcat='app' msgtype='H'>
+   <field name='OrderID' required='N' />
+   <field name='ClOrdID' required='Y' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='ClOrdLinkID' required='N' />
+   <component name='Parties' required='N' />
+   <field name='OrdStatusReqID' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Side' required='Y' />
+  </message>
+  <message name='AllocationInstruction' msgcat='app' msgtype='J'>
+   <field name='AllocID' required='Y' />
+   <field name='AllocTransType' required='Y' />
+   <field name='AllocType' required='Y' />
+   <field name='SecondaryAllocID' required='N' />
+   <field name='RefAllocID' required='N' />
+   <field name='AllocCancReplaceReason' required='N' />
+   <field name='AllocIntermedReqType' required='N' />
+   <field name='AllocLinkID' required='N' />
+   <field name='AllocLinkType' required='N' />
+   <field name='BookingRefID' required='N' />
+   <field name='AllocNoOrdersType' required='Y' />
+   <group name='NoOrders' required='N'>
+    <field name='ClOrdID' required='N' />
+    <field name='OrderID' required='N' />
+    <field name='SecondaryOrderID' required='N' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='ListID' required='N' />
+    <component name='NestedParties2' required='N' />
+    <field name='OrderQty' required='N' />
+    <field name='OrderAvgPx' required='N' />
+    <field name='OrderBookingQty' required='N' />
+   </group>
+   <group name='NoExecs' required='N'>
+    <field name='LastQty' required='N' />
+    <field name='ExecID' required='N' />
+    <field name='SecondaryExecID' required='N' />
+    <field name='LastPx' required='N' />
+    <field name='LastParPx' required='N' />
+    <field name='LastCapacity' required='N' />
+   </group>
+   <field name='PreviouslyReported' required='N' />
+   <field name='ReversalIndicator' required='N' />
+   <field name='MatchType' required='N' />
+   <field name='Side' required='Y' />
+   <component name='Instrument' required='Y' />
+   <component name='InstrumentExtension' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='Quantity' required='Y' />
+   <field name='QtyType' required='N' />
+   <field name='LastMkt' required='N' />
+   <field name='TradeOriginationDate' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='PriceType' required='N' />
+   <field name='AvgPx' required='Y' />
+   <field name='AvgParPx' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <field name='Currency' required='N' />
+   <field name='AvgPxPrecision' required='N' />
+   <component name='Parties' required='N' />
+   <field name='TradeDate' required='Y' />
+   <field name='TransactTime' required='N' />
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='BookingType' required='N' />
+   <field name='GrossTradeAmt' required='N' />
+   <field name='Concession' required='N' />
+   <field name='TotalTakedown' required='N' />
+   <field name='NetMoney' required='N' />
+   <field name='PositionEffect' required='N' />
+   <field name='AutoAcceptIndicator' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='NumDaysInterest' required='N' />
+   <field name='AccruedInterestRate' required='N' />
+   <field name='AccruedInterestAmt' required='N' />
+   <field name='TotalAccruedInterestAmt' required='N' />
+   <field name='InterestAtMaturity' required='N' />
+   <field name='EndAccruedInterestAmt' required='N' />
+   <field name='StartCash' required='N' />
+   <field name='EndCash' required='N' />
+   <field name='LegalConfirm' required='N' />
+   <component name='Stipulations' required='N' />
+   <component name='YieldData' required='N' />
+   <field name='TotNoAllocs' required='N' />
+   <field name='LastFragment' required='N' />
+   <group name='NoAllocs' required='N'>
+    <field name='AllocAccount' required='N' />
+    <field name='AllocAcctIDSource' required='N' />
+    <field name='MatchStatus' required='N' />
+    <field name='AllocPrice' required='N' />
+    <field name='AllocQty' required='N' />
+    <field name='IndividualAllocID' required='N' />
+    <field name='ProcessCode' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='NotifyBrokerOfCredit' required='N' />
+    <field name='AllocHandlInst' required='N' />
+    <field name='AllocText' required='N' />
+    <field name='EncodedAllocTextLen' required='N' />
+    <field name='EncodedAllocText' required='N' />
+    <component name='CommissionData' required='N' />
+    <field name='AllocAvgPx' required='N' />
+    <field name='AllocNetMoney' required='N' />
+    <field name='SettlCurrAmt' required='N' />
+    <field name='AllocSettlCurrAmt' required='N' />
+    <field name='SettlCurrency' required='N' />
+    <field name='AllocSettlCurrency' required='N' />
+    <field name='SettlCurrFxRate' required='N' />
+    <field name='SettlCurrFxRateCalc' required='N' />
+    <field name='AllocAccruedInterestAmt' required='N' />
+    <field name='AllocInterestAtMaturity' required='N' />
+    <group name='NoMiscFees' required='N'>
+     <field name='MiscFeeAmt' required='N' />
+     <field name='MiscFeeCurr' required='N' />
+     <field name='MiscFeeType' required='N' />
+     <field name='MiscFeeBasis' required='N' />
+    </group>
+    <group name='NoClearingInstructions' required='N'>
+     <field name='ClearingInstruction' required='N' />
+    </group>
+    <field name='ClearingFeeIndicator' required='N' />
+    <field name='AllocSettlInstType' required='N' />
+    <component name='SettlInstructionsData' required='N' />
+   </group>
+  </message>
+  <message name='ListCancelRequest' msgcat='app' msgtype='K'>
+   <field name='ListID' required='Y' />
+   <field name='TransactTime' required='Y' />
+   <field name='TradeOriginationDate' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='ListExecute' msgcat='app' msgtype='L'>
+   <field name='ListID' required='Y' />
+   <field name='ClientBidID' required='N' />
+   <field name='BidID' required='N' />
+   <field name='TransactTime' required='Y' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='ListStatusRequest' msgcat='app' msgtype='M'>
+   <field name='ListID' required='Y' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='ListStatus' msgcat='app' msgtype='N'>
+   <field name='ListID' required='Y' />
+   <field name='ListStatusType' required='Y' />
+   <field name='NoRpts' required='Y' />
+   <field name='ListOrderStatus' required='Y' />
+   <field name='RptSeq' required='Y' />
+   <field name='ListStatusText' required='N' />
+   <field name='EncodedListStatusTextLen' required='N' />
+   <field name='EncodedListStatusText' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='TotNoOrders' required='Y' />
+   <field name='LastFragment' required='N' />
+   <group name='NoOrders' required='Y'>
+    <field name='ClOrdID' required='Y' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='CumQty' required='Y' />
+    <field name='OrdStatus' required='Y' />
+    <field name='WorkingIndicator' required='N' />
+    <field name='LeavesQty' required='Y' />
+    <field name='CxlQty' required='Y' />
+    <field name='AvgPx' required='Y' />
+    <field name='OrdRejReason' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+  </message>
+  <message name='AllocationInstructionAck' msgcat='app' msgtype='P'>
+   <field name='AllocID' required='Y' />
+   <component name='Parties' required='N' />
+   <field name='SecondaryAllocID' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='TransactTime' required='Y' />
+   <field name='AllocStatus' required='Y' />
+   <field name='AllocRejCode' required='N' />
+   <field name='AllocType' required='N' />
+   <field name='AllocIntermedReqType' required='N' />
+   <field name='MatchStatus' required='N' />
+   <field name='Product' required='N' />
+   <field name='SecurityType' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <group name='NoAllocs' required='N'>
+    <field name='AllocAccount' required='N' />
+    <field name='AllocAcctIDSource' required='N' />
+    <field name='AllocPrice' required='N' />
+    <field name='IndividualAllocID' required='N' />
+    <field name='IndividualAllocRejCode' required='N' />
+    <field name='AllocText' required='N' />
+    <field name='EncodedAllocTextLen' required='N' />
+    <field name='EncodedAllocText' required='N' />
+   </group>
+  </message>
+  <message name='DontKnowTrade' msgcat='app' msgtype='Q'>
+   <field name='OrderID' required='Y' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='ExecID' required='Y' />
+   <field name='DKReason' required='Y' />
+   <component name='Instrument' required='Y' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='Side' required='Y' />
+   <component name='OrderQtyData' required='Y' />
+   <field name='LastQty' required='N' />
+   <field name='LastPx' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='QuoteRequest' msgcat='app' msgtype='R'>
+   <field name='QuoteReqID' required='Y' />
+   <field name='RFQReqID' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='OrderCapacity' required='N' />
+   <group name='NoRelatedSym' required='Y'>
+    <component name='Instrument' required='Y' />
+    <component name='FinancingDetails' required='N' />
+    <group name='NoUnderlyings' required='N'>
+     <component name='UnderlyingInstrument' required='N' />
+    </group>
+    <field name='PrevClosePx' required='N' />
+    <field name='QuoteRequestType' required='N' />
+    <field name='QuoteType' required='N' />
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+    <field name='TradeOriginationDate' required='N' />
+    <field name='Side' required='N' />
+    <field name='QtyType' required='N' />
+    <component name='OrderQtyData' required='N' />
+    <field name='SettlType' required='N' />
+    <field name='SettlDate' required='N' />
+    <field name='SettlDate2' required='N' />
+    <field name='OrderQty2' required='N' />
+    <field name='Currency' required='N' />
+    <component name='Stipulations' required='N' />
+    <field name='Account' required='N' />
+    <field name='AcctIDSource' required='N' />
+    <field name='AccountType' required='N' />
+    <group name='NoLegs' required='N'>
+     <component name='InstrumentLeg' required='N' />
+     <field name='LegQty' required='N' />
+     <field name='LegSwapType' required='N' />
+     <field name='LegSettlType' required='N' />
+     <field name='LegSettlDate' required='N' />
+     <component name='LegStipulations' required='N' />
+     <component name='NestedParties' required='N' />
+     <component name='LegBenchmarkCurveData' required='N' />
+    </group>
+    <group name='NoQuoteQualifiers' required='N'>
+     <field name='QuoteQualifier' required='N' />
+    </group>
+    <field name='QuotePriceType' required='N' />
+    <field name='OrdType' required='N' />
+    <field name='ValidUntilTime' required='N' />
+    <field name='ExpireTime' required='N' />
+    <field name='TransactTime' required='N' />
+    <component name='SpreadOrBenchmarkCurveData' required='N' />
+    <field name='PriceType' required='N' />
+    <field name='Price' required='N' />
+    <field name='Price2' required='N' />
+    <component name='YieldData' required='N' />
+    <component name='Parties' required='N' />
+   </group>
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='Quote' msgcat='app' msgtype='S'>
+   <field name='QuoteReqID' required='N' />
+   <field name='QuoteID' required='Y' />
+   <field name='QuoteRespID' required='N' />
+   <field name='QuoteType' required='N' />
+   <group name='NoQuoteQualifiers' required='N'>
+    <field name='QuoteQualifier' required='N' />
+   </group>
+   <field name='QuoteResponseLevel' required='N' />
+   <component name='Parties' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Side' required='N' />
+   <component name='OrderQtyData' required='N' />
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='SettlDate2' required='N' />
+   <field name='OrderQty2' required='N' />
+   <field name='Currency' required='N' />
+   <component name='Stipulations' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+    <field name='LegQty' required='N' />
+    <field name='LegSwapType' required='N' />
+    <field name='LegSettlType' required='N' />
+    <field name='LegSettlDate' required='N' />
+    <component name='LegStipulations' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='LegPriceType' required='N' />
+    <field name='LegBidPx' required='N' />
+    <field name='LegOfferPx' required='N' />
+    <component name='LegBenchmarkCurveData' required='N' />
+   </group>
+   <field name='BidPx' required='N' />
+   <field name='OfferPx' required='N' />
+   <field name='MktBidPx' required='N' />
+   <field name='MktOfferPx' required='N' />
+   <field name='MinBidSize' required='N' />
+   <field name='BidSize' required='N' />
+   <field name='MinOfferSize' required='N' />
+   <field name='OfferSize' required='N' />
+   <field name='ValidUntilTime' required='N' />
+   <field name='BidSpotRate' required='N' />
+   <field name='OfferSpotRate' required='N' />
+   <field name='BidForwardPoints' required='N' />
+   <field name='OfferForwardPoints' required='N' />
+   <field name='MidPx' required='N' />
+   <field name='BidYield' required='N' />
+   <field name='MidYield' required='N' />
+   <field name='OfferYield' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='OrdType' required='N' />
+   <field name='BidForwardPoints2' required='N' />
+   <field name='OfferForwardPoints2' required='N' />
+   <field name='SettlCurrBidFxRate' required='N' />
+   <field name='SettlCurrOfferFxRate' required='N' />
+   <field name='SettlCurrFxRateCalc' required='N' />
+   <field name='CommType' required='N' />
+   <field name='Commission' required='N' />
+   <field name='CustOrderCapacity' required='N' />
+   <field name='ExDestination' required='N' />
+   <field name='OrderCapacity' required='N' />
+   <field name='PriceType' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='YieldData' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='SettlementInstructions' msgcat='app' msgtype='T'>
+   <field name='SettlInstMsgID' required='Y' />
+   <field name='SettlInstReqID' required='N' />
+   <field name='SettlInstMode' required='Y' />
+   <field name='SettlInstReqRejCode' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='TransactTime' required='Y' />
+   <group name='NoSettlInst' required='N'>
+    <field name='SettlInstID' required='N' />
+    <field name='SettlInstTransType' required='N' />
+    <field name='SettlInstRefID' required='N' />
+    <component name='Parties' required='N' />
+    <field name='Side' required='N' />
+    <field name='Product' required='N' />
+    <field name='SecurityType' required='N' />
+    <field name='CFICode' required='N' />
+    <field name='EffectiveTime' required='N' />
+    <field name='ExpireTime' required='N' />
+    <field name='LastUpdateTime' required='N' />
+    <component name='SettlInstructionsData' required='N' />
+    <field name='PaymentMethod' required='N' />
+    <field name='PaymentRef' required='N' />
+    <field name='CardHolderName' required='N' />
+    <field name='CardNumber' required='N' />
+    <field name='CardStartDate' required='N' />
+    <field name='CardExpDate' required='N' />
+    <field name='CardIssNum' required='N' />
+    <field name='PaymentDate' required='N' />
+    <field name='PaymentRemitterID' required='N' />
+   </group>
+  </message>
+  <message name='MarketDataRequest' msgcat='app' msgtype='V'>
+   <field name='MDReqID' required='Y' />
+   <field name='SubscriptionRequestType' required='Y' />
+   <field name='MarketDepth' required='Y' />
+   <field name='MDUpdateType' required='N' />
+   <field name='AggregatedBook' required='N' />
+   <field name='OpenCloseSettlFlag' required='N' />
+   <field name='Scope' required='N' />
+   <field name='MDImplicitDelete' required='N' />
+   <group name='NoMDEntryTypes' required='Y'>
+    <field name='MDEntryType' required='Y' />
+   </group>
+   <group name='NoRelatedSym' required='Y'>
+    <component name='Instrument' required='Y' />
+    <group name='NoUnderlyings' required='N'>
+     <component name='UnderlyingInstrument' required='N' />
+    </group>
+    <group name='NoLegs' required='N'>
+     <component name='InstrumentLeg' required='N' />
+    </group>
+    <group name='NoTradingSessions' required='N'>
+     <field name='TradingSessionID' required='N' />
+     <field name='TradingSessionSubID' required='N' />
+    </group>
+    <field name='ApplQueueAction' required='N' />
+    <field name='ApplQueueMax' required='N' />
+   </group>
+  </message>
+  <message name='MarketDataSnapshotFullRefresh' msgcat='app' msgtype='W'>
+   <field name='MDReqID' required='N' />
+   <component name='Instrument' required='Y' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='FinancialStatus' required='N' />
+   <field name='CorporateAction' required='N' />
+   <field name='NetChgPrevDay' required='N' />
+   <group name='NoMDEntries' required='Y'>
+    <field name='MDEntryType' required='Y' />
+    <field name='MDEntryPx' required='N' />
+    <field name='Currency' required='N' />
+    <field name='MDEntrySize' required='N' />
+    <field name='MDEntryDate' required='N' />
+    <field name='MDEntryTime' required='N' />
+    <field name='TickDirection' required='N' />
+    <field name='MDMkt' required='N' />
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+    <field name='QuoteCondition' required='N' />
+    <field name='TradeCondition' required='N' />
+    <field name='MDEntryOriginator' required='N' />
+    <field name='LocationID' required='N' />
+    <field name='DeskID' required='N' />
+    <field name='OpenCloseSettlFlag' required='N' />
+    <field name='TimeInForce' required='N' />
+    <field name='ExpireDate' required='N' />
+    <field name='ExpireTime' required='N' />
+    <field name='MinQty' required='N' />
+    <field name='ExecInst' required='N' />
+    <field name='SellerDays' required='N' />
+    <field name='OrderID' required='N' />
+    <field name='QuoteEntryID' required='N' />
+    <field name='MDEntryBuyer' required='N' />
+    <field name='MDEntrySeller' required='N' />
+    <field name='NumberOfOrders' required='N' />
+    <field name='MDEntryPositionNo' required='N' />
+    <field name='Scope' required='N' />
+    <field name='PriceDelta' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+   <field name='ApplQueueDepth' required='N' />
+   <field name='ApplQueueResolution' required='N' />
+  </message>
+  <message name='MarketDataIncrementalRefresh' msgcat='app' msgtype='X'>
+   <field name='MDReqID' required='N' />
+   <group name='NoMDEntries' required='Y'>
+    <field name='MDUpdateAction' required='Y' />
+    <field name='DeleteReason' required='N' />
+    <field name='MDEntryType' required='N' />
+    <field name='MDEntryID' required='N' />
+    <field name='MDEntryRefID' required='N' />
+    <component name='Instrument' required='N' />
+    <group name='NoUnderlyings' required='N'>
+     <component name='UnderlyingInstrument' required='N' />
+    </group>
+    <group name='NoLegs' required='N'>
+     <component name='InstrumentLeg' required='N' />
+    </group>
+    <field name='FinancialStatus' required='N' />
+    <field name='CorporateAction' required='N' />
+    <field name='MDEntryPx' required='N' />
+    <field name='Currency' required='N' />
+    <field name='MDEntrySize' required='N' />
+    <field name='MDEntryDate' required='N' />
+    <field name='MDEntryTime' required='N' />
+    <field name='TickDirection' required='N' />
+    <field name='MDMkt' required='N' />
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+    <field name='QuoteCondition' required='N' />
+    <field name='TradeCondition' required='N' />
+    <field name='MDEntryOriginator' required='N' />
+    <field name='LocationID' required='N' />
+    <field name='DeskID' required='N' />
+    <field name='OpenCloseSettlFlag' required='N' />
+    <field name='TimeInForce' required='N' />
+    <field name='ExpireDate' required='N' />
+    <field name='ExpireTime' required='N' />
+    <field name='MinQty' required='N' />
+    <field name='ExecInst' required='N' />
+    <field name='SellerDays' required='N' />
+    <field name='OrderID' required='N' />
+    <field name='QuoteEntryID' required='N' />
+    <field name='MDEntryBuyer' required='N' />
+    <field name='MDEntrySeller' required='N' />
+    <field name='NumberOfOrders' required='N' />
+    <field name='MDEntryPositionNo' required='N' />
+    <field name='Scope' required='N' />
+    <field name='PriceDelta' required='N' />
+    <field name='NetChgPrevDay' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+   <field name='ApplQueueDepth' required='N' />
+   <field name='ApplQueueResolution' required='N' />
+  </message>
+  <message name='MarketDataRequestReject' msgcat='app' msgtype='Y'>
+   <field name='MDReqID' required='Y' />
+   <field name='MDReqRejReason' required='N' />
+   <group name='NoAltMDSource' required='N'>
+    <field name='AltMDSourceID' required='N' />
+   </group>
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='QuoteCancel' msgcat='app' msgtype='Z'>
+   <field name='QuoteReqID' required='N' />
+   <field name='QuoteID' required='Y' />
+   <field name='QuoteCancelType' required='Y' />
+   <field name='QuoteResponseLevel' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <group name='NoQuoteEntries' required='N'>
+    <component name='Instrument' required='N' />
+    <component name='FinancingDetails' required='N' />
+    <group name='NoUnderlyings' required='N'>
+     <component name='UnderlyingInstrument' required='N' />
+    </group>
+    <group name='NoLegs' required='N'>
+     <component name='InstrumentLeg' required='N' />
+    </group>
+   </group>
+  </message>
+  <message name='QuoteStatusRequest' msgcat='app' msgtype='a'>
+   <field name='QuoteStatusReqID' required='N' />
+   <field name='QuoteID' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='SubscriptionRequestType' required='N' />
+  </message>
+  <message name='MassQuoteAcknowledgement' msgcat='app' msgtype='b'>
+   <field name='QuoteReqID' required='N' />
+   <field name='QuoteID' required='N' />
+   <field name='QuoteStatus' required='Y' />
+   <field name='QuoteRejectReason' required='N' />
+   <field name='QuoteResponseLevel' required='N' />
+   <field name='QuoteType' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <group name='NoQuoteSets' required='N'>
+    <field name='QuoteSetID' required='N' />
+    <component name='UnderlyingInstrument' required='N' />
+    <field name='TotNoQuoteEntries' required='N' />
+    <field name='LastFragment' required='N' />
+    <group name='NoQuoteEntries' required='N'>
+     <field name='QuoteEntryID' required='N' />
+     <component name='Instrument' required='N' />
+     <group name='NoLegs' required='N'>
+      <component name='InstrumentLeg' required='N' />
+     </group>
+     <field name='BidPx' required='N' />
+     <field name='OfferPx' required='N' />
+     <field name='BidSize' required='N' />
+     <field name='OfferSize' required='N' />
+     <field name='ValidUntilTime' required='N' />
+     <field name='BidSpotRate' required='N' />
+     <field name='OfferSpotRate' required='N' />
+     <field name='BidForwardPoints' required='N' />
+     <field name='OfferForwardPoints' required='N' />
+     <field name='MidPx' required='N' />
+     <field name='BidYield' required='N' />
+     <field name='MidYield' required='N' />
+     <field name='OfferYield' required='N' />
+     <field name='TransactTime' required='N' />
+     <field name='TradingSessionID' required='N' />
+     <field name='TradingSessionSubID' required='N' />
+     <field name='SettlDate' required='N' />
+     <field name='OrdType' required='N' />
+     <field name='SettlDate2' required='N' />
+     <field name='OrderQty2' required='N' />
+     <field name='BidForwardPoints2' required='N' />
+     <field name='OfferForwardPoints2' required='N' />
+     <field name='Currency' required='N' />
+     <field name='QuoteEntryRejectReason' required='N' />
+    </group>
+   </group>
+  </message>
+  <message name='SecurityDefinitionRequest' msgcat='app' msgtype='c'>
+   <field name='SecurityReqID' required='Y' />
+   <field name='SecurityRequestType' required='Y' />
+   <component name='Instrument' required='N' />
+   <component name='InstrumentExtension' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Currency' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='ExpirationCycle' required='N' />
+   <field name='SubscriptionRequestType' required='N' />
+  </message>
+  <message name='SecurityDefinition' msgcat='app' msgtype='d'>
+   <field name='SecurityReqID' required='Y' />
+   <field name='SecurityResponseID' required='Y' />
+   <field name='SecurityResponseType' required='Y' />
+   <component name='Instrument' required='N' />
+   <component name='InstrumentExtension' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Currency' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='ExpirationCycle' required='N' />
+   <field name='RoundLot' required='N' />
+   <field name='MinTradeVol' required='N' />
+  </message>
+  <message name='SecurityStatusRequest' msgcat='app' msgtype='e'>
+   <field name='SecurityStatusReqID' required='Y' />
+   <component name='Instrument' required='Y' />
+   <component name='InstrumentExtension' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='Currency' required='N' />
+   <field name='SubscriptionRequestType' required='Y' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+  </message>
+  <message name='SecurityStatus' msgcat='app' msgtype='f'>
+   <field name='SecurityStatusReqID' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='InstrumentExtension' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='Currency' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='UnsolicitedIndicator' required='N' />
+   <field name='SecurityTradingStatus' required='N' />
+   <field name='FinancialStatus' required='N' />
+   <field name='CorporateAction' required='N' />
+   <field name='HaltReasonChar' required='N' />
+   <field name='InViewOfCommon' required='N' />
+   <field name='DueToRelated' required='N' />
+   <field name='BuyVolume' required='N' />
+   <field name='SellVolume' required='N' />
+   <field name='HighPx' required='N' />
+   <field name='LowPx' required='N' />
+   <field name='LastPx' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='Adjustment' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='TradingSessionStatusRequest' msgcat='app' msgtype='g'>
+   <field name='TradSesReqID' required='Y' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='TradSesMethod' required='N' />
+   <field name='TradSesMode' required='N' />
+   <field name='SubscriptionRequestType' required='Y' />
+  </message>
+  <message name='TradingSessionStatus' msgcat='app' msgtype='h'>
+   <field name='TradSesReqID' required='N' />
+   <field name='TradingSessionID' required='Y' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='TradSesMethod' required='N' />
+   <field name='TradSesMode' required='N' />
+   <field name='UnsolicitedIndicator' required='N' />
+   <field name='TradSesStatus' required='Y' />
+   <field name='TradSesStatusRejReason' required='N' />
+   <field name='TradSesStartTime' required='N' />
+   <field name='TradSesOpenTime' required='N' />
+   <field name='TradSesPreCloseTime' required='N' />
+   <field name='TradSesCloseTime' required='N' />
+   <field name='TradSesEndTime' required='N' />
+   <field name='TotalVolumeTraded' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='MassQuote' msgcat='app' msgtype='i'>
+   <field name='QuoteReqID' required='N' />
+   <field name='QuoteID' required='N' />
+   <field name='QuoteType' required='N' />
+   <field name='QuoteResponseLevel' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='DefBidSize' required='N' />
+   <field name='DefOfferSize' required='N' />
+   <group name='NoQuoteSets' required='Y'>
+    <field name='QuoteSetID' required='Y' />
+    <component name='UnderlyingInstrument' required='N' />
+    <field name='QuoteSetValidUntilTime' required='N' />
+    <field name='TotNoQuoteEntries' required='N' />
+    <field name='LastFragment' required='N' />
+    <group name='NoQuoteEntries' required='Y'>
+     <field name='QuoteEntryID' required='Y' />
+     <component name='Instrument' required='N' />
+     <group name='NoLegs' required='N'>
+      <component name='InstrumentLeg' required='N' />
+     </group>
+     <field name='BidPx' required='N' />
+     <field name='OfferPx' required='N' />
+     <field name='BidSize' required='N' />
+     <field name='OfferSize' required='N' />
+     <field name='ValidUntilTime' required='N' />
+     <field name='BidSpotRate' required='N' />
+     <field name='OfferSpotRate' required='N' />
+     <field name='BidForwardPoints' required='N' />
+     <field name='OfferForwardPoints' required='N' />
+     <field name='MidPx' required='N' />
+     <field name='BidYield' required='N' />
+     <field name='MidYield' required='N' />
+     <field name='OfferYield' required='N' />
+     <field name='TransactTime' required='N' />
+     <field name='TradingSessionID' required='N' />
+     <field name='TradingSessionSubID' required='N' />
+     <field name='SettlDate' required='N' />
+     <field name='OrdType' required='N' />
+     <field name='SettlDate2' required='N' />
+     <field name='OrderQty2' required='N' />
+     <field name='BidForwardPoints2' required='N' />
+     <field name='OfferForwardPoints2' required='N' />
+     <field name='Currency' required='N' />
+    </group>
+   </group>
+  </message>
+  <message name='BusinessMessageReject' msgcat='app' msgtype='j'>
+   <field name='RefSeqNum' required='N' />
+   <field name='RefMsgType' required='Y' />
+   <field name='BusinessRejectRefID' required='N' />
+   <field name='BusinessRejectReason' required='Y' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='BidRequest' msgcat='app' msgtype='k'>
+   <field name='BidID' required='N' />
+   <field name='ClientBidID' required='Y' />
+   <field name='BidRequestTransType' required='Y' />
+   <field name='ListName' required='N' />
+   <field name='TotNoRelatedSym' required='Y' />
+   <field name='BidType' required='Y' />
+   <field name='NumTickets' required='N' />
+   <field name='Currency' required='N' />
+   <field name='SideValue1' required='N' />
+   <field name='SideValue2' required='N' />
+   <group name='NoBidDescriptors' required='N'>
+    <field name='BidDescriptorType' required='N' />
+    <field name='BidDescriptor' required='N' />
+    <field name='SideValueInd' required='N' />
+    <field name='LiquidityValue' required='N' />
+    <field name='LiquidityNumSecurities' required='N' />
+    <field name='LiquidityPctLow' required='N' />
+    <field name='LiquidityPctHigh' required='N' />
+    <field name='EFPTrackingError' required='N' />
+    <field name='FairValue' required='N' />
+    <field name='OutsideIndexPct' required='N' />
+    <field name='ValueOfFutures' required='N' />
+   </group>
+   <group name='NoBidComponents' required='N'>
+    <field name='ListID' required='N' />
+    <field name='Side' required='N' />
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+    <field name='NetGrossInd' required='N' />
+    <field name='SettlType' required='N' />
+    <field name='SettlDate' required='N' />
+    <field name='Account' required='N' />
+    <field name='AcctIDSource' required='N' />
+   </group>
+   <field name='LiquidityIndType' required='N' />
+   <field name='WtAverageLiquidity' required='N' />
+   <field name='ExchangeForPhysical' required='N' />
+   <field name='OutMainCntryUIndex' required='N' />
+   <field name='CrossPercent' required='N' />
+   <field name='ProgRptReqs' required='N' />
+   <field name='ProgPeriodInterval' required='N' />
+   <field name='IncTaxInd' required='N' />
+   <field name='ForexReq' required='N' />
+   <field name='NumBidders' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='BidTradeType' required='Y' />
+   <field name='BasisPxType' required='Y' />
+   <field name='StrikeTime' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='BidResponse' msgcat='app' msgtype='l'>
+   <field name='BidID' required='N' />
+   <field name='ClientBidID' required='N' />
+   <group name='NoBidComponents' required='Y'>
+    <component name='CommissionData' required='Y' />
+    <field name='ListID' required='N' />
+    <field name='Country' required='N' />
+    <field name='Side' required='N' />
+    <field name='Price' required='N' />
+    <field name='PriceType' required='N' />
+    <field name='FairValue' required='N' />
+    <field name='NetGrossInd' required='N' />
+    <field name='SettlType' required='N' />
+    <field name='SettlDate' required='N' />
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+  </message>
+  <message name='ListStrikePrice' msgcat='app' msgtype='m'>
+   <field name='ListID' required='Y' />
+   <field name='TotNoStrikes' required='Y' />
+   <field name='LastFragment' required='N' />
+   <group name='NoStrikes' required='Y'>
+    <component name='Instrument' required='Y' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+    <field name='PrevClosePx' required='N' />
+    <field name='ClOrdID' required='N' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='Side' required='N' />
+    <field name='Price' required='Y' />
+    <field name='Currency' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+  </message>
+  <message name='RegistrationInstructions' msgcat='app' msgtype='o'>
+   <field name='RegistID' required='Y' />
+   <field name='RegistTransType' required='Y' />
+   <field name='RegistRefID' required='Y' />
+   <field name='ClOrdID' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='RegistAcctType' required='N' />
+   <field name='TaxAdvantageType' required='N' />
+   <field name='OwnershipType' required='N' />
+   <group name='NoRegistDtls' required='N'>
+    <field name='RegistDtls' required='N' />
+    <field name='RegistEmail' required='N' />
+    <field name='MailingDtls' required='N' />
+    <field name='MailingInst' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='OwnerType' required='N' />
+    <field name='DateOfBirth' required='N' />
+    <field name='InvestorCountryOfResidence' required='N' />
+   </group>
+   <group name='NoDistribInsts' required='N'>
+    <field name='DistribPaymentMethod' required='N' />
+    <field name='DistribPercentage' required='N' />
+    <field name='CashDistribCurr' required='N' />
+    <field name='CashDistribAgentName' required='N' />
+    <field name='CashDistribAgentCode' required='N' />
+    <field name='CashDistribAgentAcctNumber' required='N' />
+    <field name='CashDistribPayRef' required='N' />
+    <field name='CashDistribAgentAcctName' required='N' />
+   </group>
+  </message>
+  <message name='RegistrationInstructionsResponse' msgcat='app' msgtype='p'>
+   <field name='RegistID' required='Y' />
+   <field name='RegistTransType' required='Y' />
+   <field name='RegistRefID' required='Y' />
+   <field name='ClOrdID' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='RegistStatus' required='Y' />
+   <field name='RegistRejReasonCode' required='N' />
+   <field name='RegistRejReasonText' required='N' />
+  </message>
+  <message name='OrderMassCancelRequest' msgcat='app' msgtype='q'>
+   <field name='ClOrdID' required='Y' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='MassCancelRequestType' required='Y' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <component name='Instrument' required='N' />
+   <component name='UnderlyingInstrument' required='N' />
+   <field name='Side' required='N' />
+   <field name='TransactTime' required='Y' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='OrderMassCancelReport' msgcat='app' msgtype='r'>
+   <field name='ClOrdID' required='N' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='OrderID' required='Y' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='MassCancelRequestType' required='Y' />
+   <field name='MassCancelResponse' required='Y' />
+   <field name='MassCancelRejectReason' required='N' />
+   <field name='TotalAffectedOrders' required='N' />
+   <group name='NoAffectedOrders' required='N'>
+    <field name='OrigClOrdID' required='N' />
+    <field name='AffectedOrderID' required='N' />
+    <field name='AffectedSecondaryOrderID' required='N' />
+   </group>
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <component name='Instrument' required='N' />
+   <component name='UnderlyingInstrument' required='N' />
+   <field name='Side' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='NewOrderCross' msgcat='app' msgtype='s'>
+   <field name='CrossID' required='Y' />
+   <field name='CrossType' required='Y' />
+   <field name='CrossPrioritization' required='Y' />
+   <group name='NoSides' required='Y'>
+    <field name='Side' required='Y' />
+    <field name='ClOrdID' required='Y' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='ClOrdLinkID' required='N' />
+    <component name='Parties' required='N' />
+    <field name='TradeOriginationDate' required='N' />
+    <field name='TradeDate' required='N' />
+    <field name='Account' required='N' />
+    <field name='AcctIDSource' required='N' />
+    <field name='AccountType' required='N' />
+    <field name='DayBookingInst' required='N' />
+    <field name='BookingUnit' required='N' />
+    <field name='PreallocMethod' required='N' />
+    <field name='AllocID' required='N' />
+    <group name='NoAllocs' required='N'>
+     <field name='AllocAccount' required='N' />
+     <field name='AllocAcctIDSource' required='N' />
+     <field name='AllocSettlCurrency' required='N' />
+     <field name='IndividualAllocID' required='N' />
+     <component name='NestedParties' required='N' />
+     <field name='AllocQty' required='N' />
+    </group>
+    <field name='QtyType' required='N' />
+    <component name='OrderQtyData' required='Y' />
+    <component name='CommissionData' required='N' />
+    <field name='OrderCapacity' required='N' />
+    <field name='OrderRestrictions' required='N' />
+    <field name='CustOrderCapacity' required='N' />
+    <field name='ForexReq' required='N' />
+    <field name='SettlCurrency' required='N' />
+    <field name='BookingType' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+    <field name='PositionEffect' required='N' />
+    <field name='CoveredOrUncovered' required='N' />
+    <field name='CashMargin' required='N' />
+    <field name='ClearingFeeIndicator' required='N' />
+    <field name='SolicitedFlag' required='N' />
+    <field name='SideComplianceID' required='N' />
+   </group>
+   <component name='Instrument' required='Y' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='HandlInst' required='N' />
+   <field name='ExecInst' required='N' />
+   <field name='MinQty' required='N' />
+   <field name='MaxFloor' required='N' />
+   <field name='ExDestination' required='N' />
+   <group name='NoTradingSessions' required='N'>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <field name='ProcessCode' required='N' />
+   <field name='PrevClosePx' required='N' />
+   <field name='LocateReqd' required='N' />
+   <field name='TransactTime' required='Y' />
+   <component name='Stipulations' required='N' />
+   <field name='OrdType' required='Y' />
+   <field name='PriceType' required='N' />
+   <field name='Price' required='N' />
+   <field name='StopPx' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='YieldData' required='N' />
+   <field name='Currency' required='N' />
+   <field name='ComplianceID' required='N' />
+   <field name='IOIID' required='N' />
+   <field name='QuoteID' required='N' />
+   <field name='TimeInForce' required='N' />
+   <field name='EffectiveTime' required='N' />
+   <field name='ExpireDate' required='N' />
+   <field name='ExpireTime' required='N' />
+   <field name='GTBookingInst' required='N' />
+   <field name='MaxShow' required='N' />
+   <component name='PegInstructions' required='N' />
+   <component name='DiscretionInstructions' required='N' />
+   <field name='TargetStrategy' required='N' />
+   <field name='TargetStrategyParameters' required='N' />
+   <field name='ParticipationRate' required='N' />
+   <field name='CancellationRights' required='N' />
+   <field name='MoneyLaunderingStatus' required='N' />
+   <field name='RegistID' required='N' />
+   <field name='Designation' required='N' />
+  </message>
+  <message name='CrossOrderCancelReplaceRequest' msgcat='app' msgtype='t'>
+   <field name='OrderID' required='N' />
+   <field name='CrossID' required='Y' />
+   <field name='OrigCrossID' required='Y' />
+   <field name='CrossType' required='Y' />
+   <field name='CrossPrioritization' required='Y' />
+   <group name='NoSides' required='Y'>
+    <field name='Side' required='Y' />
+    <field name='OrigClOrdID' required='Y' />
+    <field name='ClOrdID' required='Y' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='ClOrdLinkID' required='N' />
+    <field name='OrigOrdModTime' required='N' />
+    <component name='Parties' required='N' />
+    <field name='TradeOriginationDate' required='N' />
+    <field name='TradeDate' required='N' />
+    <field name='Account' required='N' />
+    <field name='AcctIDSource' required='N' />
+    <field name='AccountType' required='N' />
+    <field name='DayBookingInst' required='N' />
+    <field name='BookingUnit' required='N' />
+    <field name='PreallocMethod' required='N' />
+    <field name='AllocID' required='N' />
+    <group name='NoAllocs' required='N'>
+     <field name='AllocAccount' required='N' />
+     <field name='AllocAcctIDSource' required='N' />
+     <field name='AllocSettlCurrency' required='N' />
+     <field name='IndividualAllocID' required='N' />
+     <component name='NestedParties' required='N' />
+     <field name='AllocQty' required='N' />
+    </group>
+    <field name='QtyType' required='N' />
+    <component name='OrderQtyData' required='Y' />
+    <component name='CommissionData' required='N' />
+    <field name='OrderCapacity' required='N' />
+    <field name='OrderRestrictions' required='N' />
+    <field name='CustOrderCapacity' required='N' />
+    <field name='ForexReq' required='N' />
+    <field name='SettlCurrency' required='N' />
+    <field name='BookingType' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+    <field name='PositionEffect' required='N' />
+    <field name='CoveredOrUncovered' required='N' />
+    <field name='CashMargin' required='N' />
+    <field name='ClearingFeeIndicator' required='N' />
+    <field name='SolicitedFlag' required='N' />
+    <field name='SideComplianceID' required='N' />
+   </group>
+   <component name='Instrument' required='Y' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='HandlInst' required='N' />
+   <field name='ExecInst' required='N' />
+   <field name='MinQty' required='N' />
+   <field name='MaxFloor' required='N' />
+   <field name='ExDestination' required='N' />
+   <group name='NoTradingSessions' required='N'>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <field name='ProcessCode' required='N' />
+   <field name='PrevClosePx' required='N' />
+   <field name='LocateReqd' required='N' />
+   <field name='TransactTime' required='Y' />
+   <component name='Stipulations' required='N' />
+   <field name='OrdType' required='Y' />
+   <field name='PriceType' required='N' />
+   <field name='Price' required='N' />
+   <field name='StopPx' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='YieldData' required='N' />
+   <field name='Currency' required='N' />
+   <field name='ComplianceID' required='N' />
+   <field name='IOIID' required='N' />
+   <field name='QuoteID' required='N' />
+   <field name='TimeInForce' required='N' />
+   <field name='EffectiveTime' required='N' />
+   <field name='ExpireDate' required='N' />
+   <field name='ExpireTime' required='N' />
+   <field name='GTBookingInst' required='N' />
+   <field name='MaxShow' required='N' />
+   <component name='PegInstructions' required='N' />
+   <component name='DiscretionInstructions' required='N' />
+   <field name='TargetStrategy' required='N' />
+   <field name='TargetStrategyParameters' required='N' />
+   <field name='ParticipationRate' required='N' />
+   <field name='CancellationRights' required='N' />
+   <field name='MoneyLaunderingStatus' required='N' />
+   <field name='RegistID' required='N' />
+   <field name='Designation' required='N' />
+  </message>
+  <message name='CrossOrderCancelRequest' msgcat='app' msgtype='u'>
+   <field name='OrderID' required='N' />
+   <field name='CrossID' required='Y' />
+   <field name='OrigCrossID' required='Y' />
+   <field name='CrossType' required='Y' />
+   <field name='CrossPrioritization' required='Y' />
+   <group name='NoSides' required='Y'>
+    <field name='Side' required='Y' />
+    <field name='OrigClOrdID' required='Y' />
+    <field name='ClOrdID' required='Y' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='ClOrdLinkID' required='N' />
+    <field name='OrigOrdModTime' required='N' />
+    <component name='Parties' required='N' />
+    <field name='TradeOriginationDate' required='N' />
+    <field name='TradeDate' required='N' />
+    <component name='OrderQtyData' required='Y' />
+    <field name='ComplianceID' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+   <component name='Instrument' required='Y' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='TransactTime' required='Y' />
+  </message>
+  <message name='SecurityTypeRequest' msgcat='app' msgtype='v'>
+   <field name='SecurityReqID' required='Y' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='Product' required='N' />
+   <field name='SecurityType' required='N' />
+   <field name='SecuritySubType' required='N' />
+  </message>
+  <message name='SecurityTypes' msgcat='app' msgtype='w'>
+   <field name='SecurityReqID' required='Y' />
+   <field name='SecurityResponseID' required='Y' />
+   <field name='SecurityResponseType' required='Y' />
+   <field name='TotNoSecurityTypes' required='N' />
+   <field name='LastFragment' required='N' />
+   <group name='NoSecurityTypes' required='N'>
+    <field name='SecurityType' required='N' />
+    <field name='SecuritySubType' required='N' />
+    <field name='Product' required='N' />
+    <field name='CFICode' required='N' />
+   </group>
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='SubscriptionRequestType' required='N' />
+  </message>
+  <message name='SecurityListRequest' msgcat='app' msgtype='x'>
+   <field name='SecurityReqID' required='Y' />
+   <field name='SecurityListRequestType' required='Y' />
+   <component name='Instrument' required='N' />
+   <component name='InstrumentExtension' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='Currency' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='SubscriptionRequestType' required='N' />
+  </message>
+  <message name='SecurityList' msgcat='app' msgtype='y'>
+   <field name='SecurityReqID' required='Y' />
+   <field name='SecurityResponseID' required='Y' />
+   <field name='SecurityRequestResult' required='Y' />
+   <field name='TotNoRelatedSym' required='N' />
+   <field name='LastFragment' required='N' />
+   <group name='NoRelatedSym' required='N'>
+    <component name='Instrument' required='N' />
+    <component name='InstrumentExtension' required='N' />
+    <component name='FinancingDetails' required='N' />
+    <group name='NoUnderlyings' required='N'>
+     <component name='UnderlyingInstrument' required='N' />
+    </group>
+    <field name='Currency' required='N' />
+    <component name='Stipulations' required='N' />
+    <group name='NoLegs' required='N'>
+     <component name='InstrumentLeg' required='N' />
+     <field name='LegSwapType' required='N' />
+     <field name='LegSettlType' required='N' />
+     <component name='LegStipulations' required='N' />
+     <component name='LegBenchmarkCurveData' required='N' />
+    </group>
+    <component name='SpreadOrBenchmarkCurveData' required='N' />
+    <component name='YieldData' required='N' />
+    <field name='RoundLot' required='N' />
+    <field name='MinTradeVol' required='N' />
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+    <field name='ExpirationCycle' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+  </message>
+  <message name='DerivativeSecurityListRequest' msgcat='app' msgtype='z'>
+   <field name='SecurityReqID' required='Y' />
+   <field name='SecurityListRequestType' required='Y' />
+   <component name='UnderlyingInstrument' required='N' />
+   <field name='SecuritySubType' required='N' />
+   <field name='Currency' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='SubscriptionRequestType' required='N' />
+  </message>
+  <message name='DerivativeSecurityList' msgcat='app' msgtype='AA'>
+   <field name='SecurityReqID' required='Y' />
+   <field name='SecurityResponseID' required='Y' />
+   <field name='SecurityRequestResult' required='Y' />
+   <component name='UnderlyingInstrument' required='N' />
+   <field name='TotNoRelatedSym' required='N' />
+   <field name='LastFragment' required='N' />
+   <group name='NoRelatedSym' required='N'>
+    <component name='Instrument' required='N' />
+    <field name='Currency' required='N' />
+    <field name='ExpirationCycle' required='N' />
+    <component name='InstrumentExtension' required='N' />
+    <group name='NoLegs' required='N'>
+     <component name='InstrumentLeg' required='N' />
+    </group>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+   </group>
+  </message>
+  <message name='NewOrderMultileg' msgcat='app' msgtype='AB'>
+   <field name='ClOrdID' required='Y' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='ClOrdLinkID' required='N' />
+   <component name='Parties' required='N' />
+   <field name='TradeOriginationDate' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='DayBookingInst' required='N' />
+   <field name='BookingUnit' required='N' />
+   <field name='PreallocMethod' required='N' />
+   <field name='AllocID' required='N' />
+   <group name='NoAllocs' required='N'>
+    <field name='AllocAccount' required='N' />
+    <field name='AllocAcctIDSource' required='N' />
+    <field name='AllocSettlCurrency' required='N' />
+    <field name='IndividualAllocID' required='N' />
+    <component name='NestedParties3' required='N' />
+    <field name='AllocQty' required='N' />
+   </group>
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='CashMargin' required='N' />
+   <field name='ClearingFeeIndicator' required='N' />
+   <field name='HandlInst' required='N' />
+   <field name='ExecInst' required='N' />
+   <field name='MinQty' required='N' />
+   <field name='MaxFloor' required='N' />
+   <field name='ExDestination' required='N' />
+   <group name='NoTradingSessions' required='N'>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <field name='ProcessCode' required='N' />
+   <field name='Side' required='Y' />
+   <component name='Instrument' required='Y' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='PrevClosePx' required='N' />
+   <group name='NoLegs' required='Y'>
+    <component name='InstrumentLeg' required='N' />
+    <field name='LegQty' required='N' />
+    <field name='LegSwapType' required='N' />
+    <component name='LegStipulations' required='N' />
+    <group name='NoLegAllocs' required='N'>
+     <field name='LegAllocAccount' required='N' />
+     <field name='LegIndividualAllocID' required='N' />
+     <component name='NestedParties2' required='N' />
+     <field name='LegAllocQty' required='N' />
+     <field name='LegAllocAcctIDSource' required='N' />
+     <field name='LegSettlCurrency' required='N' />
+    </group>
+    <field name='LegPositionEffect' required='N' />
+    <field name='LegCoveredOrUncovered' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='LegRefID' required='N' />
+    <field name='LegPrice' required='N' />
+    <field name='LegSettlType' required='N' />
+    <field name='LegSettlDate' required='N' />
+   </group>
+   <field name='LocateReqd' required='N' />
+   <field name='TransactTime' required='Y' />
+   <field name='QtyType' required='N' />
+   <component name='OrderQtyData' required='Y' />
+   <field name='OrdType' required='Y' />
+   <field name='PriceType' required='N' />
+   <field name='Price' required='N' />
+   <field name='StopPx' required='N' />
+   <field name='Currency' required='N' />
+   <field name='ComplianceID' required='N' />
+   <field name='SolicitedFlag' required='N' />
+   <field name='IOIID' required='N' />
+   <field name='QuoteID' required='N' />
+   <field name='TimeInForce' required='N' />
+   <field name='EffectiveTime' required='N' />
+   <field name='ExpireDate' required='N' />
+   <field name='ExpireTime' required='N' />
+   <field name='GTBookingInst' required='N' />
+   <component name='CommissionData' required='N' />
+   <field name='OrderCapacity' required='N' />
+   <field name='OrderRestrictions' required='N' />
+   <field name='CustOrderCapacity' required='N' />
+   <field name='ForexReq' required='N' />
+   <field name='SettlCurrency' required='N' />
+   <field name='BookingType' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='PositionEffect' required='N' />
+   <field name='CoveredOrUncovered' required='N' />
+   <field name='MaxShow' required='N' />
+   <component name='PegInstructions' required='N' />
+   <component name='DiscretionInstructions' required='N' />
+   <field name='TargetStrategy' required='N' />
+   <field name='TargetStrategyParameters' required='N' />
+   <field name='ParticipationRate' required='N' />
+   <field name='CancellationRights' required='N' />
+   <field name='MoneyLaunderingStatus' required='N' />
+   <field name='RegistID' required='N' />
+   <field name='Designation' required='N' />
+   <field name='MultiLegRptTypeReq' required='N' />
+  </message>
+  <message name='MultilegOrderCancelReplace' msgcat='app' msgtype='AC'>
+   <field name='OrderID' required='N' />
+   <field name='OrigClOrdID' required='Y' />
+   <field name='ClOrdID' required='Y' />
+   <field name='SecondaryClOrdID' required='N' />
+   <field name='ClOrdLinkID' required='N' />
+   <field name='OrigOrdModTime' required='N' />
+   <component name='Parties' required='N' />
+   <field name='TradeOriginationDate' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='DayBookingInst' required='N' />
+   <field name='BookingUnit' required='N' />
+   <field name='PreallocMethod' required='N' />
+   <field name='AllocID' required='N' />
+   <group name='NoAllocs' required='N'>
+    <field name='AllocAccount' required='N' />
+    <field name='AllocAcctIDSource' required='N' />
+    <field name='AllocSettlCurrency' required='N' />
+    <field name='IndividualAllocID' required='N' />
+    <component name='NestedParties3' required='N' />
+    <field name='AllocQty' required='N' />
+   </group>
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='CashMargin' required='N' />
+   <field name='ClearingFeeIndicator' required='N' />
+   <field name='HandlInst' required='N' />
+   <field name='ExecInst' required='N' />
+   <field name='MinQty' required='N' />
+   <field name='MaxFloor' required='N' />
+   <field name='ExDestination' required='N' />
+   <group name='NoTradingSessions' required='N'>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <field name='ProcessCode' required='N' />
+   <field name='Side' required='Y' />
+   <component name='Instrument' required='Y' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='PrevClosePx' required='N' />
+   <group name='NoLegs' required='Y'>
+    <component name='InstrumentLeg' required='N' />
+    <field name='LegQty' required='N' />
+    <field name='LegSwapType' required='N' />
+    <component name='LegStipulations' required='N' />
+    <group name='NoLegAllocs' required='N'>
+     <field name='LegAllocAccount' required='N' />
+     <field name='LegIndividualAllocID' required='N' />
+     <component name='NestedParties2' required='N' />
+     <field name='LegAllocQty' required='N' />
+     <field name='LegAllocAcctIDSource' required='N' />
+     <field name='LegSettlCurrency' required='N' />
+    </group>
+    <field name='LegPositionEffect' required='N' />
+    <field name='LegCoveredOrUncovered' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='LegRefID' required='N' />
+    <field name='LegPrice' required='N' />
+    <field name='LegSettlType' required='N' />
+    <field name='LegSettlDate' required='N' />
+   </group>
+   <field name='LocateReqd' required='N' />
+   <field name='TransactTime' required='Y' />
+   <field name='QtyType' required='N' />
+   <component name='OrderQtyData' required='Y' />
+   <field name='OrdType' required='Y' />
+   <field name='PriceType' required='N' />
+   <field name='Price' required='N' />
+   <field name='StopPx' required='N' />
+   <field name='Currency' required='N' />
+   <field name='ComplianceID' required='N' />
+   <field name='SolicitedFlag' required='N' />
+   <field name='IOIID' required='N' />
+   <field name='QuoteID' required='N' />
+   <field name='TimeInForce' required='N' />
+   <field name='EffectiveTime' required='N' />
+   <field name='ExpireDate' required='N' />
+   <field name='ExpireTime' required='N' />
+   <field name='GTBookingInst' required='N' />
+   <component name='CommissionData' required='N' />
+   <field name='OrderCapacity' required='N' />
+   <field name='OrderRestrictions' required='N' />
+   <field name='CustOrderCapacity' required='N' />
+   <field name='ForexReq' required='N' />
+   <field name='SettlCurrency' required='N' />
+   <field name='BookingType' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='PositionEffect' required='N' />
+   <field name='CoveredOrUncovered' required='N' />
+   <field name='MaxShow' required='N' />
+   <component name='PegInstructions' required='N' />
+   <component name='DiscretionInstructions' required='N' />
+   <field name='TargetStrategy' required='N' />
+   <field name='TargetStrategyParameters' required='N' />
+   <field name='ParticipationRate' required='N' />
+   <field name='CancellationRights' required='N' />
+   <field name='MoneyLaunderingStatus' required='N' />
+   <field name='RegistID' required='N' />
+   <field name='Designation' required='N' />
+   <field name='MultiLegRptTypeReq' required='N' />
+  </message>
+  <message name='TradeCaptureReportRequest' msgcat='app' msgtype='AD'>
+   <field name='TradeRequestID' required='Y' />
+   <field name='TradeRequestType' required='Y' />
+   <field name='SubscriptionRequestType' required='N' />
+   <field name='TradeReportID' required='N' />
+   <field name='SecondaryTradeReportID' required='N' />
+   <field name='ExecID' required='N' />
+   <field name='ExecType' required='N' />
+   <field name='OrderID' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='MatchStatus' required='N' />
+   <field name='TrdType' required='N' />
+   <field name='TrdSubType' required='N' />
+   <field name='TransferReason' required='N' />
+   <field name='SecondaryTrdType' required='N' />
+   <field name='TradeLinkID' required='N' />
+   <field name='TrdMatchID' required='N' />
+   <component name='Parties' required='N' />
+   <component name='Instrument' required='N' />
+   <component name='InstrumentExtension' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoDates' required='N'>
+    <field name='TradeDate' required='N' />
+    <field name='TransactTime' required='N' />
+   </group>
+   <field name='ClearingBusinessDate' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='TimeBracket' required='N' />
+   <field name='Side' required='N' />
+   <field name='MultiLegReportingType' required='N' />
+   <field name='TradeInputSource' required='N' />
+   <field name='TradeInputDevice' required='N' />
+   <field name='ResponseTransportType' required='N' />
+   <field name='ResponseDestination' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='TradeCaptureReport' msgcat='app' msgtype='AE'>
+   <field name='TradeReportID' required='Y' />
+   <field name='TradeReportTransType' required='N' />
+   <field name='TradeReportType' required='N' />
+   <field name='TradeRequestID' required='N' />
+   <field name='TrdType' required='N' />
+   <field name='TrdSubType' required='N' />
+   <field name='SecondaryTrdType' required='N' />
+   <field name='TransferReason' required='N' />
+   <field name='ExecType' required='N' />
+   <field name='TotNumTradeReports' required='N' />
+   <field name='LastRptRequested' required='N' />
+   <field name='UnsolicitedIndicator' required='N' />
+   <field name='SubscriptionRequestType' required='N' />
+   <field name='TradeReportRefID' required='N' />
+   <field name='SecondaryTradeReportRefID' required='N' />
+   <field name='SecondaryTradeReportID' required='N' />
+   <field name='TradeLinkID' required='N' />
+   <field name='TrdMatchID' required='N' />
+   <field name='ExecID' required='N' />
+   <field name='OrdStatus' required='N' />
+   <field name='SecondaryExecID' required='N' />
+   <field name='ExecRestatementReason' required='N' />
+   <field name='PreviouslyReported' required='Y' />
+   <field name='PriceType' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <component name='OrderQtyData' required='N' />
+   <field name='QtyType' required='N' />
+   <component name='YieldData' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='UnderlyingTradingSessionID' required='N' />
+   <field name='UnderlyingTradingSessionSubID' required='N' />
+   <field name='LastQty' required='Y' />
+   <field name='LastPx' required='Y' />
+   <field name='LastParPx' required='N' />
+   <field name='LastSpotRate' required='N' />
+   <field name='LastForwardPoints' required='N' />
+   <field name='LastMkt' required='N' />
+   <field name='TradeDate' required='Y' />
+   <field name='ClearingBusinessDate' required='N' />
+   <field name='AvgPx' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <field name='AvgPxIndicator' required='N' />
+   <component name='PositionAmountData' required='N' />
+   <field name='MultiLegReportingType' required='N' />
+   <field name='TradeLegRefID' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+    <field name='LegQty' required='N' />
+    <field name='LegSwapType' required='N' />
+    <component name='LegStipulations' required='N' />
+    <field name='LegPositionEffect' required='N' />
+    <field name='LegCoveredOrUncovered' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='LegRefID' required='N' />
+    <field name='LegPrice' required='N' />
+    <field name='LegSettlType' required='N' />
+    <field name='LegSettlDate' required='N' />
+    <field name='LegLastPx' required='N' />
+   </group>
+   <field name='TransactTime' required='Y' />
+   <component name='TrdRegTimestamps' required='N' />
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='MatchStatus' required='N' />
+   <field name='MatchType' required='N' />
+   <group name='NoSides' required='Y'>
+    <field name='Side' required='Y' />
+    <field name='OrderID' required='Y' />
+    <field name='SecondaryOrderID' required='N' />
+    <field name='ClOrdID' required='N' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='ListID' required='N' />
+    <component name='Parties' required='N' />
+    <field name='Account' required='N' />
+    <field name='AcctIDSource' required='N' />
+    <field name='AccountType' required='N' />
+    <field name='ProcessCode' required='N' />
+    <field name='OddLot' required='N' />
+    <group name='NoClearingInstructions' required='N'>
+     <field name='ClearingInstruction' required='N' />
+    </group>
+    <field name='ClearingFeeIndicator' required='N' />
+    <field name='TradeInputSource' required='N' />
+    <field name='TradeInputDevice' required='N' />
+    <field name='OrderInputDevice' required='N' />
+    <field name='Currency' required='N' />
+    <field name='ComplianceID' required='N' />
+    <field name='SolicitedFlag' required='N' />
+    <field name='OrderCapacity' required='N' />
+    <field name='OrderRestrictions' required='N' />
+    <field name='CustOrderCapacity' required='N' />
+    <field name='OrdType' required='N' />
+    <field name='ExecInst' required='N' />
+    <field name='TransBkdTime' required='N' />
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+    <field name='TimeBracket' required='N' />
+    <component name='CommissionData' required='N' />
+    <field name='GrossTradeAmt' required='N' />
+    <field name='NumDaysInterest' required='N' />
+    <field name='ExDate' required='N' />
+    <field name='AccruedInterestRate' required='N' />
+    <field name='AccruedInterestAmt' required='N' />
+    <field name='InterestAtMaturity' required='N' />
+    <field name='EndAccruedInterestAmt' required='N' />
+    <field name='StartCash' required='N' />
+    <field name='EndCash' required='N' />
+    <field name='Concession' required='N' />
+    <field name='TotalTakedown' required='N' />
+    <field name='NetMoney' required='N' />
+    <field name='SettlCurrAmt' required='N' />
+    <field name='SettlCurrency' required='N' />
+    <field name='SettlCurrFxRate' required='N' />
+    <field name='SettlCurrFxRateCalc' required='N' />
+    <field name='PositionEffect' required='N' />
+    <field name='Text' required='N' />
+    <field name='EncodedTextLen' required='N' />
+    <field name='EncodedText' required='N' />
+    <field name='SideMultiLegReportingType' required='N' />
+    <group name='NoContAmts' required='N'>
+     <field name='ContAmtType' required='N' />
+     <field name='ContAmtValue' required='N' />
+     <field name='ContAmtCurr' required='N' />
+    </group>
+    <component name='Stipulations' required='N' />
+    <group name='NoMiscFees' required='N'>
+     <field name='MiscFeeAmt' required='N' />
+     <field name='MiscFeeCurr' required='N' />
+     <field name='MiscFeeType' required='N' />
+     <field name='MiscFeeBasis' required='N' />
+    </group>
+    <field name='ExchangeRule' required='N' />
+    <field name='TradeAllocIndicator' required='N' />
+    <field name='PreallocMethod' required='N' />
+    <field name='AllocID' required='N' />
+    <group name='NoAllocs' required='N'>
+     <field name='AllocAccount' required='N' />
+     <field name='AllocAcctIDSource' required='N' />
+     <field name='AllocSettlCurrency' required='N' />
+     <field name='IndividualAllocID' required='N' />
+     <component name='NestedParties2' required='N' />
+     <field name='AllocQty' required='N' />
+    </group>
+    <field name='CopyMsgIndicator' required='N' />
+    <field name='PublishTrdIndicator' required='N' />
+    <field name='ShortSaleReason' required='N' />
+   </group>
+  </message>
+  <message name='OrderMassStatusRequest' msgcat='app' msgtype='AF'>
+   <field name='MassStatusReqID' required='Y' />
+   <field name='MassStatusReqType' required='Y' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <component name='Instrument' required='N' />
+   <component name='UnderlyingInstrument' required='N' />
+   <field name='Side' required='N' />
+  </message>
+  <message name='QuoteRequestReject' msgcat='app' msgtype='AG'>
+   <field name='QuoteReqID' required='Y' />
+   <field name='RFQReqID' required='N' />
+   <field name='QuoteRequestRejectReason' required='Y' />
+   <group name='NoRelatedSym' required='Y'>
+    <component name='Instrument' required='Y' />
+    <component name='FinancingDetails' required='N' />
+    <group name='NoUnderlyings' required='N'>
+     <component name='UnderlyingInstrument' required='N' />
+    </group>
+    <field name='PrevClosePx' required='N' />
+    <field name='QuoteRequestType' required='N' />
+    <field name='QuoteType' required='N' />
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+    <field name='TradeOriginationDate' required='N' />
+    <field name='Side' required='N' />
+    <field name='QtyType' required='N' />
+    <component name='OrderQtyData' required='N' />
+    <field name='SettlType' required='N' />
+    <field name='SettlDate' required='N' />
+    <field name='SettlDate2' required='N' />
+    <field name='OrderQty2' required='N' />
+    <field name='Currency' required='N' />
+    <component name='Stipulations' required='N' />
+    <field name='Account' required='N' />
+    <field name='AcctIDSource' required='N' />
+    <field name='AccountType' required='N' />
+    <group name='NoLegs' required='N'>
+     <component name='InstrumentLeg' required='N' />
+     <field name='LegQty' required='N' />
+     <field name='LegSwapType' required='N' />
+     <field name='LegSettlType' required='N' />
+     <field name='LegSettlDate' required='N' />
+     <component name='LegStipulations' required='N' />
+     <component name='NestedParties' required='N' />
+     <component name='LegBenchmarkCurveData' required='N' />
+    </group>
+    <group name='NoQuoteQualifiers' required='N'>
+     <field name='QuoteQualifier' required='N' />
+    </group>
+    <field name='QuotePriceType' required='N' />
+    <field name='OrdType' required='N' />
+    <field name='ExpireTime' required='N' />
+    <field name='TransactTime' required='N' />
+    <component name='SpreadOrBenchmarkCurveData' required='N' />
+    <field name='PriceType' required='N' />
+    <field name='Price' required='N' />
+    <field name='Price2' required='N' />
+    <component name='YieldData' required='N' />
+    <component name='Parties' required='N' />
+   </group>
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='RFQRequest' msgcat='app' msgtype='AH'>
+   <field name='RFQReqID' required='Y' />
+   <group name='NoRelatedSym' required='Y'>
+    <component name='Instrument' required='Y' />
+    <group name='NoUnderlyings' required='N'>
+     <component name='UnderlyingInstrument' required='N' />
+    </group>
+    <group name='NoLegs' required='N'>
+     <component name='InstrumentLeg' required='N' />
+    </group>
+    <field name='PrevClosePx' required='N' />
+    <field name='QuoteRequestType' required='N' />
+    <field name='QuoteType' required='N' />
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <field name='SubscriptionRequestType' required='N' />
+  </message>
+  <message name='QuoteStatusReport' msgcat='app' msgtype='AI'>
+   <field name='QuoteStatusReqID' required='N' />
+   <field name='QuoteReqID' required='N' />
+   <field name='QuoteID' required='Y' />
+   <field name='QuoteRespID' required='N' />
+   <field name='QuoteType' required='N' />
+   <component name='Parties' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Side' required='N' />
+   <component name='OrderQtyData' required='N' />
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='SettlDate2' required='N' />
+   <field name='OrderQty2' required='N' />
+   <field name='Currency' required='N' />
+   <component name='Stipulations' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+    <field name='LegQty' required='N' />
+    <field name='LegSwapType' required='N' />
+    <field name='LegSettlType' required='N' />
+    <field name='LegSettlDate' required='N' />
+    <component name='LegStipulations' required='N' />
+    <component name='NestedParties' required='N' />
+   </group>
+   <group name='NoQuoteQualifiers' required='N'>
+    <field name='QuoteQualifier' required='N' />
+   </group>
+   <field name='ExpireTime' required='N' />
+   <field name='Price' required='N' />
+   <field name='PriceType' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='YieldData' required='N' />
+   <field name='BidPx' required='N' />
+   <field name='OfferPx' required='N' />
+   <field name='MktBidPx' required='N' />
+   <field name='MktOfferPx' required='N' />
+   <field name='MinBidSize' required='N' />
+   <field name='BidSize' required='N' />
+   <field name='MinOfferSize' required='N' />
+   <field name='OfferSize' required='N' />
+   <field name='ValidUntilTime' required='N' />
+   <field name='BidSpotRate' required='N' />
+   <field name='OfferSpotRate' required='N' />
+   <field name='BidForwardPoints' required='N' />
+   <field name='OfferForwardPoints' required='N' />
+   <field name='MidPx' required='N' />
+   <field name='BidYield' required='N' />
+   <field name='MidYield' required='N' />
+   <field name='OfferYield' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='OrdType' required='N' />
+   <field name='BidForwardPoints2' required='N' />
+   <field name='OfferForwardPoints2' required='N' />
+   <field name='SettlCurrBidFxRate' required='N' />
+   <field name='SettlCurrOfferFxRate' required='N' />
+   <field name='SettlCurrFxRateCalc' required='N' />
+   <field name='CommType' required='N' />
+   <field name='Commission' required='N' />
+   <field name='CustOrderCapacity' required='N' />
+   <field name='ExDestination' required='N' />
+   <field name='QuoteStatus' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='QuoteResponse' msgcat='app' msgtype='AJ'>
+   <field name='QuoteRespID' required='Y' />
+   <field name='QuoteID' required='N' />
+   <field name='QuoteRespType' required='Y' />
+   <field name='ClOrdID' required='N' />
+   <field name='OrderCapacity' required='N' />
+   <field name='IOIID' required='N' />
+   <field name='QuoteType' required='N' />
+   <group name='NoQuoteQualifiers' required='N'>
+    <field name='QuoteQualifier' required='N' />
+   </group>
+   <component name='Parties' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='Side' required='N' />
+   <component name='OrderQtyData' required='N' />
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='SettlDate2' required='N' />
+   <field name='OrderQty2' required='N' />
+   <field name='Currency' required='N' />
+   <component name='Stipulations' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+    <field name='LegQty' required='N' />
+    <field name='LegSwapType' required='N' />
+    <field name='LegSettlType' required='N' />
+    <field name='LegSettlDate' required='N' />
+    <component name='LegStipulations' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='LegPriceType' required='N' />
+    <field name='LegBidPx' required='N' />
+    <field name='LegOfferPx' required='N' />
+    <component name='LegBenchmarkCurveData' required='N' />
+   </group>
+   <field name='BidPx' required='N' />
+   <field name='OfferPx' required='N' />
+   <field name='MktBidPx' required='N' />
+   <field name='MktOfferPx' required='N' />
+   <field name='MinBidSize' required='N' />
+   <field name='BidSize' required='N' />
+   <field name='MinOfferSize' required='N' />
+   <field name='OfferSize' required='N' />
+   <field name='ValidUntilTime' required='N' />
+   <field name='BidSpotRate' required='N' />
+   <field name='OfferSpotRate' required='N' />
+   <field name='BidForwardPoints' required='N' />
+   <field name='OfferForwardPoints' required='N' />
+   <field name='MidPx' required='N' />
+   <field name='BidYield' required='N' />
+   <field name='MidYield' required='N' />
+   <field name='OfferYield' required='N' />
+   <field name='TransactTime' required='N' />
+   <field name='OrdType' required='N' />
+   <field name='BidForwardPoints2' required='N' />
+   <field name='OfferForwardPoints2' required='N' />
+   <field name='SettlCurrBidFxRate' required='N' />
+   <field name='SettlCurrOfferFxRate' required='N' />
+   <field name='SettlCurrFxRateCalc' required='N' />
+   <field name='Commission' required='N' />
+   <field name='CommType' required='N' />
+   <field name='CustOrderCapacity' required='N' />
+   <field name='ExDestination' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='Price' required='N' />
+   <field name='PriceType' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='YieldData' required='N' />
+  </message>
+  <message name='Confirmation' msgcat='app' msgtype='AK'>
+   <field name='ConfirmID' required='Y' />
+   <field name='ConfirmRefID' required='N' />
+   <field name='ConfirmReqID' required='N' />
+   <field name='ConfirmTransType' required='Y' />
+   <field name='ConfirmType' required='Y' />
+   <field name='CopyMsgIndicator' required='N' />
+   <field name='LegalConfirm' required='N' />
+   <field name='ConfirmStatus' required='Y' />
+   <component name='Parties' required='N' />
+   <group name='NoOrders' required='N'>
+    <field name='ClOrdID' required='N' />
+    <field name='OrderID' required='N' />
+    <field name='SecondaryOrderID' required='N' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='ListID' required='N' />
+    <component name='NestedParties2' required='N' />
+    <field name='OrderQty' required='N' />
+    <field name='OrderAvgPx' required='N' />
+    <field name='OrderBookingQty' required='N' />
+   </group>
+   <field name='AllocID' required='N' />
+   <field name='SecondaryAllocID' required='N' />
+   <field name='IndividualAllocID' required='N' />
+   <field name='TransactTime' required='Y' />
+   <field name='TradeDate' required='Y' />
+   <component name='TrdRegTimestamps' required='N' />
+   <component name='Instrument' required='Y' />
+   <component name='InstrumentExtension' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='Y'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='Y'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <component name='YieldData' required='N' />
+   <field name='AllocQty' required='Y' />
+   <field name='QtyType' required='N' />
+   <field name='Side' required='Y' />
+   <field name='Currency' required='N' />
+   <field name='LastMkt' required='N' />
+   <group name='NoCapacities' required='Y'>
+    <field name='OrderCapacity' required='Y' />
+    <field name='OrderRestrictions' required='N' />
+    <field name='OrderCapacityQty' required='Y' />
+   </group>
+   <field name='AllocAccount' required='Y' />
+   <field name='AllocAcctIDSource' required='N' />
+   <field name='AllocAccountType' required='N' />
+   <field name='AvgPx' required='Y' />
+   <field name='AvgPxPrecision' required='N' />
+   <field name='PriceType' required='N' />
+   <field name='AvgParPx' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <field name='ReportedPx' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='ProcessCode' required='N' />
+   <field name='GrossTradeAmt' required='Y' />
+   <field name='NumDaysInterest' required='N' />
+   <field name='ExDate' required='N' />
+   <field name='AccruedInterestRate' required='N' />
+   <field name='AccruedInterestAmt' required='N' />
+   <field name='InterestAtMaturity' required='N' />
+   <field name='EndAccruedInterestAmt' required='N' />
+   <field name='StartCash' required='N' />
+   <field name='EndCash' required='N' />
+   <field name='Concession' required='N' />
+   <field name='TotalTakedown' required='N' />
+   <field name='NetMoney' required='Y' />
+   <field name='MaturityNetMoney' required='N' />
+   <field name='SettlCurrAmt' required='N' />
+   <field name='SettlCurrency' required='N' />
+   <field name='SettlCurrFxRate' required='N' />
+   <field name='SettlCurrFxRateCalc' required='N' />
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <component name='SettlInstructionsData' required='N' />
+   <component name='CommissionData' required='N' />
+   <field name='SharedCommission' required='N' />
+   <component name='Stipulations' required='N' />
+   <group name='NoMiscFees' required='N'>
+    <field name='MiscFeeAmt' required='N' />
+    <field name='MiscFeeCurr' required='N' />
+    <field name='MiscFeeType' required='N' />
+    <field name='MiscFeeBasis' required='N' />
+   </group>
+  </message>
+  <message name='PositionMaintenanceRequest' msgcat='app' msgtype='AL'>
+   <field name='PosReqID' required='Y' />
+   <field name='PosTransType' required='Y' />
+   <field name='PosMaintAction' required='Y' />
+   <field name='OrigPosReqRefID' required='N' />
+   <field name='PosMaintRptRefID' required='N' />
+   <field name='ClearingBusinessDate' required='Y' />
+   <field name='SettlSessID' required='N' />
+   <field name='SettlSessSubID' required='N' />
+   <component name='Parties' required='Y' />
+   <field name='Account' required='Y' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='Y' />
+   <component name='Instrument' required='Y' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoTradingSessions' required='N'>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <field name='TransactTime' required='Y' />
+   <component name='PositionQty' required='Y' />
+   <field name='AdjustmentType' required='N' />
+   <field name='ContraryInstructionIndicator' required='N' />
+   <field name='PriorSpreadIndicator' required='N' />
+   <field name='ThresholdAmount' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='PositionMaintenanceReport' msgcat='app' msgtype='AM'>
+   <field name='PosMaintRptID' required='Y' />
+   <field name='PosTransType' required='Y' />
+   <field name='PosReqID' required='N' />
+   <field name='PosMaintAction' required='Y' />
+   <field name='OrigPosReqRefID' required='Y' />
+   <field name='PosMaintStatus' required='Y' />
+   <field name='PosMaintResult' required='N' />
+   <field name='ClearingBusinessDate' required='Y' />
+   <field name='SettlSessID' required='N' />
+   <field name='SettlSessSubID' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='Y' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='Y' />
+   <component name='Instrument' required='Y' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoTradingSessions' required='N'>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <field name='TransactTime' required='Y' />
+   <component name='PositionQty' required='Y' />
+   <component name='PositionAmountData' required='Y' />
+   <field name='AdjustmentType' required='N' />
+   <field name='ThresholdAmount' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='RequestForPositions' msgcat='app' msgtype='AN'>
+   <field name='PosReqID' required='Y' />
+   <field name='PosReqType' required='Y' />
+   <field name='MatchStatus' required='N' />
+   <field name='SubscriptionRequestType' required='N' />
+   <component name='Parties' required='Y' />
+   <field name='Account' required='Y' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='Y' />
+   <component name='Instrument' required='N' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='ClearingBusinessDate' required='Y' />
+   <field name='SettlSessID' required='N' />
+   <field name='SettlSessSubID' required='N' />
+   <group name='NoTradingSessions' required='N'>
+    <field name='TradingSessionID' required='N' />
+    <field name='TradingSessionSubID' required='N' />
+   </group>
+   <field name='TransactTime' required='Y' />
+   <field name='ResponseTransportType' required='N' />
+   <field name='ResponseDestination' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='RequestForPositionsAck' msgcat='app' msgtype='AO'>
+   <field name='PosMaintRptID' required='Y' />
+   <field name='PosReqID' required='N' />
+   <field name='TotalNumPosReports' required='N' />
+   <field name='UnsolicitedIndicator' required='N' />
+   <field name='PosReqResult' required='Y' />
+   <field name='PosReqStatus' required='Y' />
+   <component name='Parties' required='Y' />
+   <field name='Account' required='Y' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='Y' />
+   <component name='Instrument' required='N' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='ResponseTransportType' required='N' />
+   <field name='ResponseDestination' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='PositionReport' msgcat='app' msgtype='AP'>
+   <field name='PosMaintRptID' required='Y' />
+   <field name='PosReqID' required='N' />
+   <field name='PosReqType' required='N' />
+   <field name='SubscriptionRequestType' required='N' />
+   <field name='TotalNumPosReports' required='N' />
+   <field name='UnsolicitedIndicator' required='N' />
+   <field name='PosReqResult' required='Y' />
+   <field name='ClearingBusinessDate' required='Y' />
+   <field name='SettlSessID' required='N' />
+   <field name='SettlSessSubID' required='N' />
+   <component name='Parties' required='Y' />
+   <field name='Account' required='Y' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='Y' />
+   <component name='Instrument' required='N' />
+   <field name='Currency' required='N' />
+   <field name='SettlPrice' required='Y' />
+   <field name='SettlPriceType' required='Y' />
+   <field name='PriorSettlPrice' required='Y' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+    <field name='UnderlyingSettlPrice' required='Y' />
+    <field name='UnderlyingSettlPriceType' required='Y' />
+   </group>
+   <component name='PositionQty' required='Y' />
+   <component name='PositionAmountData' required='Y' />
+   <field name='RegistStatus' required='N' />
+   <field name='DeliveryDate' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='TradeCaptureReportRequestAck' msgcat='app' msgtype='AQ'>
+   <field name='TradeRequestID' required='Y' />
+   <field name='TradeRequestType' required='Y' />
+   <field name='SubscriptionRequestType' required='N' />
+   <field name='TotNumTradeReports' required='N' />
+   <field name='TradeRequestResult' required='Y' />
+   <field name='TradeRequestStatus' required='Y' />
+   <component name='Instrument' required='Y' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='MultiLegReportingType' required='N' />
+   <field name='ResponseTransportType' required='N' />
+   <field name='ResponseDestination' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='TradeCaptureReportAck' msgcat='app' msgtype='AR'>
+   <field name='TradeReportID' required='Y' />
+   <field name='TradeReportTransType' required='N' />
+   <field name='TradeReportType' required='N' />
+   <field name='TrdType' required='N' />
+   <field name='TrdSubType' required='N' />
+   <field name='SecondaryTrdType' required='N' />
+   <field name='TransferReason' required='N' />
+   <field name='ExecType' required='Y' />
+   <field name='TradeReportRefID' required='N' />
+   <field name='SecondaryTradeReportRefID' required='N' />
+   <field name='TrdRptStatus' required='N' />
+   <field name='TradeReportRejectReason' required='N' />
+   <field name='SecondaryTradeReportID' required='N' />
+   <field name='SubscriptionRequestType' required='N' />
+   <field name='TradeLinkID' required='N' />
+   <field name='TrdMatchID' required='N' />
+   <field name='ExecID' required='N' />
+   <field name='SecondaryExecID' required='N' />
+   <component name='Instrument' required='Y' />
+   <field name='TransactTime' required='N' />
+   <component name='TrdRegTimestamps' required='N' />
+   <field name='ResponseTransportType' required='N' />
+   <field name='ResponseDestination' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+    <field name='LegQty' required='N' />
+    <field name='LegSwapType' required='N' />
+    <component name='LegStipulations' required='N' />
+    <field name='LegPositionEffect' required='N' />
+    <field name='LegCoveredOrUncovered' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='LegRefID' required='N' />
+    <field name='LegPrice' required='N' />
+    <field name='LegSettlType' required='N' />
+    <field name='LegSettlDate' required='N' />
+    <field name='LegLastPx' required='N' />
+   </group>
+   <field name='ClearingFeeIndicator' required='N' />
+   <field name='OrderCapacity' required='N' />
+   <field name='OrderRestrictions' required='N' />
+   <field name='CustOrderCapacity' required='N' />
+   <field name='Account' required='N' />
+   <field name='AcctIDSource' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='PositionEffect' required='N' />
+   <field name='PreallocMethod' required='N' />
+   <group name='NoAllocs' required='N'>
+    <field name='AllocAccount' required='N' />
+    <field name='AllocAcctIDSource' required='N' />
+    <field name='AllocSettlCurrency' required='N' />
+    <field name='IndividualAllocID' required='N' />
+    <component name='NestedParties2' required='N' />
+    <field name='AllocQty' required='N' />
+   </group>
+  </message>
+  <message name='AllocationReport' msgcat='app' msgtype='AS'>
+   <field name='AllocReportID' required='Y' />
+   <field name='AllocID' required='N' />
+   <field name='AllocTransType' required='Y' />
+   <field name='AllocReportRefID' required='N' />
+   <field name='AllocCancReplaceReason' required='N' />
+   <field name='SecondaryAllocID' required='N' />
+   <field name='AllocReportType' required='Y' />
+   <field name='AllocStatus' required='Y' />
+   <field name='AllocRejCode' required='N' />
+   <field name='RefAllocID' required='N' />
+   <field name='AllocIntermedReqType' required='N' />
+   <field name='AllocLinkID' required='N' />
+   <field name='AllocLinkType' required='N' />
+   <field name='BookingRefID' required='N' />
+   <field name='AllocNoOrdersType' required='Y' />
+   <group name='NoOrders' required='N'>
+    <field name='ClOrdID' required='N' />
+    <field name='OrderID' required='N' />
+    <field name='SecondaryOrderID' required='N' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='ListID' required='N' />
+    <component name='NestedParties2' required='N' />
+    <field name='OrderQty' required='N' />
+    <field name='OrderAvgPx' required='N' />
+    <field name='OrderBookingQty' required='N' />
+   </group>
+   <group name='NoExecs' required='N'>
+    <field name='LastQty' required='N' />
+    <field name='ExecID' required='N' />
+    <field name='SecondaryExecID' required='N' />
+    <field name='LastPx' required='N' />
+    <field name='LastParPx' required='N' />
+    <field name='LastCapacity' required='N' />
+   </group>
+   <field name='PreviouslyReported' required='N' />
+   <field name='ReversalIndicator' required='N' />
+   <field name='MatchType' required='N' />
+   <field name='Side' required='Y' />
+   <component name='Instrument' required='Y' />
+   <component name='InstrumentExtension' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <field name='Quantity' required='Y' />
+   <field name='QtyType' required='N' />
+   <field name='LastMkt' required='N' />
+   <field name='TradeOriginationDate' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='PriceType' required='N' />
+   <field name='AvgPx' required='Y' />
+   <field name='AvgParPx' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <field name='Currency' required='N' />
+   <field name='AvgPxPrecision' required='N' />
+   <component name='Parties' required='N' />
+   <field name='TradeDate' required='Y' />
+   <field name='TransactTime' required='N' />
+   <field name='SettlType' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='BookingType' required='N' />
+   <field name='GrossTradeAmt' required='N' />
+   <field name='Concession' required='N' />
+   <field name='TotalTakedown' required='N' />
+   <field name='NetMoney' required='N' />
+   <field name='PositionEffect' required='N' />
+   <field name='AutoAcceptIndicator' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <field name='NumDaysInterest' required='N' />
+   <field name='AccruedInterestRate' required='N' />
+   <field name='AccruedInterestAmt' required='N' />
+   <field name='TotalAccruedInterestAmt' required='N' />
+   <field name='InterestAtMaturity' required='N' />
+   <field name='EndAccruedInterestAmt' required='N' />
+   <field name='StartCash' required='N' />
+   <field name='EndCash' required='N' />
+   <field name='LegalConfirm' required='N' />
+   <component name='Stipulations' required='N' />
+   <component name='YieldData' required='N' />
+   <field name='TotNoAllocs' required='N' />
+   <field name='LastFragment' required='N' />
+   <group name='NoAllocs' required='N'>
+    <field name='AllocAccount' required='N' />
+    <field name='AllocAcctIDSource' required='N' />
+    <field name='MatchStatus' required='N' />
+    <field name='AllocPrice' required='N' />
+    <field name='AllocQty' required='N' />
+    <field name='IndividualAllocID' required='N' />
+    <field name='ProcessCode' required='N' />
+    <component name='NestedParties' required='N' />
+    <field name='NotifyBrokerOfCredit' required='N' />
+    <field name='AllocHandlInst' required='N' />
+    <field name='AllocText' required='N' />
+    <field name='EncodedAllocTextLen' required='N' />
+    <field name='EncodedAllocText' required='N' />
+    <component name='CommissionData' required='N' />
+    <field name='AllocAvgPx' required='N' />
+    <field name='AllocNetMoney' required='N' />
+    <field name='SettlCurrAmt' required='N' />
+    <field name='AllocSettlCurrAmt' required='N' />
+    <field name='SettlCurrency' required='N' />
+    <field name='AllocSettlCurrency' required='N' />
+    <field name='SettlCurrFxRate' required='N' />
+    <field name='SettlCurrFxRateCalc' required='N' />
+    <field name='AllocAccruedInterestAmt' required='N' />
+    <field name='AllocInterestAtMaturity' required='N' />
+    <group name='NoMiscFees' required='N'>
+     <field name='MiscFeeAmt' required='N' />
+     <field name='MiscFeeCurr' required='N' />
+     <field name='MiscFeeType' required='N' />
+     <field name='MiscFeeBasis' required='N' />
+    </group>
+    <group name='NoClearingInstructions' required='N'>
+     <field name='ClearingInstruction' required='N' />
+    </group>
+    <field name='ClearingFeeIndicator' required='N' />
+    <field name='AllocSettlInstType' required='N' />
+    <component name='SettlInstructionsData' required='N' />
+   </group>
+  </message>
+  <message name='AllocationReportAck' msgcat='app' msgtype='AT'>
+   <field name='AllocReportID' required='Y' />
+   <field name='AllocID' required='Y' />
+   <component name='Parties' required='N' />
+   <field name='SecondaryAllocID' required='N' />
+   <field name='TradeDate' required='N' />
+   <field name='TransactTime' required='Y' />
+   <field name='AllocStatus' required='Y' />
+   <field name='AllocRejCode' required='N' />
+   <field name='AllocReportType' required='N' />
+   <field name='AllocIntermedReqType' required='N' />
+   <field name='MatchStatus' required='N' />
+   <field name='Product' required='N' />
+   <field name='SecurityType' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+   <group name='NoAllocs' required='N'>
+    <field name='AllocAccount' required='N' />
+    <field name='AllocAcctIDSource' required='N' />
+    <field name='AllocPrice' required='N' />
+    <field name='IndividualAllocID' required='N' />
+    <field name='IndividualAllocRejCode' required='N' />
+    <field name='AllocText' required='N' />
+    <field name='EncodedAllocTextLen' required='N' />
+    <field name='EncodedAllocText' required='N' />
+   </group>
+  </message>
+  <message name='ConfirmationAck' msgcat='app' msgtype='AU'>
+   <field name='ConfirmID' required='Y' />
+   <field name='TradeDate' required='Y' />
+   <field name='TransactTime' required='Y' />
+   <field name='AffirmStatus' required='Y' />
+   <field name='ConfirmRejReason' required='N' />
+   <field name='MatchStatus' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='SettlementInstructionRequest' msgcat='app' msgtype='AV'>
+   <field name='SettlInstReqID' required='Y' />
+   <field name='TransactTime' required='Y' />
+   <component name='Parties' required='N' />
+   <field name='AllocAccount' required='N' />
+   <field name='AllocAcctIDSource' required='N' />
+   <field name='Side' required='N' />
+   <field name='Product' required='N' />
+   <field name='SecurityType' required='N' />
+   <field name='CFICode' required='N' />
+   <field name='EffectiveTime' required='N' />
+   <field name='ExpireTime' required='N' />
+   <field name='LastUpdateTime' required='N' />
+   <field name='StandInstDbType' required='N' />
+   <field name='StandInstDbName' required='N' />
+   <field name='StandInstDbID' required='N' />
+  </message>
+  <message name='AssignmentReport' msgcat='app' msgtype='AW'>
+   <field name='AsgnRptID' required='Y' />
+   <field name='TotNumAssignmentReports' required='N' />
+   <field name='LastRptRequested' required='N' />
+   <component name='Parties' required='Y' />
+   <field name='Account' required='N' />
+   <field name='AccountType' required='Y' />
+   <component name='Instrument' required='N' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <component name='PositionQty' required='Y' />
+   <component name='PositionAmountData' required='Y' />
+   <field name='ThresholdAmount' required='N' />
+   <field name='SettlPrice' required='Y' />
+   <field name='SettlPriceType' required='Y' />
+   <field name='UnderlyingSettlPrice' required='Y' />
+   <field name='ExpireDate' required='N' />
+   <field name='AssignmentMethod' required='Y' />
+   <field name='AssignmentUnit' required='N' />
+   <field name='OpenInterest' required='Y' />
+   <field name='ExerciseMethod' required='Y' />
+   <field name='SettlSessID' required='Y' />
+   <field name='SettlSessSubID' required='Y' />
+   <field name='ClearingBusinessDate' required='Y' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='CollateralRequest' msgcat='app' msgtype='AX'>
+   <field name='CollReqID' required='Y' />
+   <field name='CollAsgnReason' required='Y' />
+   <field name='TransactTime' required='Y' />
+   <field name='ExpireTime' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='OrderID' required='N' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='SecondaryClOrdID' required='N' />
+   <group name='NoExecs' required='N'>
+    <field name='ExecID' required='N' />
+   </group>
+   <group name='NoTrades' required='N'>
+    <field name='TradeReportID' required='N' />
+    <field name='SecondaryTradeReportID' required='N' />
+   </group>
+   <component name='Instrument' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='Quantity' required='N' />
+   <field name='QtyType' required='N' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+    <field name='CollAction' required='N' />
+   </group>
+   <field name='MarginExcess' required='N' />
+   <field name='TotalNetValue' required='N' />
+   <field name='CashOutstanding' required='N' />
+   <component name='TrdRegTimestamps' required='N' />
+   <field name='Side' required='N' />
+   <group name='NoMiscFees' required='N'>
+    <field name='MiscFeeAmt' required='N' />
+    <field name='MiscFeeCurr' required='N' />
+    <field name='MiscFeeType' required='N' />
+    <field name='MiscFeeBasis' required='N' />
+   </group>
+   <field name='Price' required='N' />
+   <field name='PriceType' required='N' />
+   <field name='AccruedInterestAmt' required='N' />
+   <field name='EndAccruedInterestAmt' required='N' />
+   <field name='StartCash' required='N' />
+   <field name='EndCash' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='Stipulations' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='SettlSessID' required='N' />
+   <field name='SettlSessSubID' required='N' />
+   <field name='ClearingBusinessDate' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='CollateralAssignment' msgcat='app' msgtype='AY'>
+   <field name='CollAsgnID' required='Y' />
+   <field name='CollReqID' required='N' />
+   <field name='CollAsgnReason' required='Y' />
+   <field name='CollAsgnTransType' required='Y' />
+   <field name='CollAsgnRefID' required='N' />
+   <field name='TransactTime' required='Y' />
+   <field name='ExpireTime' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='OrderID' required='N' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='SecondaryClOrdID' required='N' />
+   <group name='NoExecs' required='N'>
+    <field name='ExecID' required='N' />
+   </group>
+   <group name='NoTrades' required='N'>
+    <field name='TradeReportID' required='N' />
+    <field name='SecondaryTradeReportID' required='N' />
+   </group>
+   <component name='Instrument' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='Quantity' required='N' />
+   <field name='QtyType' required='N' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+    <field name='CollAction' required='N' />
+   </group>
+   <field name='MarginExcess' required='N' />
+   <field name='TotalNetValue' required='N' />
+   <field name='CashOutstanding' required='N' />
+   <component name='TrdRegTimestamps' required='N' />
+   <field name='Side' required='N' />
+   <group name='NoMiscFees' required='N'>
+    <field name='MiscFeeAmt' required='N' />
+    <field name='MiscFeeCurr' required='N' />
+    <field name='MiscFeeType' required='N' />
+    <field name='MiscFeeBasis' required='N' />
+   </group>
+   <field name='Price' required='N' />
+   <field name='PriceType' required='N' />
+   <field name='AccruedInterestAmt' required='N' />
+   <field name='EndAccruedInterestAmt' required='N' />
+   <field name='StartCash' required='N' />
+   <field name='EndCash' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='Stipulations' required='N' />
+   <component name='SettlInstructionsData' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='SettlSessID' required='N' />
+   <field name='SettlSessSubID' required='N' />
+   <field name='ClearingBusinessDate' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='CollateralResponse' msgcat='app' msgtype='AZ'>
+   <field name='CollRespID' required='Y' />
+   <field name='CollAsgnID' required='Y' />
+   <field name='CollReqID' required='N' />
+   <field name='CollAsgnReason' required='Y' />
+   <field name='CollAsgnTransType' required='N' />
+   <field name='CollAsgnRespType' required='Y' />
+   <field name='CollAsgnRejectReason' required='N' />
+   <field name='TransactTime' required='Y' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='OrderID' required='N' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='SecondaryClOrdID' required='N' />
+   <group name='NoExecs' required='N'>
+    <field name='ExecID' required='N' />
+   </group>
+   <group name='NoTrades' required='N'>
+    <field name='TradeReportID' required='N' />
+    <field name='SecondaryTradeReportID' required='N' />
+   </group>
+   <component name='Instrument' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='Quantity' required='N' />
+   <field name='QtyType' required='N' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+    <field name='CollAction' required='N' />
+   </group>
+   <field name='MarginExcess' required='N' />
+   <field name='TotalNetValue' required='N' />
+   <field name='CashOutstanding' required='N' />
+   <component name='TrdRegTimestamps' required='N' />
+   <field name='Side' required='N' />
+   <group name='NoMiscFees' required='N'>
+    <field name='MiscFeeAmt' required='N' />
+    <field name='MiscFeeCurr' required='N' />
+    <field name='MiscFeeType' required='N' />
+    <field name='MiscFeeBasis' required='N' />
+   </group>
+   <field name='Price' required='N' />
+   <field name='PriceType' required='N' />
+   <field name='AccruedInterestAmt' required='N' />
+   <field name='EndAccruedInterestAmt' required='N' />
+   <field name='StartCash' required='N' />
+   <field name='EndCash' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='Stipulations' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='CollateralReport' msgcat='app' msgtype='BA'>
+   <field name='CollRptID' required='Y' />
+   <field name='CollInquiryID' required='N' />
+   <field name='CollStatus' required='Y' />
+   <field name='TotNumReports' required='N' />
+   <field name='LastRptRequested' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='OrderID' required='N' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='SecondaryClOrdID' required='N' />
+   <group name='NoExecs' required='N'>
+    <field name='ExecID' required='N' />
+   </group>
+   <group name='NoTrades' required='N'>
+    <field name='TradeReportID' required='N' />
+    <field name='SecondaryTradeReportID' required='N' />
+   </group>
+   <component name='Instrument' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='Quantity' required='N' />
+   <field name='QtyType' required='N' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='MarginExcess' required='N' />
+   <field name='TotalNetValue' required='N' />
+   <field name='CashOutstanding' required='N' />
+   <component name='TrdRegTimestamps' required='N' />
+   <field name='Side' required='N' />
+   <group name='NoMiscFees' required='N'>
+    <field name='MiscFeeAmt' required='N' />
+    <field name='MiscFeeCurr' required='N' />
+    <field name='MiscFeeType' required='N' />
+    <field name='MiscFeeBasis' required='N' />
+   </group>
+   <field name='Price' required='N' />
+   <field name='PriceType' required='N' />
+   <field name='AccruedInterestAmt' required='N' />
+   <field name='EndAccruedInterestAmt' required='N' />
+   <field name='StartCash' required='N' />
+   <field name='EndCash' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='Stipulations' required='N' />
+   <component name='SettlInstructionsData' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='SettlSessID' required='N' />
+   <field name='SettlSessSubID' required='N' />
+   <field name='ClearingBusinessDate' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='CollateralInquiry' msgcat='app' msgtype='BB'>
+   <field name='CollInquiryID' required='N' />
+   <group name='NoCollInquiryQualifier' required='N'>
+    <field name='CollInquiryQualifier' required='N' />
+   </group>
+   <field name='SubscriptionRequestType' required='N' />
+   <field name='ResponseTransportType' required='N' />
+   <field name='ResponseDestination' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='OrderID' required='N' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='SecondaryClOrdID' required='N' />
+   <group name='NoExecs' required='N'>
+    <field name='ExecID' required='N' />
+   </group>
+   <group name='NoTrades' required='N'>
+    <field name='TradeReportID' required='N' />
+    <field name='SecondaryTradeReportID' required='N' />
+   </group>
+   <component name='Instrument' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='Quantity' required='N' />
+   <field name='QtyType' required='N' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='MarginExcess' required='N' />
+   <field name='TotalNetValue' required='N' />
+   <field name='CashOutstanding' required='N' />
+   <component name='TrdRegTimestamps' required='N' />
+   <field name='Side' required='N' />
+   <field name='Price' required='N' />
+   <field name='PriceType' required='N' />
+   <field name='AccruedInterestAmt' required='N' />
+   <field name='EndAccruedInterestAmt' required='N' />
+   <field name='StartCash' required='N' />
+   <field name='EndCash' required='N' />
+   <component name='SpreadOrBenchmarkCurveData' required='N' />
+   <component name='Stipulations' required='N' />
+   <component name='SettlInstructionsData' required='N' />
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='SettlSessID' required='N' />
+   <field name='SettlSessSubID' required='N' />
+   <field name='ClearingBusinessDate' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='NetworkCounterpartySystemStatusRequest' msgcat='app' msgtype='BC'>
+   <field name='NetworkRequestType' required='Y' />
+   <field name='NetworkRequestID' required='Y' />
+   <group name='NoCompIDs' required='N'>
+    <field name='RefCompID' required='N' />
+    <field name='RefSubID' required='N' />
+    <field name='LocationID' required='N' />
+    <field name='DeskID' required='N' />
+   </group>
+  </message>
+  <message name='NetworkCounterpartySystemStatusResponse' msgcat='app' msgtype='BD'>
+   <field name='NetworkStatusResponseType' required='Y' />
+   <field name='NetworkRequestID' required='N' />
+   <field name='NetworkResponseID' required='Y' />
+   <field name='LastNetworkResponseID' required='N' />
+   <group name='NoCompIDs' required='Y'>
+    <field name='RefCompID' required='N' />
+    <field name='RefSubID' required='N' />
+    <field name='LocationID' required='N' />
+    <field name='DeskID' required='N' />
+    <field name='StatusValue' required='N' />
+    <field name='StatusText' required='N' />
+   </group>
+  </message>
+  <message name='UserRequest' msgcat='app' msgtype='BE'>
+   <field name='UserRequestID' required='Y' />
+   <field name='UserRequestType' required='Y' />
+   <field name='Username' required='Y' />
+   <field name='Password' required='N' />
+   <field name='NewPassword' required='N' />
+   <field name='RawDataLength' required='N' />
+   <field name='RawData' required='N' />
+  </message>
+  <message name='UserResponse' msgcat='app' msgtype='BF'>
+   <field name='UserRequestID' required='Y' />
+   <field name='Username' required='Y' />
+   <field name='UserStatus' required='N' />
+   <field name='UserStatusText' required='N' />
+  </message>
+  <message name='CollateralInquiryAck' msgcat='app' msgtype='BG'>
+   <field name='CollInquiryID' required='Y' />
+   <field name='CollInquiryStatus' required='Y' />
+   <field name='CollInquiryResult' required='N' />
+   <group name='NoCollInquiryQualifier' required='N'>
+    <field name='CollInquiryQualifier' required='N' />
+   </group>
+   <field name='TotNumReports' required='N' />
+   <component name='Parties' required='N' />
+   <field name='Account' required='N' />
+   <field name='AccountType' required='N' />
+   <field name='ClOrdID' required='N' />
+   <field name='OrderID' required='N' />
+   <field name='SecondaryOrderID' required='N' />
+   <field name='SecondaryClOrdID' required='N' />
+   <group name='NoExecs' required='N'>
+    <field name='ExecID' required='N' />
+   </group>
+   <group name='NoTrades' required='N'>
+    <field name='TradeReportID' required='N' />
+    <field name='SecondaryTradeReportID' required='N' />
+   </group>
+   <component name='Instrument' required='N' />
+   <component name='FinancingDetails' required='N' />
+   <field name='SettlDate' required='N' />
+   <field name='Quantity' required='N' />
+   <field name='QtyType' required='N' />
+   <field name='Currency' required='N' />
+   <group name='NoLegs' required='N'>
+    <component name='InstrumentLeg' required='N' />
+   </group>
+   <group name='NoUnderlyings' required='N'>
+    <component name='UnderlyingInstrument' required='N' />
+   </group>
+   <field name='TradingSessionID' required='N' />
+   <field name='TradingSessionSubID' required='N' />
+   <field name='SettlSessID' required='N' />
+   <field name='SettlSessSubID' required='N' />
+   <field name='ClearingBusinessDate' required='N' />
+   <field name='ResponseTransportType' required='N' />
+   <field name='ResponseDestination' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+  <message name='ConfirmationRequest' msgcat='app' msgtype='BH'>
+   <field name='ConfirmReqID' required='Y' />
+   <field name='ConfirmType' required='Y' />
+   <group name='NoOrders' required='N'>
+    <field name='ClOrdID' required='N' />
+    <field name='OrderID' required='N' />
+    <field name='SecondaryOrderID' required='N' />
+    <field name='SecondaryClOrdID' required='N' />
+    <field name='ListID' required='N' />
+    <component name='NestedParties2' required='N' />
+    <field name='OrderQty' required='N' />
+    <field name='OrderAvgPx' required='N' />
+    <field name='OrderBookingQty' required='N' />
+   </group>
+   <field name='AllocID' required='N' />
+   <field name='SecondaryAllocID' required='N' />
+   <field name='IndividualAllocID' required='N' />
+   <field name='TransactTime' required='Y' />
+   <field name='AllocAccount' required='N' />
+   <field name='AllocAcctIDSource' required='N' />
+   <field name='AllocAccountType' required='N' />
+   <field name='Text' required='N' />
+   <field name='EncodedTextLen' required='N' />
+   <field name='EncodedText' required='N' />
+  </message>
+ </messages>
+ <trailer>
+  <field name='SignatureLength' required='N' />
+  <field name='Signature' required='N' />
+  <field name='CheckSum' required='Y' />
+ </trailer>
+ <components>
+  <component name='SpreadOrBenchmarkCurveData'>
+   <field name='Spread' required='N' />
+   <field name='BenchmarkCurveCurrency' required='N' />
+   <field name='BenchmarkCurveName' required='N' />
+   <field name='BenchmarkCurvePoint' required='N' />
+   <field name='BenchmarkPrice' required='N' />
+   <field name='BenchmarkPriceType' required='N' />
+   <field name='BenchmarkSecurityID' required='N' />
+   <field name='BenchmarkSecurityIDSource' required='N' />
+  </component>
+  <component name='FinancingDetails'>
+   <field name='AgreementDesc' required='N' />
+   <field name='AgreementID' required='N' />
+   <field name='AgreementDate' required='N' />
+   <field name='AgreementCurrency' required='N' />
+   <field name='TerminationType' required='N' />
+   <field name='StartDate' required='N' />
+   <field name='EndDate' required='N' />
+   <field name='DeliveryType' required='N' />
+   <field name='MarginRatio' required='N' />
+  </component>
+  <component name='YieldData'>
+   <field name='YieldType' required='N' />
+   <field name='Yield' required='N' />
+   <field name='YieldCalcDate' required='N' />
+   <field name='YieldRedemptionDate' required='N' />
+   <field name='YieldRedemptionPrice' required='N' />
+   <field name='YieldRedemptionPriceType' required='N' />
+  </component>
+  <component name='SettlParties'>
+   <group name='NoSettlPartyIDs' required='N'>
+    <field name='SettlPartyID' required='N' />
+    <field name='SettlPartyIDSource' required='N' />
+    <field name='SettlPartyRole' required='N' />
+    <group name='NoSettlPartySubIDs' required='N'>
+     <field name='SettlPartySubID' required='N' />
+     <field name='SettlPartySubIDType' required='N' />
+    </group>
+   </group>
+  </component>
+  <component name='PegInstructions'>
+   <field name='PegOffsetValue' required='N' />
+   <field name='PegMoveType' required='N' />
+   <field name='PegOffsetType' required='N' />
+   <field name='PegLimitType' required='N' />
+   <field name='PegRoundDirection' required='N' />
+   <field name='PegScope' required='N' />
+  </component>
+  <component name='LegBenchmarkCurveData'>
+   <field name='LegBenchmarkCurveCurrency' required='N' />
+   <field name='LegBenchmarkCurveName' required='N' />
+   <field name='LegBenchmarkCurvePoint' required='N' />
+   <field name='LegBenchmarkPrice' required='N' />
+   <field name='LegBenchmarkPriceType' required='N' />
+  </component>
+  <component name='TrdRegTimestamps'>
+   <group name='NoTrdRegTimestamps' required='N'>
+    <field name='TrdRegTimestamp' required='N' />
+    <field name='TrdRegTimestampType' required='N' />
+    <field name='TrdRegTimestampOrigin' required='N' />
+   </group>
+  </component>
+  <component name='PositionAmountData'>
+   <group name='NoPosAmt' required='N'>
+    <field name='PosAmtType' required='N' />
+    <field name='PosAmt' required='N' />
+   </group>
+  </component>
+  <component name='LegStipulations'>
+   <group name='NoLegStipulations' required='N'>
+    <field name='LegStipulationType' required='N' />
+    <field name='LegStipulationValue' required='N' />
+   </group>
+  </component>
+  <component name='CommissionData'>
+   <field name='Commission' required='N' />
+   <field name='CommType' required='N' />
+   <field name='CommCurrency' required='N' />
+   <field name='FundRenewWaiv' required='N' />
+  </component>
+  <component name='UnderlyingInstrument'>
+   <field name='UnderlyingSymbol' required='N' />
+   <field name='UnderlyingSymbolSfx' required='N' />
+   <field name='UnderlyingSecurityID' required='N' />
+   <field name='UnderlyingSecurityIDSource' required='N' />
+   <group name='NoUnderlyingSecurityAltID' required='N'>
+    <field name='UnderlyingSecurityAltID' required='N' />
+    <field name='UnderlyingSecurityAltIDSource' required='N' />
+   </group>
+   <field name='UnderlyingProduct' required='N' />
+   <field name='UnderlyingCFICode' required='N' />
+   <field name='UnderlyingSecurityType' required='N' />
+   <field name='UnderlyingSecuritySubType' required='N' />
+   <field name='UnderlyingMaturityMonthYear' required='N' />
+   <field name='UnderlyingMaturityDate' required='N' />
+   <field name='UnderlyingCouponPaymentDate' required='N' />
+   <field name='UnderlyingIssueDate' required='N' />
+   <field name='UnderlyingRepoCollateralSecurityType' required='N' />
+   <field name='UnderlyingRepurchaseTerm' required='N' />
+   <field name='UnderlyingRepurchaseRate' required='N' />
+   <field name='UnderlyingFactor' required='N' />
+   <field name='UnderlyingCreditRating' required='N' />
+   <field name='UnderlyingInstrRegistry' required='N' />
+   <field name='UnderlyingCountryOfIssue' required='N' />
+   <field name='UnderlyingStateOrProvinceOfIssue' required='N' />
+   <field name='UnderlyingLocaleOfIssue' required='N' />
+   <field name='UnderlyingRedemptionDate' required='N' />
+   <field name='UnderlyingStrikePrice' required='N' />
+   <field name='UnderlyingStrikeCurrency' required='N' />
+   <field name='UnderlyingOptAttribute' required='N' />
+   <field name='UnderlyingContractMultiplier' required='N' />
+   <field name='UnderlyingCouponRate' required='N' />
+   <field name='UnderlyingSecurityExchange' required='N' />
+   <field name='UnderlyingIssuer' required='N' />
+   <field name='EncodedUnderlyingIssuerLen' required='N' />
+   <field name='EncodedUnderlyingIssuer' required='N' />
+   <field name='UnderlyingSecurityDesc' required='N' />
+   <field name='EncodedUnderlyingSecurityDescLen' required='N' />
+   <field name='EncodedUnderlyingSecurityDesc' required='N' />
+   <field name='UnderlyingCPProgram' required='N' />
+   <field name='UnderlyingCPRegType' required='N' />
+   <field name='UnderlyingCurrency' required='N' />
+   <field name='UnderlyingQty' required='N' />
+   <field name='UnderlyingPx' required='N' />
+   <field name='UnderlyingDirtyPrice' required='N' />
+   <field name='UnderlyingEndPrice' required='N' />
+   <field name='UnderlyingStartValue' required='N' />
+   <field name='UnderlyingCurrentValue' required='N' />
+   <field name='UnderlyingEndValue' required='N' />
+   <component name='UnderlyingStipulations' required='N' />
+  </component>
+  <component name='PositionQty'>
+   <group name='NoPositions' required='N'>
+    <field name='PosType' required='N' />
+    <field name='LongQty' required='N' />
+    <field name='ShortQty' required='N' />
+    <field name='PosQtyStatus' required='N' />
+    <component name='NestedParties' required='N' />
+   </group>
+  </component>
+  <component name='InstrumentExtension'>
+   <field name='DeliveryForm' required='N' />
+   <field name='PctAtRisk' required='N' />
+   <group name='NoInstrAttrib' required='N'>
+    <field name='InstrAttribType' required='N' />
+    <field name='InstrAttribValue' required='N' />
+   </group>
+  </component>
+  <component name='Instrument'>
+   <field name='Symbol' required='N' />
+   <field name='SymbolSfx' required='N' />
+   <field name='SecurityID' required='N' />
+   <field name='SecurityIDSource' required='N' />
+   <group name='NoSecurityAltID' required='N'>
+    <field name='SecurityAltID' required='N' />
+    <field name='SecurityAltIDSource' required='N' />
+   </group>
+   <field name='Product' required='N' />
+   <field name='CFICode' required='N' />
+   <field name='SecurityType' required='N' />
+   <field name='SecuritySubType' required='N' />
+   <field name='MaturityMonthYear' required='N' />
+   <field name='MaturityDate' required='N' />
+   <field name='CouponPaymentDate' required='N' />
+   <field name='IssueDate' required='N' />
+   <field name='RepoCollateralSecurityType' required='N' />
+   <field name='RepurchaseTerm' required='N' />
+   <field name='RepurchaseRate' required='N' />
+   <field name='Factor' required='N' />
+   <field name='CreditRating' required='N' />
+   <field name='InstrRegistry' required='N' />
+   <field name='CountryOfIssue' required='N' />
+   <field name='StateOrProvinceOfIssue' required='N' />
+   <field name='LocaleOfIssue' required='N' />
+   <field name='RedemptionDate' required='N' />
+   <field name='StrikePrice' required='N' />
+   <field name='StrikeCurrency' required='N' />
+   <field name='OptAttribute' required='N' />
+   <field name='ContractMultiplier' required='N' />
+   <field name='CouponRate' required='N' />
+   <field name='SecurityExchange' required='N' />
+   <field name='Issuer' required='N' />
+   <field name='EncodedIssuerLen' required='N' />
+   <field name='EncodedIssuer' required='N' />
+   <field name='SecurityDesc' required='N' />
+   <field name='EncodedSecurityDescLen' required='N' />
+   <field name='EncodedSecurityDesc' required='N' />
+   <field name='Pool' required='N' />
+   <field name='ContractSettlMonth' required='N' />
+   <field name='CPProgram' required='N' />
+   <field name='CPRegType' required='N' />
+   <group name='NoEvents' required='N'>
+    <field name='EventType' required='N' />
+    <field name='EventDate' required='N' />
+    <field name='EventPx' required='N' />
+    <field name='EventText' required='N' />
+   </group>
+   <field name='DatedDate' required='N' />
+   <field name='InterestAccrualDate' required='N' />
+  </component>
+  <component name='DiscretionInstructions'>
+   <field name='DiscretionInst' required='N' />
+   <field name='DiscretionOffsetValue' required='N' />
+   <field name='DiscretionMoveType' required='N' />
+   <field name='DiscretionOffsetType' required='N' />
+   <field name='DiscretionLimitType' required='N' />
+   <field name='DiscretionRoundDirection' required='N' />
+   <field name='DiscretionScope' required='N' />
+  </component>
+  <component name='NestedParties'>
+   <group name='NoNestedPartyIDs' required='N'>
+    <field name='NestedPartyID' required='N' />
+    <field name='NestedPartyIDSource' required='N' />
+    <field name='NestedPartyRole' required='N' />
+    <group name='NoNestedPartySubIDs' required='N'>
+     <field name='NestedPartySubID' required='N' />
+     <field name='NestedPartySubIDType' required='N' />
+    </group>
+   </group>
+  </component>
+  <component name='NestedParties2'>
+   <group name='NoNested2PartyIDs' required='N'>
+    <field name='Nested2PartyID' required='N' />
+    <field name='Nested2PartyIDSource' required='N' />
+    <field name='Nested2PartyRole' required='N' />
+    <group name='NoNested2PartySubIDs' required='N'>
+     <field name='Nested2PartySubID' required='N' />
+     <field name='Nested2PartySubIDType' required='N' />
+    </group>
+   </group>
+  </component>
+  <component name='Stipulations'>
+   <group name='NoStipulations' required='N'>
+    <field name='StipulationType' required='N' />
+    <field name='StipulationValue' required='N' />
+   </group>
+  </component>
+  <component name='NestedParties3'>
+   <group name='NoNested3PartyIDs' required='N'>
+    <field name='Nested3PartyID' required='N' />
+    <field name='Nested3PartyIDSource' required='N' />
+    <field name='Nested3PartyRole' required='N' />
+    <group name='NoNested3PartySubIDs' required='N'>
+     <field name='Nested3PartySubID' required='N' />
+     <field name='Nested3PartySubIDType' required='N' />
+    </group>
+   </group>
+  </component>
+  <component name='UnderlyingStipulations'>
+   <group name='NoUnderlyingStips' required='N'>
+    <field name='UnderlyingStipType' required='N' />
+    <field name='UnderlyingStipValue' required='N' />
+   </group>
+  </component>
+  <component name='Parties'>
+   <group name='NoPartyIDs' required='N'>
+    <field name='PartyID' required='N' />
+    <field name='PartyIDSource' required='N' />
+    <field name='PartyRole' required='N' />
+    <group name='NoPartySubIDs' required='N'>
+     <field name='PartySubID' required='N' />
+     <field name='PartySubIDType' required='N' />
+    </group>
+   </group>
+  </component>
+  <component name='SettlInstructionsData'>
+   <field name='SettlDeliveryType' required='N' />
+   <field name='StandInstDbType' required='N' />
+   <field name='StandInstDbName' required='N' />
+   <field name='StandInstDbID' required='N' />
+   <group name='NoDlvyInst' required='N'>
+    <field name='SettlInstSource' required='N' />
+    <field name='DlvyInstType' required='N' />
+    <component name='SettlParties' required='N' />
+   </group>
+  </component>
+  <component name='OrderQtyData'>
+   <field name='OrderQty' required='N' />
+   <field name='CashOrderQty' required='N' />
+   <field name='OrderPercent' required='N' />
+   <field name='RoundingDirection' required='N' />
+   <field name='RoundingModulus' required='N' />
+  </component>
+  <component name='InstrumentLeg'>
+   <field name='LegSymbol' required='N' />
+   <field name='LegSymbolSfx' required='N' />
+   <field name='LegSecurityID' required='N' />
+   <field name='LegSecurityIDSource' required='N' />
+   <group name='NoLegSecurityAltID' required='N'>
+    <field name='LegSecurityAltID' required='N' />
+    <field name='LegSecurityAltIDSource' required='N' />
+   </group>
+   <field name='LegProduct' required='N' />
+   <field name='LegCFICode' required='N' />
+   <field name='LegSecurityType' required='N' />
+   <field name='LegSecuritySubType' required='N' />
+   <field name='LegMaturityMonthYear' required='N' />
+   <field name='LegMaturityDate' required='N' />
+   <field name='LegCouponPaymentDate' required='N' />
+   <field name='LegIssueDate' required='N' />
+   <field name='LegRepoCollateralSecurityType' required='N' />
+   <field name='LegRepurchaseTerm' required='N' />
+   <field name='LegRepurchaseRate' required='N' />
+   <field name='LegFactor' required='N' />
+   <field name='LegCreditRating' required='N' />
+   <field name='LegInstrRegistry' required='N' />
+   <field name='LegCountryOfIssue' required='N' />
+   <field name='LegStateOrProvinceOfIssue' required='N' />
+   <field name='LegLocaleOfIssue' required='N' />
+   <field name='LegRedemptionDate' required='N' />
+   <field name='LegStrikePrice' required='N' />
+   <field name='LegStrikeCurrency' required='N' />
+   <field name='LegOptAttribute' required='N' />
+   <field name='LegContractMultiplier' required='N' />
+   <field name='LegCouponRate' required='N' />
+   <field name='LegSecurityExchange' required='N' />
+   <field name='LegIssuer' required='N' />
+   <field name='EncodedLegIssuerLen' required='N' />
+   <field name='EncodedLegIssuer' required='N' />
+   <field name='LegSecurityDesc' required='N' />
+   <field name='EncodedLegSecurityDescLen' required='N' />
+   <field name='EncodedLegSecurityDesc' required='N' />
+   <field name='LegRatioQty' required='N' />
+   <field name='LegSide' required='N' />
+   <field name='LegCurrency' required='N' />
+   <field name='LegPool' required='N' />
+   <field name='LegDatedDate' required='N' />
+   <field name='LegContractSettlMonth' required='N' />
+   <field name='LegInterestAccrualDate' required='N' />
+  </component>
+ </components>
+ <fields>
+  <field number='1' name='Account' type='STRING' />
+  <field number='2' name='AdvId' type='STRING' />
+  <field number='3' name='AdvRefID' type='STRING' />
+  <field number='4' name='AdvSide' type='CHAR'>
+   <value enum='B' description='BUY' />
+   <value enum='S' description='SELL' />
+   <value enum='T' description='TRADE' />
+   <value enum='X' description='CROSS' />
+  </field>
+  <field number='5' name='AdvTransType' type='STRING'>
+   <value enum='C' description='ADVCANCEL' />
+   <value enum='N' description='ADVNEW' />
+   <value enum='R' description='ADVREPLACE' />
+  </field>
+  <field number='6' name='AvgPx' type='PRICE' />
+  <field number='7' name='BeginSeqNo' type='SEQNUM' />
+  <field number='8' name='BeginString' type='STRING' />
+  <field number='9' name='BodyLength' type='LENGTH' />
+  <field number='10' name='CheckSum' type='STRING' />
+  <field number='11' name='ClOrdID' type='STRING' />
+  <field number='12' name='Commission' type='AMT' />
+  <field number='13' name='CommType' type='CHAR'>
+   <value enum='1' description='PER_UNIT' />
+   <value enum='2' description='PERCENT' />
+   <value enum='3' description='ABSOLUTE' />
+   <value enum='4' description='PCTWAIVEDCSHDISC' />
+   <value enum='5' description='PCTWAIVEDENUNITS' />
+   <value enum='6' description='PERBOND' />
+  </field>
+  <field number='14' name='CumQty' type='QTY' />
+  <field number='15' name='Currency' type='CURRENCY' />
+  <field number='16' name='EndSeqNo' type='SEQNUM' />
+  <field number='17' name='ExecID' type='STRING' />
+  <field number='18' name='ExecInst' type='MULTIPLEVALUESTRING'>
+   <value enum='0' description='STAYOFFER' />
+   <value enum='1' description='NOTHELD' />
+   <value enum='2' description='WORK' />
+   <value enum='3' description='GOALONG' />
+   <value enum='4' description='OVERDAY' />
+   <value enum='5' description='HELD' />
+   <value enum='6' description='PARTNOTINIT' />
+   <value enum='7' description='STRICTSCALE' />
+   <value enum='8' description='TRYTOSCALE' />
+   <value enum='9' description='STAYBID' />
+   <value enum='A' description='NOCROSS' />
+   <value enum='a' description='TRAILSTOPPEG' />
+   <value enum='B' description='OKCROSS' />
+   <value enum='b' description='STRICTLIMIT' />
+   <value enum='c' description='IGNOREPRICECHK' />
+   <value enum='C' description='CALLFIRST' />
+   <value enum='d' description='PEGTOLIMIT' />
+   <value enum='D' description='PERCVOL' />
+   <value enum='E' description='DNI' />
+   <value enum='e' description='WORKTOSTRATEGY' />
+   <value enum='F' description='DNR' />
+   <value enum='G' description='AON' />
+   <value enum='H' description='RESTATEONSYSFAIL' />
+   <value enum='I' description='INSTITONLY' />
+   <value enum='J' description='RESTATEONTRADINGHALT' />
+   <value enum='K' description='CANCELONTRADINGHALT' />
+   <value enum='L' description='LASTPEG' />
+   <value enum='M' description='MIDPRCPEG' />
+   <value enum='N' description='NONNEGO' />
+   <value enum='O' description='OPENPEG' />
+   <value enum='P' description='MARKPEG' />
+   <value enum='Q' description='CANCELONSYSFAIL' />
+   <value enum='R' description='PRIMPEG' />
+   <value enum='S' description='SUSPEND' />
+   <value enum='U' description='CUSTDISPINST' />
+   <value enum='V' description='NETTING' />
+   <value enum='W' description='PEGVWAP' />
+   <value enum='X' description='TRADEALONG' />
+   <value enum='Y' description='TRYTOSTOP' />
+   <value enum='Z' description='CXLIFNOTBEST' />
+  </field>
+  <field number='19' name='ExecRefID' type='STRING' />
+  <field number='20' name='ExecTransType' type='CHAR'>
+   <value enum='0' description='NEW' />
+   <value enum='1' description='CANCEL' />
+   <value enum='2' description='CORRECT' />
+   <value enum='3' description='STATUS' />
+  </field>
+  <field number='21' name='HandlInst' type='CHAR'>
+   <value enum='1' description='AUTOEXECPRIV' />
+   <value enum='2' description='AUTOEXECPUB' />
+   <value enum='3' description='MANUAL' />
+  </field>
+  <field number='22' name='SecurityIDSource' type='STRING'>
+   <value enum='1' description='CUSIP' />
+   <value enum='2' description='SEDOL' />
+   <value enum='3' description='QUIK' />
+   <value enum='4' description='ISIN' />
+   <value enum='5' description='RIC' />
+   <value enum='6' description='ISOCURR' />
+   <value enum='7' description='ISOCOUNTRY' />
+   <value enum='8' description='EXCHSYMB' />
+   <value enum='9' description='CTA' />
+   <value enum='A' description='BLMBRG' />
+   <value enum='B' description='WERTPAPIER' />
+   <value enum='C' description='DUTCH' />
+   <value enum='D' description='VALOREN' />
+   <value enum='E' description='SICOVAM' />
+   <value enum='F' description='BELGIAN' />
+   <value enum='G' description='COMMON' />
+   <value enum='H' description='CLEARINGHOUSE' />
+   <value enum='I' description='FPML' />
+   <value enum='J' description='OPTIONPRICEREPORTINGAUTHORITY' />
+  </field>
+  <field number='23' name='IOIID' type='STRING' />
+  <field number='24' name='IOIOthSvc' type='CHAR' />
+  <field number='25' name='IOIQltyInd' type='CHAR'>
+   <value enum='H' description='HIGH' />
+   <value enum='L' description='LOW' />
+   <value enum='M' description='MEDIUM' />
+  </field>
+  <field number='26' name='IOIRefID' type='STRING' />
+  <field number='27' name='IOIQty' type='STRING' />
+  <field number='28' name='IOITransType' type='CHAR'>
+   <value enum='C' description='CANCEL' />
+   <value enum='N' description='NEW' />
+   <value enum='R' description='REPLACE' />
+  </field>
+  <field number='29' name='LastCapacity' type='CHAR'>
+   <value enum='1' description='A' />
+   <value enum='2' description='XA' />
+   <value enum='3' description='XP' />
+   <value enum='4' description='P' />
+  </field>
+  <field number='30' name='LastMkt' type='EXCHANGE' />
+  <field number='31' name='LastPx' type='PRICE' />
+  <field number='32' name='LastQty' type='QTY' />
+  <field number='33' name='NoLinesOfText' type='NUMINGROUP' />
+  <field number='34' name='MsgSeqNum' type='SEQNUM' />
+  <field number='35' name='MsgType' type='STRING'>
+   <value enum='0' description='HEARTBEAT' />
+   <value enum='1' description='TESTREQUEST' />
+   <value enum='2' description='RESENDREQUEST' />
+   <value enum='3' description='REJECT' />
+   <value enum='4' description='SEQUENCERESET' />
+   <value enum='5' description='LOGOUT' />
+   <value enum='6' description='IOI' />
+   <value enum='7' description='ADVERTISEMENT' />
+   <value enum='8' description='EXECUTIONREPORT' />
+   <value enum='9' description='ORDERCANCELREJECT' />
+   <value enum='a' description='QUOTESTATUSREQUEST' />
+   <value enum='A' description='LOGON' />
+   <value enum='AA' description='DERIVATIVESECURITYLIST' />
+   <value enum='AB' description='NEWORDERMULTILEG' />
+   <value enum='AC' description='MULTILEGORDERCANCELREPLACE' />
+   <value enum='AD' description='TRADECAPTUREREPORTREQUEST' />
+   <value enum='AE' description='TRADECAPTUREREPORT' />
+   <value enum='AF' description='ORDERMASSSTATUSREQUEST' />
+   <value enum='AG' description='QUOTEREQUESTREJECT' />
+   <value enum='AH' description='RFQREQUEST' />
+   <value enum='AI' description='QUOTESTATUSREPORT' />
+   <value enum='AJ' description='QUOTERESPONSE' />
+   <value enum='AK' description='CONFIRMATION' />
+   <value enum='AL' description='POSITIONMAINTENANCEREQUEST' />
+   <value enum='AM' description='POSITIONMAINTENANCEREPORT' />
+   <value enum='AN' description='REQUESTFORPOSITIONS' />
+   <value enum='AO' description='REQUESTFORPOSITIONSACK' />
+   <value enum='AP' description='POSITIONREPORT' />
+   <value enum='AQ' description='TRADECAPTUREREPORTREQUESTACK' />
+   <value enum='AR' description='TRADECAPTUREREPORTACK' />
+   <value enum='AS' description='ALLOCATIONREPORT' />
+   <value enum='AT' description='ALLOCATIONREPORTACK' />
+   <value enum='AU' description='CONFIRMATIONACK' />
+   <value enum='AV' description='SETTLEMENTINSTRUCTIONREQUEST' />
+   <value enum='AW' description='ASSIGNMENTREPORT' />
+   <value enum='AX' description='COLLATERALREQUEST' />
+   <value enum='AY' description='COLLATERALASSIGNMENT' />
+   <value enum='AZ' description='COLLATERALRESPONSE' />
+   <value enum='B' description='NEWS' />
+   <value enum='b' description='MASSQUOTEACKNOWLEDGEMENT' />
+   <value enum='BA' description='COLLATERALREPORT' />
+   <value enum='BB' description='COLLATERALINQUIRY' />
+   <value enum='BC' description='NETWORKCOUNTERPARTYSYSTEMSTATUSREQUEST' />
+   <value enum='BD' description='NETWORKCOUNTERPARTYSYSTEMSTATUSRESPONSE' />
+   <value enum='BE' description='USERREQUEST' />
+   <value enum='BF' description='USERRESPONSE' />
+   <value enum='BG' description='COLLATERALINQUIRYACK' />
+   <value enum='BH' description='CONFIRMATIONREQUEST' />
+   <value enum='C' description='EMAIL' />
+   <value enum='c' description='SECURITYDEFINITIONREQUEST' />
+   <value enum='d' description='SECURITYDEFINITION' />
+   <value enum='D' description='NEWORDERSINGLE' />
+   <value enum='e' description='SECURITYSTATUSREQUEST' />
+   <value enum='E' description='NEWORDERLIST' />
+   <value enum='F' description='ORDERCANCELREQUEST' />
+   <value enum='f' description='SECURITYSTATUS' />
+   <value enum='G' description='ORDERCANCELREPLACEREQUEST' />
+   <value enum='g' description='TRADINGSESSIONSTATUSREQUEST' />
+   <value enum='H' description='ORDERSTATUSREQUEST' />
+   <value enum='h' description='TRADINGSESSIONSTATUS' />
+   <value enum='i' description='MASSQUOTE' />
+   <value enum='j' description='BUSINESSMESSAGEREJECT' />
+   <value enum='J' description='ALLOCATIONINSTRUCTION' />
+   <value enum='k' description='BIDREQUEST' />
+   <value enum='K' description='LISTCANCELREQUEST' />
+   <value enum='l' description='BIDRESPONSE' />
+   <value enum='L' description='LISTEXECUTE' />
+   <value enum='m' description='LISTSTRIKEPRICE' />
+   <value enum='M' description='LISTSTATUSREQUEST' />
+   <value enum='n' description='XMLNONFIX' />
+   <value enum='N' description='LISTSTATUS' />
+   <value enum='o' description='REGISTRATIONINSTRUCTIONS' />
+   <value enum='p' description='REGISTRATIONINSTRUCTIONSRESPONSE' />
+   <value enum='P' description='ALLOCATIONINSTRUCTIONACK' />
+   <value enum='q' description='ORDERMASSCANCELREQUEST' />
+   <value enum='Q' description='DONTKNOWTRADEDK' />
+   <value enum='R' description='QUOTEREQUEST' />
+   <value enum='r' description='ORDERMASSCANCELREPORT' />
+   <value enum='S' description='QUOTE' />
+   <value enum='s' description='NEWORDERCROSS' />
+   <value enum='T' description='SETTLEMENTINSTRUCTIONS' />
+   <value enum='t' description='CROSSORDERCANCELREPLACEREQUEST' />
+   <value enum='u' description='CROSSORDERCANCELREQUEST' />
+   <value enum='V' description='MARKETDATAREQUEST' />
+   <value enum='v' description='SECURITYTYPEREQUEST' />
+   <value enum='w' description='SECURITYTYPES' />
+   <value enum='W' description='MARKETDATASNAPSHOTFULLREFRESH' />
+   <value enum='x' description='SECURITYLISTREQUEST' />
+   <value enum='X' description='MARKETDATAINCREMENTALREFRESH' />
+   <value enum='Y' description='MARKETDATAREQUESTREJECT' />
+   <value enum='y' description='SECURITYLIST' />
+   <value enum='Z' description='QUOTECANCEL' />
+   <value enum='z' description='DERIVATIVESECURITYLISTREQUEST' />
+  </field>
+  <field number='36' name='NewSeqNo' type='SEQNUM' />
+  <field number='37' name='OrderID' type='STRING' />
+  <field number='38' name='OrderQty' type='QTY' />
+  <field number='39' name='OrdStatus' type='CHAR'>
+   <value enum='0' description='NEW' />
+   <value enum='1' description='PARTIAL' />
+   <value enum='2' description='FILLED' />
+   <value enum='3' description='DONE' />
+   <value enum='4' description='CANCELED' />
+   <value enum='6' description='PENDING_CANCEL' />
+   <value enum='7' description='STOPPED' />
+   <value enum='8' description='REJECTED' />
+   <value enum='9' description='SUSPENDED' />
+   <value enum='A' description='PENDINGNEW' />
+   <value enum='B' description='CALCULATED' />
+   <value enum='C' description='EXPIRED' />
+   <value enum='D' description='ACCEPTBIDDING' />
+   <value enum='E' description='PENDINGREP' />
+  </field>
+  <field number='40' name='OrdType' type='CHAR'>
+   <value enum='1' description='MARKET' />
+   <value enum='2' description='LIMIT' />
+   <value enum='3' description='STOP' />
+   <value enum='4' description='STOPLIMIT' />
+   <value enum='5' description='MARKETONCLOSE' />
+   <value enum='6' description='WITHORWITHOUT' />
+   <value enum='7' description='LIMITORBETTER' />
+   <value enum='8' description='LIMITWITHORWITHOUT' />
+   <value enum='9' description='ONBASIS' />
+   <value enum='A' description='ONCLOSE' />
+   <value enum='B' description='LIMITONCLOSE' />
+   <value enum='C' description='FOREXMARKET' />
+   <value enum='D' description='PREVIOUSLYQUOTED' />
+   <value enum='E' description='PREVIOUSLYINDICATED' />
+   <value enum='F' description='FOREXLIMIT' />
+   <value enum='G' description='FOREXSWAP' />
+   <value enum='H' description='FOREXPREVIOUSLYQUOTED' />
+   <value enum='I' description='FUNARI' />
+   <value enum='J' description='MARKETIFTOUCHED' />
+   <value enum='K' description='MARKETWITHLEFTOVERLIMIT' />
+   <value enum='L' description='PREVIOUSFUNDVALUATIONPOINT' />
+   <value enum='M' description='NEXTFUNDVALUATIONPOINT' />
+   <value enum='P' description='PEGGED' />
+  </field>
+  <field number='41' name='OrigClOrdID' type='STRING' />
+  <field number='42' name='OrigTime' type='UTCTIMESTAMP' />
+  <field number='43' name='PossDupFlag' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='44' name='Price' type='PRICE' />
+  <field number='45' name='RefSeqNum' type='SEQNUM' />
+  <field number='46' name='RelatdSym' type='STRING' />
+  <field number='47' name='Rule80A' type='CHAR'>
+   <value enum='A' description='AGENCYSINGLE' />
+   <value enum='B' description='SHTEXTRANA' />
+   <value enum='C' description='PRGNONINDEXARBMEM' />
+   <value enum='D' description='PRGINDEXARBMEM' />
+   <value enum='E' description='MARKETMAKER' />
+   <value enum='F' description='SHTEXTRANW' />
+   <value enum='H' description='SHTEXTRANI' />
+   <value enum='I' description='INVINESTOR' />
+   <value enum='J' description='PRGNONINDEXARBINV' />
+   <value enum='K' description='PRGINDEXARBINV' />
+   <value enum='L' description='SHTEXTRANMEM' />
+   <value enum='M' description='PRGNONINDEXARBOTHMEM' />
+   <value enum='N' description='PRGINDEXARBOTHMEM' />
+   <value enum='O' description='COMPETINGDEALER' />
+   <value enum='P' description='PRINCIPAL' />
+   <value enum='R' description='COMPDEALER1' />
+   <value enum='S' description='SPECIALIST' />
+   <value enum='T' description='COMPDEALER2' />
+   <value enum='U' description='PRGINDEXARBOTHAGN' />
+   <value enum='W' description='ALLOTHERAGN' />
+   <value enum='X' description='SHTEXTRANMEMWT' />
+   <value enum='Y' description='PRGNONINDEXARBOTHAGN' />
+   <value enum='Z' description='SHTEXTRANNONMEM' />
+  </field>
+  <field number='48' name='SecurityID' type='STRING' />
+  <field number='49' name='SenderCompID' type='STRING' />
+  <field number='50' name='SenderSubID' type='STRING' />
+  <field number='51' name='SendingDate' type='LOCALMKTDATE' />
+  <field number='52' name='SendingTime' type='UTCTIMESTAMP' />
+  <field number='53' name='Quantity' type='QTY' />
+  <field number='54' name='Side' type='CHAR'>
+   <value enum='1' description='BUY' />
+   <value enum='2' description='SELL' />
+   <value enum='3' description='BUYMIN' />
+   <value enum='4' description='SELLPLUS' />
+   <value enum='5' description='SELLSHT' />
+   <value enum='6' description='SELLSHTEX' />
+   <value enum='7' description='UNDISC' />
+   <value enum='8' description='CROSS' />
+   <value enum='9' description='CROSSSHORT' />
+   <value enum='A' description='CROSSSHORTEX' />
+   <value enum='B' description='ASDEFINED' />
+   <value enum='C' description='OPPOSITE' />
+   <value enum='D' description='SUBSCRIBE' />
+   <value enum='E' description='REDEEM' />
+   <value enum='F' description='LENDFINANCING' />
+   <value enum='G' description='BORROWFINANCING' />
+  </field>
+  <field number='55' name='Symbol' type='STRING' />
+  <field number='56' name='TargetCompID' type='STRING' />
+  <field number='57' name='TargetSubID' type='STRING' />
+  <field number='58' name='Text' type='STRING' />
+  <field number='59' name='TimeInForce' type='CHAR'>
+   <value enum='0' description='DAY' />
+   <value enum='1' description='GOODTILLCANCEL' />
+   <value enum='2' description='ATTHEOPENING' />
+   <value enum='3' description='IMMEDIATEORCANCEL' />
+   <value enum='4' description='FILLORKILL' />
+   <value enum='5' description='GOODTILLCROSSING' />
+   <value enum='6' description='GOODTILLDATE' />
+   <value enum='7' description='ATTHECLOSE' />
+  </field>
+  <field number='60' name='TransactTime' type='UTCTIMESTAMP' />
+  <field number='61' name='Urgency' type='CHAR'>
+   <value enum='0' description='NORMAL' />
+   <value enum='1' description='FLASH' />
+   <value enum='2' description='BACKGROUND' />
+  </field>
+  <field number='62' name='ValidUntilTime' type='UTCTIMESTAMP' />
+  <field number='63' name='SettlType' type='CHAR'>
+   <value enum='0' description='REGULAR' />
+   <value enum='1' description='CASH' />
+   <value enum='2' description='NEXTDAY' />
+   <value enum='3' description='T2' />
+   <value enum='4' description='T3' />
+   <value enum='5' description='T4' />
+   <value enum='6' description='FUTURE' />
+   <value enum='7' description='WHENISSUED' />
+   <value enum='8' description='T5' />
+   <value enum='9' description='T1' />
+  </field>
+  <field number='64' name='SettlDate' type='LOCALMKTDATE' />
+  <field number='65' name='SymbolSfx' type='STRING'>
+   <value enum='CD' description='EUCPLUMPSUMINTEREST' />
+   <value enum='WI' description='WHENISSUED' />
+  </field>
+  <field number='66' name='ListID' type='STRING' />
+  <field number='67' name='ListSeqNo' type='INT' />
+  <field number='68' name='TotNoOrders' type='INT' />
+  <field number='69' name='ListExecInst' type='STRING' />
+  <field number='70' name='AllocID' type='STRING' />
+  <field number='71' name='AllocTransType' type='CHAR'>
+   <value enum='0' description='NEW' />
+   <value enum='1' description='REPLACE' />
+   <value enum='2' description='CANCEL' />
+   <value enum='3' description='PRELIMINARY' />
+   <value enum='4' description='CALCULATED' />
+   <value enum='5' description='CALCULATEDWITHOUTPRELIMINARY' />
+  </field>
+  <field number='72' name='RefAllocID' type='STRING' />
+  <field number='73' name='NoOrders' type='NUMINGROUP' />
+  <field number='74' name='AvgPxPrecision' type='INT' />
+  <field number='75' name='TradeDate' type='LOCALMKTDATE' />
+  <field number='76' name='ExecBroker' type='STRING' />
+  <field number='77' name='PositionEffect' type='CHAR'>
+   <value enum='C' description='CLOSE' />
+   <value enum='F' description='FIFO' />
+   <value enum='O' description='OPEN' />
+   <value enum='R' description='ROLLED' />
+  </field>
+  <field number='78' name='NoAllocs' type='NUMINGROUP' />
+  <field number='79' name='AllocAccount' type='STRING' />
+  <field number='80' name='AllocQty' type='QTY' />
+  <field number='81' name='ProcessCode' type='CHAR'>
+   <value enum='0' description='REGULAR' />
+   <value enum='1' description='SOFTDOLLAR' />
+   <value enum='2' description='STEPIN' />
+   <value enum='3' description='STEPOUT' />
+   <value enum='4' description='STEPINSOFT' />
+   <value enum='5' description='STEPOUTSOFT' />
+   <value enum='6' description='PLANSPONSOR' />
+  </field>
+  <field number='82' name='NoRpts' type='INT' />
+  <field number='83' name='RptSeq' type='INT' />
+  <field number='84' name='CxlQty' type='QTY' />
+  <field number='85' name='NoDlvyInst' type='NUMINGROUP' />
+  <field number='86' name='DlvyInst' type='STRING' />
+  <field number='87' name='AllocStatus' type='INT'>
+   <value enum='0' description='ACCEPTEDSUCCESSFULLYPROCESSED' />
+   <value enum='1' description='BLOCKLEVELREJECT' />
+   <value enum='2' description='ACCOUNTLEVELREJECT' />
+   <value enum='3' description='RECEIVEDRECEIVEDNOTYETPROCESSED' />
+   <value enum='4' description='INCOMPLETE' />
+   <value enum='5' description='REJECTEDBYINTERMEDIARY' />
+  </field>
+  <field number='88' name='AllocRejCode' type='INT'>
+   <value enum='0' description='UNKNOWNACCT' />
+   <value enum='1' description='INCORRECTQTY' />
+   <value enum='10' description='UNKNOWNORSTALEEXECID' />
+   <value enum='11' description='MISMATCHEDDATA' />
+   <value enum='12' description='UNKNOWNCLORDID' />
+   <value enum='13' description='WAREHOUSEREQUESTREJECTED' />
+   <value enum='2' description='INCORRECTAVGPRC' />
+   <value enum='3' description='INCORRECTBRKMNC' />
+   <value enum='4' description='COMMDIFF' />
+   <value enum='5' description='UNKNOWNORDID' />
+   <value enum='6' description='UNKNOWNLISTID' />
+   <value enum='7' description='OTHER' />
+   <value enum='8' description='INCORRECTALLOCATEDQUANTITY' />
+   <value enum='9' description='CALCULATIONDIFFERENCE' />
+  </field>
+  <field number='89' name='Signature' type='DATA' />
+  <field number='90' name='SecureDataLen' type='LENGTH' />
+  <field number='91' name='SecureData' type='DATA' />
+  <field number='92' name='BrokerOfCredit' type='STRING' />
+  <field number='93' name='SignatureLength' type='LENGTH' />
+  <field number='94' name='EmailType' type='CHAR'>
+   <value enum='0' description='NEW' />
+   <value enum='1' description='REPLY' />
+   <value enum='2' description='ADMINREPLY' />
+  </field>
+  <field number='95' name='RawDataLength' type='LENGTH' />
+  <field number='96' name='RawData' type='DATA' />
+  <field number='97' name='PossResend' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='98' name='EncryptMethod' type='INT'>
+   <value enum='0' description='NONEOTHER' />
+   <value enum='1' description='PKCSPROPRIETARY' />
+   <value enum='2' description='DESECBMODE' />
+   <value enum='3' description='PKCSDESPROPRIETARY' />
+   <value enum='4' description='PGPDESDEFUNCT' />
+   <value enum='5' description='PGPDESMD5SEEAPPNOTEONFIXWEBSITE' />
+   <value enum='6' description='PEMDESMD5SEEAPPNOTEONFIXWEBSITENAFORFIXMLNOTUSED' />
+  </field>
+  <field number='99' name='StopPx' type='PRICE' />
+  <field number='100' name='ExDestination' type='EXCHANGE' />
+  <field number='102' name='CxlRejReason' type='INT'>
+   <value enum='0' description='TOOLATE' />
+   <value enum='1' description='UNKNOWN' />
+   <value enum='2' description='BROKEROPT' />
+   <value enum='3' description='ALREADYPENDINGCXL' />
+   <value enum='4' description='UNABLETOPROCESS' />
+   <value enum='5' description='ORIGORDMODTIMEMISMATCH' />
+   <value enum='6' description='DUPCLORDID' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='103' name='OrdRejReason' type='INT'>
+   <value enum='0' description='BROKEROPT' />
+   <value enum='1' description='UNKNOWNSYM' />
+   <value enum='10' description='INVINVID' />
+   <value enum='11' description='UNSUPPORDERCHAR' />
+   <value enum='12' description='SURVEILLENCE' />
+   <value enum='13' description='INCORRECTQUANTITY' />
+   <value enum='14' description='INCORRECTALLOCATEDQUANTITY' />
+   <value enum='15' description='UNKNOWNACCOUNTS' />
+   <value enum='2' description='EXCHCLOSED' />
+   <value enum='3' description='EXCEEDSLIM' />
+   <value enum='4' description='TOOLATE' />
+   <value enum='5' description='UNKNOWN' />
+   <value enum='6' description='DUPLICATE' />
+   <value enum='7' description='DUPLICATEVERBAL' />
+   <value enum='8' description='STALE' />
+   <value enum='9' description='TRADEALONGREQ' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='104' name='IOIQualifier' type='CHAR'>
+   <value enum='A' description='AON' />
+   <value enum='B' description='MOC' />
+   <value enum='C' description='ATCLOSE' />
+   <value enum='D' description='VWAP' />
+   <value enum='I' description='INTOUCH' />
+   <value enum='L' description='LIMIT' />
+   <value enum='M' description='MOREBEHIND' />
+   <value enum='O' description='ATOPEN' />
+   <value enum='P' description='TAKEPOSITION' />
+   <value enum='Q' description='ATMARKET' />
+   <value enum='R' description='READYTRADE' />
+   <value enum='S' description='PORTSHOW' />
+   <value enum='T' description='THROUGHDAY' />
+   <value enum='V' description='VERSUS' />
+   <value enum='W' description='INDWRKAWAY' />
+   <value enum='X' description='CROSSOPP' />
+   <value enum='Y' description='ATMID' />
+   <value enum='Z' description='PREOPEN' />
+  </field>
+  <field number='105' name='WaveNo' type='STRING' />
+  <field number='106' name='Issuer' type='STRING' />
+  <field number='107' name='SecurityDesc' type='STRING' />
+  <field number='108' name='HeartBtInt' type='INT' />
+  <field number='109' name='ClientID' type='STRING' />
+  <field number='110' name='MinQty' type='QTY' />
+  <field number='111' name='MaxFloor' type='QTY' />
+  <field number='112' name='TestReqID' type='STRING' />
+  <field number='113' name='ReportToExch' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='114' name='LocateReqd' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='115' name='OnBehalfOfCompID' type='STRING' />
+  <field number='116' name='OnBehalfOfSubID' type='STRING' />
+  <field number='117' name='QuoteID' type='STRING' />
+  <field number='118' name='NetMoney' type='AMT' />
+  <field number='119' name='SettlCurrAmt' type='AMT' />
+  <field number='120' name='SettlCurrency' type='CURRENCY' />
+  <field number='121' name='ForexReq' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='122' name='OrigSendingTime' type='UTCTIMESTAMP' />
+  <field number='123' name='GapFillFlag' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='124' name='NoExecs' type='NUMINGROUP' />
+  <field number='125' name='CxlType' type='CHAR' />
+  <field number='126' name='ExpireTime' type='UTCTIMESTAMP' />
+  <field number='127' name='DKReason' type='CHAR'>
+   <value enum='A' description='UNKNOWNSYMBOL' />
+   <value enum='B' description='WRONGSIDE' />
+   <value enum='C' description='QUANTITYEXCEEDSORDER' />
+   <value enum='D' description='NOMATCH' />
+   <value enum='E' description='PRICEEXCEEDSLIMIT' />
+   <value enum='F' description='CALCULATIONDIFFERENCE' />
+   <value enum='Z' description='OTHER' />
+  </field>
+  <field number='128' name='DeliverToCompID' type='STRING' />
+  <field number='129' name='DeliverToSubID' type='STRING' />
+  <field number='130' name='IOINaturalFlag' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='131' name='QuoteReqID' type='STRING' />
+  <field number='132' name='BidPx' type='PRICE' />
+  <field number='133' name='OfferPx' type='PRICE' />
+  <field number='134' name='BidSize' type='QTY' />
+  <field number='135' name='OfferSize' type='QTY' />
+  <field number='136' name='NoMiscFees' type='NUMINGROUP' />
+  <field number='137' name='MiscFeeAmt' type='AMT' />
+  <field number='138' name='MiscFeeCurr' type='CURRENCY' />
+  <field number='139' name='MiscFeeType' type='CHAR'>
+   <value enum='1' description='REG' />
+   <value enum='10' description='TRANSACTION' />
+   <value enum='11' description='CONVERSION' />
+   <value enum='12' description='AGENT' />
+   <value enum='2' description='TAX' />
+   <value enum='3' description='LOCALCOMM' />
+   <value enum='4' description='EXCHFEE' />
+   <value enum='5' description='STAMP' />
+   <value enum='6' description='LEVY' />
+   <value enum='7' description='OTHER' />
+   <value enum='8' description='MARKUP' />
+   <value enum='9' description='CONSUMPTION' />
+  </field>
+  <field number='140' name='PrevClosePx' type='PRICE' />
+  <field number='141' name='ResetSeqNumFlag' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='142' name='SenderLocationID' type='STRING' />
+  <field number='143' name='TargetLocationID' type='STRING' />
+  <field number='144' name='OnBehalfOfLocationID' type='STRING' />
+  <field number='145' name='DeliverToLocationID' type='STRING' />
+  <field number='146' name='NoRelatedSym' type='NUMINGROUP' />
+  <field number='147' name='Subject' type='STRING' />
+  <field number='148' name='Headline' type='STRING' />
+  <field number='149' name='URLLink' type='STRING' />
+  <field number='150' name='ExecType' type='CHAR'>
+   <value enum='0' description='NEW' />
+   <value enum='3' description='DONE' />
+   <value enum='4' description='CANCELED' />
+   <value enum='5' description='REPLACED' />
+   <value enum='6' description='PENDINGCXL' />
+   <value enum='7' description='STOPPED' />
+   <value enum='8' description='REJECTED' />
+   <value enum='9' description='SUSPENDED' />
+   <value enum='A' description='PENDINGNEW' />
+   <value enum='B' description='CALCULATED' />
+   <value enum='C' description='EXPIRED' />
+   <value enum='D' description='RESTATED' />
+   <value enum='E' description='PENDINGREPLACE' />
+   <value enum='F' description='TRADE' />
+   <value enum='G' description='TRADECORRECT' />
+   <value enum='H' description='TRADECANCEL' />
+   <value enum='I' description='ORDERSTATUS' />
+  </field>
+  <field number='151' name='LeavesQty' type='QTY' />
+  <field number='152' name='CashOrderQty' type='QTY' />
+  <field number='153' name='AllocAvgPx' type='PRICE' />
+  <field number='154' name='AllocNetMoney' type='AMT' />
+  <field number='155' name='SettlCurrFxRate' type='FLOAT' />
+  <field number='156' name='SettlCurrFxRateCalc' type='CHAR'>
+   <value enum='M' description='MULTIPLY' />
+   <value enum='D' description='DIVIDE' />
+  </field>
+  <field number='157' name='NumDaysInterest' type='INT' />
+  <field number='158' name='AccruedInterestRate' type='PERCENTAGE' />
+  <field number='159' name='AccruedInterestAmt' type='AMT' />
+  <field number='160' name='SettlInstMode' type='CHAR'>
+   <value enum='0' description='DEFAULT' />
+   <value enum='1' description='SIPROVIDED' />
+   <value enum='2' description='ACCOUNTOVERRIDING' />
+   <value enum='3' description='ACCOUNTSTANDING' />
+   <value enum='4' description='CIVORDERSINGLEACCT' />
+   <value enum='5' description='REJECT' />
+  </field>
+  <field number='161' name='AllocText' type='STRING' />
+  <field number='162' name='SettlInstID' type='STRING' />
+  <field number='163' name='SettlInstTransType' type='CHAR'>
+   <value enum='C' description='CANCEL' />
+   <value enum='N' description='NEW' />
+   <value enum='R' description='REPLACE' />
+   <value enum='T' description='RESTATE' />
+  </field>
+  <field number='164' name='EmailThreadID' type='STRING' />
+  <field number='165' name='SettlInstSource' type='CHAR'>
+   <value enum='1' description='BROKERINSTR' />
+   <value enum='2' description='INSTINSTR' />
+   <value enum='3' description='INVESTORCIV' />
+  </field>
+  <field number='166' name='SettlLocation' type='STRING'>
+   <value enum='CED' description='CEDEL' />
+   <value enum='DTC' description='DEPOSITORYTRUSTCOMPANY' />
+   <value enum='EUR' description='EUROCLEAR' />
+   <value enum='FED' description='FEDERALBOOKENTRY' />
+   <value enum='ISO_Country_Code' description='LOCALMARKETSETTLELOCATION' />
+   <value enum='PNY' description='PHYSICAL' />
+   <value enum='PTC' description='PARTICIPANTTRUSTCOMPANY' />
+  </field>
+  <field number='167' name='SecurityType' type='STRING'>
+   <value enum='ABS' description='ASSETBACKEDSECURITIES' />
+   <value enum='AMENDED' description='AMENDEDRESTATED' />
+   <value enum='AN' description='OTHERANTICIPATIONNOTESBANGANETC' />
+   <value enum='BA' description='BANKERSACCEPTANCE' />
+   <value enum='BN' description='BANKNOTES' />
+   <value enum='BOX' description='BILLOFEXCHANGES' />
+   <value enum='BRADY' description='BRADYBOND' />
+   <value enum='BRIDGE' description='BRIDGELOAN' />
+   <value enum='BUYSELL' description='BUYSELLBACK' />
+   <value enum='CB' description='CONVERTIBLEBOND' />
+   <value enum='CD' description='CERTIFICATEOFDEPOSIT' />
+   <value enum='CL' description='CALLLOANS' />
+   <value enum='CMBS' description='CORPMORTGAGEBACKEDSECURITIES' />
+   <value enum='CMO' description='COLLATERALIZEDMORTGAGEOBLIGATION' />
+   <value enum='COFO' description='CERTIFICATEOFOBLIGATION' />
+   <value enum='COFP' description='CERTIFICATEOFPARTICIPATION' />
+   <value enum='CORP' description='CORPORATEBOND' />
+   <value enum='CP' description='COMMERCIALPAPER' />
+   <value enum='CPP' description='CORPORATEPRIVATEPLACEMENT' />
+   <value enum='CS' description='COMMONSTOCK' />
+   <value enum='DEFLTED' description='DEFAULTED' />
+   <value enum='DINP' description='DEBTORINPOSSESSION' />
+   <value enum='DN' description='DEPOSITNOTES' />
+   <value enum='DUAL' description='DUALCURRENCY' />
+   <value enum='EUCD' description='EUROCERTIFICATEOFDEPOSIT' />
+   <value enum='EUCORP' description='EUROCORPORATEBOND' />
+   <value enum='EUCP' description='EUROCOMMERCIALPAPER' />
+   <value enum='EUSOV' description='EUROSOVEREIGNS' />
+   <value enum='EUSUPRA' description='EUROSUPRANATIONALCOUPONS' />
+   <value enum='FAC' description='FEDERALAGENCYCOUPON' />
+   <value enum='FADN' description='FEDERALAGENCYDISCOUNTNOTE' />
+   <value enum='FOR' description='FOREIGNEXCHANGECONTRACT' />
+   <value enum='FORWARD' description='FORWARD' />
+   <value enum='FUT' description='FUTURE' />
+   <value enum='GO' description='GENERALOBLIGATIONBONDS' />
+   <value enum='IET' description='IOETTEMORTGAGE' />
+   <value enum='LOFC' description='LETTEROFCREDIT' />
+   <value enum='LQN' description='LIQUIDITYNOTE' />
+   <value enum='MATURED' description='MATURED' />
+   <value enum='MBS' description='MORTGAGEBACKEDSECURITIES' />
+   <value enum='MF' description='MUTUALFUND' />
+   <value enum='MIO' description='MORTGAGEINTERESTONLY' />
+   <value enum='MLEG' description='MULTILEGINSTRUMENT' />
+   <value enum='MPO' description='MORTGAGEPRINCIPALONLY' />
+   <value enum='MPP' description='MORTGAGEPRIVATEPLACEMENT' />
+   <value enum='MPT' description='MISCELLANEOUSPASSTHROUGH' />
+   <value enum='MT' description='MANDATORYTENDER' />
+   <value enum='MTN' description='MEDIUMTERMNOTES' />
+   <value enum='NONE' description='NOSECURITYTYPE' />
+   <value enum='ONITE' description='OVERNIGHT' />
+   <value enum='OPT' description='OPTION' />
+   <value enum='PEF' description='PRIVATEEXPORTFUNDING' />
+   <value enum='PFAND' description='PFANDBRIEFE' />
+   <value enum='PN' description='PROMISSORYNOTE' />
+   <value enum='PS' description='PREFERREDSTOCK' />
+   <value enum='PZFJ' description='PLAZOSFIJOS' />
+   <value enum='RAN' description='REVENUEANTICIPATIONNOTE' />
+   <value enum='REPLACD' description='REPLACED' />
+   <value enum='REPO' description='REPURCHASE' />
+   <value enum='RETIRED' description='RETIRED' />
+   <value enum='REV' description='REVENUEBONDS' />
+   <value enum='RVLV' description='REVOLVERLOAN' />
+   <value enum='RVLVTRM' description='REVOLVERTERMLOAN' />
+   <value enum='SECLOAN' description='SECURITIESLOAN' />
+   <value enum='SECPLEDGE' description='SECURITIESPLEDGE' />
+   <value enum='SPCLA' description='SPECIALASSESSMENT' />
+   <value enum='SPCLO' description='SPECIALOBLIGATION' />
+   <value enum='SPCLT' description='SPECIALTAX' />
+   <value enum='STN' description='SHORTTERMLOANNOTE' />
+   <value enum='STRUCT' description='STRUCTUREDNOTES' />
+   <value enum='SUPRA' description='USDSUPRANATIONALCOUPONS' />
+   <value enum='SWING' description='SWINGLINEFACILITY' />
+   <value enum='TAN' description='TAXANTICIPATIONNOTE' />
+   <value enum='TAXA' description='TAXALLOCATION' />
+   <value enum='TBA' description='TOBEANNOUNCED' />
+   <value enum='TBILL' description='USTREASURYBILL' />
+   <value enum='TBOND' description='USTREASURYBOND' />
+   <value enum='TCAL' description='PRINCIPALSTRIPOFACALLABLEBONDORNOTE' />
+   <value enum='TD' description='TIMEDEPOSIT' />
+   <value enum='TECP' description='TAXEXEMPTCOMMERCIALPAPER' />
+   <value enum='TERM' description='TERMLOAN' />
+   <value enum='TINT' description='INTERESTSTRIPFROMANYBONDORNOTE' />
+   <value enum='TIPS' description='TREASURYINFLATIONPROTECTEDSECURITIES' />
+   <value enum='TNOTE' description='USTREASURYNOTE' />
+   <value enum='TPRN' description='PRINCIPALSTRIPFROMANONCALLABLEBONDORNOTE' />
+   <value enum='TRAN' description='TAXREVENUEANTICIPATIONNOTE' />
+   <value enum='UST' description='USTREASURYNOTEDEPRECATEDVALUEUSETNOTE' />
+   <value enum='USTB' description='USTREASURYBILLDEPRECATEDVALUEUSETBILL' />
+   <value enum='VRDN' description='VARIABLERATEDEMANDNOTE' />
+   <value enum='WAR' description='WARRANT' />
+   <value enum='WITHDRN' description='WITHDRAWN' />
+   <value enum='WLD' description='WILDCARDENTRY' />
+   <value enum='XCN' description='EXTENDEDCOMMNOTE' />
+   <value enum='XLINKD' description='INDEXEDLINKED' />
+   <value enum='YANK' description='YANKEECORPORATEBOND' />
+   <value enum='YCD' description='YANKEECERTIFICATEOFDEPOSIT' />
+  </field>
+  <field number='168' name='EffectiveTime' type='UTCTIMESTAMP' />
+  <field number='169' name='StandInstDbType' type='INT'>
+   <value enum='0' description='OTHER' />
+   <value enum='1' description='SID' />
+   <value enum='2' description='ALERT' />
+   <value enum='3' description='CUSTODIAN' />
+   <value enum='4' description='ACCOUNTNET' />
+  </field>
+  <field number='170' name='StandInstDbName' type='STRING' />
+  <field number='171' name='StandInstDbID' type='STRING' />
+  <field number='172' name='SettlDeliveryType' type='INT' />
+  <field number='173' name='SettlDepositoryCode' type='STRING' />
+  <field number='174' name='SettlBrkrCode' type='STRING' />
+  <field number='175' name='SettlInstCode' type='STRING' />
+  <field number='176' name='SecuritySettlAgentName' type='STRING' />
+  <field number='177' name='SecuritySettlAgentCode' type='STRING' />
+  <field number='178' name='SecuritySettlAgentAcctNum' type='STRING' />
+  <field number='179' name='SecuritySettlAgentAcctName' type='STRING' />
+  <field number='180' name='SecuritySettlAgentContactName' type='STRING' />
+  <field number='181' name='SecuritySettlAgentContactPhone' type='STRING' />
+  <field number='182' name='CashSettlAgentName' type='STRING' />
+  <field number='183' name='CashSettlAgentCode' type='STRING' />
+  <field number='184' name='CashSettlAgentAcctNum' type='STRING' />
+  <field number='185' name='CashSettlAgentAcctName' type='STRING' />
+  <field number='186' name='CashSettlAgentContactName' type='STRING' />
+  <field number='187' name='CashSettlAgentContactPhone' type='STRING' />
+  <field number='188' name='BidSpotRate' type='PRICE' />
+  <field number='189' name='BidForwardPoints' type='PRICEOFFSET' />
+  <field number='190' name='OfferSpotRate' type='PRICE' />
+  <field number='191' name='OfferForwardPoints' type='PRICEOFFSET' />
+  <field number='192' name='OrderQty2' type='QTY' />
+  <field number='193' name='SettlDate2' type='LOCALMKTDATE' />
+  <field number='194' name='LastSpotRate' type='PRICE' />
+  <field number='195' name='LastForwardPoints' type='PRICEOFFSET' />
+  <field number='196' name='AllocLinkID' type='STRING' />
+  <field number='197' name='AllocLinkType' type='INT'>
+   <value enum='0' description='FXNETTING' />
+   <value enum='1' description='FXSWAP' />
+  </field>
+  <field number='198' name='SecondaryOrderID' type='STRING' />
+  <field number='199' name='NoIOIQualifiers' type='NUMINGROUP' />
+  <field number='200' name='MaturityMonthYear' type='MONTHYEAR' />
+  <field number='201' name='PutOrCall' type='INT'>
+   <value enum='0' description='PUT' />
+   <value enum='1' description='CALL' />
+  </field>
+  <field number='202' name='StrikePrice' type='PRICE' />
+  <field number='203' name='CoveredOrUncovered' type='INT'>
+   <value enum='0' description='COVERED' />
+   <value enum='1' description='UNCOVERED' />
+  </field>
+  <field number='204' name='CustomerOrFirm' type='INT'>
+   <value enum='0' description='CUSTOMER' />
+   <value enum='1' description='FIRM' />
+  </field>
+  <field number='205' name='MaturityDay' type='DAYOFMONTH' />
+  <field number='206' name='OptAttribute' type='CHAR' />
+  <field number='207' name='SecurityExchange' type='EXCHANGE' />
+  <field number='208' name='NotifyBrokerOfCredit' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='209' name='AllocHandlInst' type='INT'>
+   <value enum='1' description='MATCH' />
+   <value enum='2' description='FORWARD' />
+   <value enum='3' description='FORWARDMATCH' />
+  </field>
+  <field number='210' name='MaxShow' type='QTY' />
+  <field number='211' name='PegOffsetValue' type='FLOAT' />
+  <field number='212' name='XmlDataLen' type='LENGTH' />
+  <field number='213' name='XmlData' type='DATA' />
+  <field number='214' name='SettlInstRefID' type='STRING' />
+  <field number='215' name='NoRoutingIDs' type='NUMINGROUP' />
+  <field number='216' name='RoutingType' type='INT'>
+   <value enum='1' description='TARGETFIRM' />
+   <value enum='2' description='TARGETLIST' />
+   <value enum='3' description='BLOCKFIRM' />
+   <value enum='4' description='BLOCKLIST' />
+  </field>
+  <field number='217' name='RoutingID' type='STRING' />
+  <field number='218' name='Spread' type='PRICEOFFSET' />
+  <field number='219' name='Benchmark' type='CHAR'>
+   <value enum='1' description='CURVE' />
+   <value enum='2' description='5YR' />
+   <value enum='3' description='OLD5' />
+   <value enum='4' description='10YR' />
+   <value enum='5' description='OLD10' />
+   <value enum='6' description='30YR' />
+   <value enum='7' description='OLD30' />
+   <value enum='8' description='3MOLIBOR' />
+   <value enum='9' description='6MOLIBOR' />
+  </field>
+  <field number='220' name='BenchmarkCurveCurrency' type='CURRENCY' />
+  <field number='221' name='BenchmarkCurveName' type='STRING'>
+   <value enum='EONIA' description='EONIA' />
+   <value enum='EUREPO' description='EUREPO' />
+   <value enum='Euribor' description='EURIBOR' />
+   <value enum='FutureSWAP' description='FUTURESWAP' />
+   <value enum='LIBID' description='LIBID' />
+   <value enum='LIBOR' description='LIBOR' />
+   <value enum='MuniAAA' description='MUNIAAA' />
+   <value enum='OTHER' description='OTHER' />
+   <value enum='Pfandbriefe' description='PFANDBRIEFE' />
+   <value enum='SONIA' description='SONIA' />
+   <value enum='SWAP' description='SWAP' />
+   <value enum='Treasury' description='TREASURY' />
+  </field>
+  <field number='222' name='BenchmarkCurvePoint' type='STRING' />
+  <field number='223' name='CouponRate' type='PERCENTAGE' />
+  <field number='224' name='CouponPaymentDate' type='LOCALMKTDATE' />
+  <field number='225' name='IssueDate' type='LOCALMKTDATE' />
+  <field number='226' name='RepurchaseTerm' type='INT' />
+  <field number='227' name='RepurchaseRate' type='PERCENTAGE' />
+  <field number='228' name='Factor' type='FLOAT' />
+  <field number='229' name='TradeOriginationDate' type='LOCALMKTDATE' />
+  <field number='230' name='ExDate' type='LOCALMKTDATE' />
+  <field number='231' name='ContractMultiplier' type='FLOAT' />
+  <field number='232' name='NoStipulations' type='NUMINGROUP' />
+  <field number='233' name='StipulationType' type='STRING'>
+   <value enum='ABS' description='ABSOLUTEPREPAYMENTSPEED' />
+   <value enum='AMT' description='AMT' />
+   <value enum='AUTOREINV' description='AUTOREINVESTMENTATRATEORBETTER' />
+   <value enum='BANKQUAL' description='BANKQUALIFIED' />
+   <value enum='BGNCON' description='BARGAINCONDITIONS' />
+   <value enum='COUPON' description='COUPONRANGE' />
+   <value enum='CPP' description='CONSTANTPREPAYMENTPENALTY' />
+   <value enum='CPR' description='CONSTANTPREPAYMENTRATE' />
+   <value enum='CPY' description='CONSTANTPREPAYMENTYIELD' />
+   <value enum='CURRENCY' description='ISOCURRENCYCODE' />
+   <value enum='CUSTOMDATE' description='CUSTOMSTARTENDDATE' />
+   <value enum='GEOG' description='GEOGRAPHICSANDRANGE' />
+   <value enum='HAIRCUT' description='VALUATIONDISCOUNT' />
+   <value enum='HEP' description='FINALCPROFHOMEEQUITYPREPAYMENTCURVE' />
+   <value enum='INSURED' description='INSURED' />
+   <value enum='ISSUE' description='YEARORYEARMONTHOFISSUE' />
+   <value enum='ISSUER' description='ISSUERSTICKER' />
+   <value enum='ISSUESIZE' description='ISSUESIZERANGE' />
+   <value enum='LOOKBACK' description='LOOKBACKDAYS' />
+   <value enum='LOT' description='EXPLICITLOTIDENTIFIER' />
+   <value enum='LOTVAR' description='LOTVARIANCEVALUEINPERCENTMAXIMUMOVERORUNDERALLOCATIONALLOWED' />
+   <value enum='MAT' description='MATURITYYEARANDMONTH' />
+   <value enum='MATURITY' description='MATURITYRANGE' />
+   <value enum='MAXDNOM' description='MAXIMUMDENOMINATION' />
+   <value enum='MAXSUBS' description='MAXIMUMSUBSTITUTIONSREPO' />
+   <value enum='MHP' description='PERCENTOFMANUFACTUREDHOUSINGPREPAYMENTCURVE' />
+   <value enum='MINDNOM' description='MINIMUMDENOMINATION' />
+   <value enum='MININCR' description='MINIMUMINCREMENT' />
+   <value enum='MINQTY' description='MINIMUMQUANTITY' />
+   <value enum='MPR' description='MONTHLYPREPAYMENTRATE' />
+   <value enum='PAYFREQ' description='PAYMENTFREQUENCYCALENDAR' />
+   <value enum='PIECES' description='NUMBEROFPIECES' />
+   <value enum='PMAX' description='POOLSMAXIMUM' />
+   <value enum='PMIN' description='POOLSMINIMUM' />
+   <value enum='PPC' description='PERCENTOFPROSPECTUSPREPAYMENTCURVE' />
+   <value enum='PPL' description='POOLSPERLOT' />
+   <value enum='PPM' description='POOLSPERMILLION' />
+   <value enum='PPT' description='POOLSPERTRADE' />
+   <value enum='PRICE' description='PRICERANGE' />
+   <value enum='PRICEFREQ' description='PRICINGFREQUENCY' />
+   <value enum='PROD' description='PRODUCTIONYEAR' />
+   <value enum='PROTECT' description='CALLPROTECTION' />
+   <value enum='PSA' description='PERCENTOFBMAPREPAYMENTCURVE' />
+   <value enum='PURPOSE' description='PURPOSE' />
+   <value enum='PXSOURCE' description='BENCHMARKPRICESOURCE' />
+   <value enum='RATING' description='RATINGSOURCEANDRANGE' />
+   <value enum='REDEMPTION' description='TYPEOFREDEMPTIONVALUESARE' />
+   <value enum='RESTRICTED' description='RESTRICTED' />
+   <value enum='SECTOR' description='MARKETSECTOR' />
+   <value enum='SECTYPE' description='SECURITYTYPEINCLUDEDOREXCLUDED' />
+   <value enum='SMM' description='SINGLEMONTHLYMORTALITY' />
+   <value enum='STRUCT' description='STRUCTURE' />
+   <value enum='SUBSFREQ' description='SUBSTITUTIONSFREQUENCYREPO' />
+   <value enum='SUBSLEFT' description='SUBSTITUTIONSLEFTREPO' />
+   <value enum='TEXT' description='FREEFORMTEXT' />
+   <value enum='TRDVAR' description='TRADEVARIANCEVALUEINPERCENTMAXIMUMOVERORUNDERALLOCATIONALLOWED' />
+   <value enum='WAC' description='WEIGHTEDAVERAGECOUPON' />
+   <value enum='WAL' description='WEIGHTEDAVERAGELIFECOUPON' />
+   <value enum='WALA' description='WEIGHTEDAVERAGELOANAGE' />
+   <value enum='WAM' description='WEIGHTEDAVERAGEMATURITY' />
+   <value enum='WHOLE' description='WHOLEPOOL' />
+   <value enum='YIELD' description='YIELDRANGE' />
+  </field>
+  <field number='234' name='StipulationValue' type='STRING' />
+  <field number='235' name='YieldType' type='STRING'>
+   <value enum='AFTERTAX' description='AFTERTAXYIELD' />
+   <value enum='ANNUAL' description='ANNUALYIELD' />
+   <value enum='ATISSUE' description='YIELDATISSUE' />
+   <value enum='AVGMATURITY' description='YIELDTOAVGMATURITY' />
+   <value enum='BOOK' description='BOOKYIELD' />
+   <value enum='CALL' description='YIELDTONEXTCALL' />
+   <value enum='CHANGE' description='YIELDCHANGESINCECLOSE' />
+   <value enum='CLOSE' description='CLOSINGYIELD' />
+   <value enum='COMPOUND' description='COMPOUNDYIELD' />
+   <value enum='CURRENT' description='CURRENTYIELD' />
+   <value enum='GOVTEQUIV' description='GVNTEQUIVALENTYIELD' />
+   <value enum='GROSS' description='TRUEGROSSYIELD' />
+   <value enum='INFLATION' description='YIELDINFLATIONASSUMPTION' />
+   <value enum='INVERSEFLOATER' description='INVFLOATERBONDYIELD' />
+   <value enum='LASTCLOSE' description='MOSTRECENTCLOSINGYIELD' />
+   <value enum='LASTMONTH' description='CLOSINGYIELDMOSTRECENTMONTH' />
+   <value enum='LASTQUARTER' description='CLOSINGYIELDMOSTRECENTQUARTER' />
+   <value enum='LASTYEAR' description='CLOSINGYIELDMOSTRECENTYEAR' />
+   <value enum='LONGAVGLIFE' description='YIELDTOLONGESTAVERAGELIFE' />
+   <value enum='MARK' description='MARKTOMARKETYIELD' />
+   <value enum='MATURITY' description='YIELDTOMATURITY' />
+   <value enum='NEXTREFUND' description='YIELDTONEXTREFUNDSINKING' />
+   <value enum='OPENAVG' description='OPENAVERAGEYIELD' />
+   <value enum='PREVCLOSE' description='PREVIOUSCLOSEYIELD' />
+   <value enum='PROCEEDS' description='PROCEEDSYIELD' />
+   <value enum='PUT' description='YIELDTONEXTPUT' />
+   <value enum='SEMIANNUAL' description='SEMI' />
+   <value enum='SHORTAVGLIFE' description='YIELDTOSHORTESTAVERAGELIFE' />
+   <value enum='SIMPLE' description='SIMPLEYIELD' />
+   <value enum='TAXEQUIV' description='TAXEQUIVALENTYIELD' />
+   <value enum='TENDER' description='YIELDTOTENDERDATE' />
+   <value enum='TRUE' description='TRUEYIELD' />
+   <value enum='VALUE1_32' description='YIELDVALUEOF132' />
+   <value enum='WORST' description='YIELDTOWORSTCONVENTION' />
+  </field>
+  <field number='236' name='Yield' type='PERCENTAGE' />
+  <field number='237' name='TotalTakedown' type='AMT' />
+  <field number='238' name='Concession' type='AMT' />
+  <field number='239' name='RepoCollateralSecurityType' type='INT' />
+  <field number='240' name='RedemptionDate' type='LOCALMKTDATE' />
+  <field number='241' name='UnderlyingCouponPaymentDate' type='LOCALMKTDATE' />
+  <field number='242' name='UnderlyingIssueDate' type='LOCALMKTDATE' />
+  <field number='243' name='UnderlyingRepoCollateralSecurityType' type='INT' />
+  <field number='244' name='UnderlyingRepurchaseTerm' type='INT' />
+  <field number='245' name='UnderlyingRepurchaseRate' type='PERCENTAGE' />
+  <field number='246' name='UnderlyingFactor' type='FLOAT' />
+  <field number='247' name='UnderlyingRedemptionDate' type='LOCALMKTDATE' />
+  <field number='248' name='LegCouponPaymentDate' type='LOCALMKTDATE' />
+  <field number='249' name='LegIssueDate' type='LOCALMKTDATE' />
+  <field number='250' name='LegRepoCollateralSecurityType' type='INT' />
+  <field number='251' name='LegRepurchaseTerm' type='INT' />
+  <field number='252' name='LegRepurchaseRate' type='PERCENTAGE' />
+  <field number='253' name='LegFactor' type='FLOAT' />
+  <field number='254' name='LegRedemptionDate' type='LOCALMKTDATE' />
+  <field number='255' name='CreditRating' type='STRING' />
+  <field number='256' name='UnderlyingCreditRating' type='STRING' />
+  <field number='257' name='LegCreditRating' type='STRING' />
+  <field number='258' name='TradedFlatSwitch' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='259' name='BasisFeatureDate' type='LOCALMKTDATE' />
+  <field number='260' name='BasisFeaturePrice' type='PRICE' />
+  <field number='262' name='MDReqID' type='STRING' />
+  <field number='263' name='SubscriptionRequestType' type='CHAR'>
+   <value enum='0' description='SNAPSHOT' />
+   <value enum='1' description='SNAPSHOTUPDATE' />
+   <value enum='2' description='UNSUBSCRIBE' />
+  </field>
+  <field number='264' name='MarketDepth' type='INT' />
+  <field number='265' name='MDUpdateType' type='INT'>
+   <value enum='0' description='FULL' />
+   <value enum='1' description='INCREMENTAL' />
+  </field>
+  <field number='266' name='AggregatedBook' type='BOOLEAN' />
+  <field number='267' name='NoMDEntryTypes' type='NUMINGROUP' />
+  <field number='268' name='NoMDEntries' type='NUMINGROUP' />
+  <field number='269' name='MDEntryType' type='CHAR'>
+   <value enum='0' description='BID' />
+   <value enum='1' description='OFFER' />
+   <value enum='2' description='TRADE' />
+   <value enum='3' description='INDEXVALUE' />
+   <value enum='4' description='OPENING' />
+   <value enum='5' description='CLOSING' />
+   <value enum='6' description='SETTLEMENT' />
+   <value enum='7' description='TRADINGHIGH' />
+   <value enum='8' description='TRADINGLOW' />
+   <value enum='9' description='TRADINGVWAP' />
+   <value enum='A' description='IMBALANCE' />
+   <value enum='B' description='TRADEVOLUME' />
+   <value enum='C' description='OPENINTEREST' />
+  </field>
+  <field number='270' name='MDEntryPx' type='PRICE' />
+  <field number='271' name='MDEntrySize' type='QTY' />
+  <field number='272' name='MDEntryDate' type='UTCDATEONLY' />
+  <field number='273' name='MDEntryTime' type='UTCTIMEONLY' />
+  <field number='274' name='TickDirection' type='CHAR'>
+   <value enum='0' description='PLUS' />
+   <value enum='1' description='ZEROPLUS' />
+   <value enum='2' description='MINUS' />
+   <value enum='3' description='ZEROMINUS' />
+  </field>
+  <field number='275' name='MDMkt' type='EXCHANGE' />
+  <field number='276' name='QuoteCondition' type='MULTIPLEVALUESTRING'>
+   <value enum='A' description='OPEN' />
+   <value enum='B' description='CLOSED' />
+   <value enum='C' description='EXCHBEST' />
+   <value enum='D' description='CONSOLBEST' />
+   <value enum='E' description='LOCKED' />
+   <value enum='F' description='CROSSED' />
+   <value enum='G' description='DEPTH' />
+   <value enum='H' description='FAST' />
+   <value enum='I' description='NONFIRM' />
+  </field>
+  <field number='277' name='TradeCondition' type='MULTIPLEVALUESTRING'>
+   <value enum='A' description='CASHMKT' />
+   <value enum='B' description='AVGPX' />
+   <value enum='C' description='CASHTRADE' />
+   <value enum='D' description='NEXTDAY_D' />
+   <value enum='E' description='OPENING' />
+   <value enum='F' description='INTRADAY' />
+   <value enum='G' description='RULE127' />
+   <value enum='H' description='RULE155' />
+   <value enum='I' description='SOLDLAST' />
+   <value enum='J' description='NEXTDAY_J' />
+   <value enum='K' description='OPENED' />
+   <value enum='L' description='SELLER' />
+   <value enum='M' description='SOLD' />
+   <value enum='N' description='STOPPED' />
+   <value enum='P' description='IMBALANCEMOREBUYERS' />
+   <value enum='Q' description='IMBALANCEMORESELLERS' />
+   <value enum='R' description='OPENINGPRICE' />
+  </field>
+  <field number='278' name='MDEntryID' type='STRING' />
+  <field number='279' name='MDUpdateAction' type='CHAR'>
+   <value enum='0' description='NEW' />
+   <value enum='1' description='CHANGE' />
+   <value enum='2' description='DELETE' />
+  </field>
+  <field number='280' name='MDEntryRefID' type='STRING' />
+  <field number='281' name='MDReqRejReason' type='CHAR'>
+   <value enum='0' description='UNKNOWNSYM' />
+   <value enum='1' description='DUPID' />
+   <value enum='2' description='INSBAND' />
+   <value enum='3' description='INSPERM' />
+   <value enum='4' description='UNSUPPSUB' />
+   <value enum='5' description='UNSUPPMKTDEPTH' />
+   <value enum='6' description='UNSUPPMDUPDATE' />
+   <value enum='7' description='UNSUPPAGGBK' />
+   <value enum='8' description='UNSUPPENTRY' />
+   <value enum='9' description='UNSUPPTRDSESSIONID' />
+   <value enum='A' description='UNSUPPSCOPE' />
+   <value enum='B' description='UNSUPPPOSITIONEFFECTSETTLEFLAG' />
+   <value enum='C' description='UNSUPPMDIMPLICITDELETE' />
+  </field>
+  <field number='282' name='MDEntryOriginator' type='STRING' />
+  <field number='283' name='LocationID' type='STRING' />
+  <field number='284' name='DeskID' type='STRING' />
+  <field number='285' name='DeleteReason' type='CHAR'>
+   <value enum='0' description='CANCELTRADEBUST' />
+   <value enum='1' description='ERROR' />
+  </field>
+  <field number='286' name='OpenCloseSettlFlag' type='MULTIPLEVALUESTRING'>
+   <value enum='0' description='DAILYOPEN' />
+   <value enum='1' description='SESSIONOPEN' />
+   <value enum='2' description='DELIVERYSETTLEMENT' />
+   <value enum='3' description='EXPECTEDENTRY' />
+   <value enum='4' description='ENTRYFROMPREVBUSINESSDAY' />
+   <value enum='5' description='THEORETICALPRICE' />
+  </field>
+  <field number='287' name='SellerDays' type='INT' />
+  <field number='288' name='MDEntryBuyer' type='STRING' />
+  <field number='289' name='MDEntrySeller' type='STRING' />
+  <field number='290' name='MDEntryPositionNo' type='INT' />
+  <field number='291' name='FinancialStatus' type='MULTIPLEVALUESTRING'>
+   <value enum='1' description='BANKRUPT' />
+   <value enum='2' description='PENDINGDELISTING' />
+  </field>
+  <field number='292' name='CorporateAction' type='MULTIPLEVALUESTRING'>
+   <value enum='A' description='EXDIVIDEND' />
+   <value enum='B' description='EXDIST' />
+   <value enum='C' description='EXRIGHTS' />
+   <value enum='D' description='NEW' />
+   <value enum='E' description='EXINTEREST' />
+  </field>
+  <field number='293' name='DefBidSize' type='QTY' />
+  <field number='294' name='DefOfferSize' type='QTY' />
+  <field number='295' name='NoQuoteEntries' type='NUMINGROUP' />
+  <field number='296' name='NoQuoteSets' type='NUMINGROUP' />
+  <field number='297' name='QuoteStatus' type='INT'>
+   <value enum='0' description='ACCPT' />
+   <value enum='1' description='CXLSYM' />
+   <value enum='10' description='PENDING' />
+   <value enum='11' description='PASS' />
+   <value enum='12' description='LOCKEDMARKETWARNING' />
+   <value enum='13' description='CROSSMARKETWARNING' />
+   <value enum='14' description='CANCELEDDUETOLOCKMARKET' />
+   <value enum='15' description='CANCELEDDUETOCROSSMARKET' />
+   <value enum='2' description='CXLSECTYPE' />
+   <value enum='3' description='CXLUNDER' />
+   <value enum='4' description='CXLALL' />
+   <value enum='5' description='REJ' />
+   <value enum='6' description='REMOVED' />
+   <value enum='7' description='EXPIRED' />
+   <value enum='8' description='QUERY' />
+   <value enum='9' description='QUOTENOTFOUND' />
+  </field>
+  <field number='298' name='QuoteCancelType' type='INT'>
+   <value enum='1' description='CXLSYM' />
+   <value enum='2' description='CXLSECTYPE' />
+   <value enum='3' description='CXLUNDER' />
+   <value enum='4' description='CXLALL' />
+  </field>
+  <field number='299' name='QuoteEntryID' type='STRING' />
+  <field number='300' name='QuoteRejectReason' type='INT'>
+   <value enum='1' description='UNKNSYM' />
+   <value enum='2' description='EXCHCLSD' />
+   <value enum='3' description='ORDEXLIM' />
+   <value enum='4' description='TOOLATE' />
+   <value enum='5' description='UNKNORD' />
+   <value enum='6' description='DUPORD' />
+   <value enum='7' description='INVSPREAD' />
+   <value enum='8' description='INVPX' />
+   <value enum='9' description='NOTAUTH' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='301' name='QuoteResponseLevel' type='INT'>
+   <value enum='0' description='NOACK' />
+   <value enum='1' description='ACKNEG' />
+   <value enum='2' description='ACKEACH' />
+  </field>
+  <field number='302' name='QuoteSetID' type='STRING' />
+  <field number='303' name='QuoteRequestType' type='INT'>
+   <value enum='1' description='MAN' />
+   <value enum='2' description='AUTO' />
+  </field>
+  <field number='304' name='TotNoQuoteEntries' type='INT' />
+  <field number='305' name='UnderlyingSecurityIDSource' type='STRING' />
+  <field number='306' name='UnderlyingIssuer' type='STRING' />
+  <field number='307' name='UnderlyingSecurityDesc' type='STRING' />
+  <field number='308' name='UnderlyingSecurityExchange' type='EXCHANGE' />
+  <field number='309' name='UnderlyingSecurityID' type='STRING' />
+  <field number='310' name='UnderlyingSecurityType' type='STRING' />
+  <field number='311' name='UnderlyingSymbol' type='STRING' />
+  <field number='312' name='UnderlyingSymbolSfx' type='STRING' />
+  <field number='313' name='UnderlyingMaturityMonthYear' type='MONTHYEAR' />
+  <field number='314' name='UnderlyingMaturityDay' type='DAYOFMONTH' />
+  <field number='315' name='UnderlyingPutOrCall' type='INT' />
+  <field number='316' name='UnderlyingStrikePrice' type='PRICE' />
+  <field number='317' name='UnderlyingOptAttribute' type='CHAR' />
+  <field number='318' name='UnderlyingCurrency' type='CURRENCY' />
+  <field number='319' name='RatioQty' type='QTY' />
+  <field number='320' name='SecurityReqID' type='STRING' />
+  <field number='321' name='SecurityRequestType' type='INT'>
+   <value enum='0' description='REQSECID' />
+   <value enum='1' description='REQSECIDPROV' />
+   <value enum='2' description='REQSECLISTTYPES' />
+   <value enum='3' description='REQSECLIST' />
+  </field>
+  <field number='322' name='SecurityResponseID' type='STRING' />
+  <field number='323' name='SecurityResponseType' type='INT'>
+   <value enum='1' description='ACCPTSECPROP' />
+   <value enum='2' description='ACCPTSECPROPREV' />
+   <value enum='3' description='SECLISTTYPESRET' />
+   <value enum='4' description='SECLISTRET' />
+   <value enum='5' description='REJSECPROP' />
+   <value enum='6' description='NOMATCH' />
+  </field>
+  <field number='324' name='SecurityStatusReqID' type='STRING' />
+  <field number='325' name='UnsolicitedIndicator' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='326' name='SecurityTradingStatus' type='INT'>
+   <value enum='1' description='OPENDELAY' />
+   <value enum='10' description='MKTONCLSIMBSELL' />
+   <value enum='11' description='NA' />
+   <value enum='12' description='NOMKTIMB' />
+   <value enum='13' description='NOMKTONCLSIMB' />
+   <value enum='14' description='ITSPREOPN' />
+   <value enum='15' description='NEWPXIND' />
+   <value enum='16' description='TRDDISTIME' />
+   <value enum='17' description='READY' />
+   <value enum='18' description='NOTAVAIL' />
+   <value enum='19' description='NOTTRADED' />
+   <value enum='2' description='TRDHALT' />
+   <value enum='20' description='UNKNOWN' />
+   <value enum='21' description='PRE_OPEN' />
+   <value enum='22' description='OPENINGROTATION' />
+   <value enum='23' description='FASTMARKET' />
+   <value enum='3' description='RESUME' />
+   <value enum='4' description='NOOPEN' />
+   <value enum='5' description='PXIND' />
+   <value enum='6' description='TRDRNGIND' />
+   <value enum='7' description='MKTIMBBUY' />
+   <value enum='8' description='MKTBALSELL' />
+   <value enum='9' description='MKTONCLSIMBBUY' />
+  </field>
+  <field number='327' name='HaltReasonChar' type='CHAR'>
+   <value enum='D' description='NEWSDISS' />
+   <value enum='E' description='ORDINFL' />
+   <value enum='I' description='ORDIMB' />
+   <value enum='M' description='ADDINFO' />
+   <value enum='P' description='NEWSPEND' />
+   <value enum='X' description='EQUIPCHANGE' />
+  </field>
+  <field number='328' name='InViewOfCommon' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='329' name='DueToRelated' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='330' name='BuyVolume' type='QTY' />
+  <field number='331' name='SellVolume' type='QTY' />
+  <field number='332' name='HighPx' type='PRICE' />
+  <field number='333' name='LowPx' type='PRICE' />
+  <field number='334' name='Adjustment' type='INT'>
+   <value enum='1' description='CANCEL' />
+   <value enum='2' description='ERROR' />
+   <value enum='3' description='CORRECTION' />
+  </field>
+  <field number='335' name='TradSesReqID' type='STRING' />
+  <field number='336' name='TradingSessionID' type='STRING' />
+  <field number='337' name='ContraTrader' type='STRING' />
+  <field number='338' name='TradSesMethod' type='INT'>
+   <value enum='1' description='ELECTRONIC' />
+   <value enum='2' description='OPENOUTCRY' />
+   <value enum='3' description='TWOPARTY' />
+  </field>
+  <field number='339' name='TradSesMode' type='INT'>
+   <value enum='1' description='TESTING' />
+   <value enum='2' description='SIMULATED' />
+   <value enum='3' description='PRODUCTION' />
+  </field>
+  <field number='340' name='TradSesStatus' type='INT'>
+   <value enum='0' description='UNKNOWN' />
+   <value enum='1' description='HALTED' />
+   <value enum='2' description='OPEN' />
+   <value enum='3' description='CLOSED' />
+   <value enum='4' description='PREOPEN' />
+   <value enum='5' description='PRECLOSE' />
+   <value enum='6' description='REQREJ' />
+  </field>
+  <field number='341' name='TradSesStartTime' type='UTCTIMESTAMP' />
+  <field number='342' name='TradSesOpenTime' type='UTCTIMESTAMP' />
+  <field number='343' name='TradSesPreCloseTime' type='UTCTIMESTAMP' />
+  <field number='344' name='TradSesCloseTime' type='UTCTIMESTAMP' />
+  <field number='345' name='TradSesEndTime' type='UTCTIMESTAMP' />
+  <field number='346' name='NumberOfOrders' type='INT' />
+  <field number='347' name='MessageEncoding' type='STRING' />
+  <field number='348' name='EncodedIssuerLen' type='LENGTH' />
+  <field number='349' name='EncodedIssuer' type='DATA' />
+  <field number='350' name='EncodedSecurityDescLen' type='LENGTH' />
+  <field number='351' name='EncodedSecurityDesc' type='DATA' />
+  <field number='352' name='EncodedListExecInstLen' type='LENGTH' />
+  <field number='353' name='EncodedListExecInst' type='DATA' />
+  <field number='354' name='EncodedTextLen' type='LENGTH' />
+  <field number='355' name='EncodedText' type='DATA' />
+  <field number='356' name='EncodedSubjectLen' type='LENGTH' />
+  <field number='357' name='EncodedSubject' type='DATA' />
+  <field number='358' name='EncodedHeadlineLen' type='LENGTH' />
+  <field number='359' name='EncodedHeadline' type='DATA' />
+  <field number='360' name='EncodedAllocTextLen' type='LENGTH' />
+  <field number='361' name='EncodedAllocText' type='DATA' />
+  <field number='362' name='EncodedUnderlyingIssuerLen' type='LENGTH' />
+  <field number='363' name='EncodedUnderlyingIssuer' type='DATA' />
+  <field number='364' name='EncodedUnderlyingSecurityDescLen' type='LENGTH' />
+  <field number='365' name='EncodedUnderlyingSecurityDesc' type='DATA' />
+  <field number='366' name='AllocPrice' type='PRICE' />
+  <field number='367' name='QuoteSetValidUntilTime' type='UTCTIMESTAMP' />
+  <field number='368' name='QuoteEntryRejectReason' type='INT'>
+   <value enum='1' description='UNKNWNSYM' />
+   <value enum='2' description='EXCHCLSD' />
+   <value enum='3' description='ORDEXCLIM' />
+   <value enum='4' description='TOOLATE' />
+   <value enum='5' description='UNKNORD' />
+   <value enum='6' description='DUPORD' />
+   <value enum='7' description='INVBIDASK' />
+   <value enum='8' description='INVPX' />
+   <value enum='9' description='NOTAUTH' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='369' name='LastMsgSeqNumProcessed' type='SEQNUM' />
+  <field number='370' name='OnBehalfOfSendingTime' type='UTCTIMESTAMP' />
+  <field number='371' name='RefTagID' type='INT' />
+  <field number='372' name='RefMsgType' type='STRING' />
+  <field number='373' name='SessionRejectReason' type='INT'>
+   <value enum='0' description='INVALIDTAGNUMBER' />
+   <value enum='1' description='REQUIREDTAGMISSING' />
+   <value enum='10' description='SENDINGTIMEACCURACYPROBLEM' />
+   <value enum='11' description='INVALIDMSGTYPE' />
+   <value enum='12' description='XMLVALIDATIONERROR' />
+   <value enum='13' description='TAGAPPEARSMORETHANONCE' />
+   <value enum='14' description='TAGSPECIFIEDOUTOFREQUIREDORDER' />
+   <value enum='15' description='REPEATINGGROUPFIELDSOUTOFORDER' />
+   <value enum='16' description='INCORRECTNUMINGROUPCOUNTFORREPEATINGGROUP' />
+   <value enum='17' description='NONDATAVALUEINCLUDESFIELDDELIMITERSOHCHARACTER' />
+   <value enum='2' description='TAGNOTDEFINEDFORTHISMESSAGETYPE' />
+   <value enum='3' description='UNDEFINEDTAG' />
+   <value enum='4' description='TAGSPECIFIEDWITHOUTAVALUE' />
+   <value enum='5' description='VALUEISINCORRECTOUTOFRANGEFORTHISTAG' />
+   <value enum='6' description='INCORRECTDATAFORMATFORVALUE' />
+   <value enum='7' description='DECRYPTIONPROBLEM' />
+   <value enum='8' description='SIGNATUREPROBLEM' />
+   <value enum='9' description='COMPIDPROBLEM' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='374' name='BidRequestTransType' type='CHAR'>
+   <value enum='C' description='CANCEL' />
+   <value enum='N' description='NO' />
+  </field>
+  <field number='375' name='ContraBroker' type='STRING' />
+  <field number='376' name='ComplianceID' type='STRING' />
+  <field number='377' name='SolicitedFlag' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='378' name='ExecRestatementReason' type='INT'>
+   <value enum='0' description='GTCORPACT' />
+   <value enum='1' description='GTRENEW' />
+   <value enum='10' description='WAREHOUSERECAP' />
+   <value enum='2' description='VERBAL' />
+   <value enum='3' description='REPX' />
+   <value enum='4' description='BRKROPT' />
+   <value enum='5' description='PARTDEC' />
+   <value enum='6' description='CXLTRADINGHALT' />
+   <value enum='7' description='CXLSYSTEMFAILURE' />
+   <value enum='8' description='MRKTOPTION' />
+   <value enum='9' description='CANCELEDNOTBEST' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='379' name='BusinessRejectRefID' type='STRING' />
+  <field number='380' name='BusinessRejectReason' type='INT'>
+   <value enum='0' description='OTHER' />
+   <value enum='1' description='UNKNID' />
+   <value enum='2' description='UNKNSEC' />
+   <value enum='3' description='UNKNMSGTYPE' />
+   <value enum='4' description='APPNA' />
+   <value enum='5' description='CONDFLDMISS' />
+   <value enum='6' description='NOTAUTH' />
+   <value enum='7' description='NODELIVTOFIRM' />
+  </field>
+  <field number='381' name='GrossTradeAmt' type='AMT' />
+  <field number='382' name='NoContraBrokers' type='NUMINGROUP' />
+  <field number='383' name='MaxMessageSize' type='LENGTH' />
+  <field number='384' name='NoMsgTypes' type='NUMINGROUP' />
+  <field number='385' name='MsgDirection' type='CHAR'>
+   <value enum='R' description='RECEIVE' />
+   <value enum='S' description='SEND' />
+  </field>
+  <field number='386' name='NoTradingSessions' type='NUMINGROUP' />
+  <field number='387' name='TotalVolumeTraded' type='QTY' />
+  <field number='388' name='DiscretionInst' type='CHAR'>
+   <value enum='0' description='RELDISPPX' />
+   <value enum='1' description='RELMKTPX' />
+   <value enum='2' description='RELPRIMPX' />
+   <value enum='3' description='RELLOCPRIMPX' />
+   <value enum='4' description='RELMIDPX' />
+   <value enum='5' description='RELLSTPX' />
+   <value enum='6' description='RELVWAP' />
+  </field>
+  <field number='389' name='DiscretionOffsetValue' type='FLOAT' />
+  <field number='390' name='BidID' type='STRING' />
+  <field number='391' name='ClientBidID' type='STRING' />
+  <field number='392' name='ListName' type='STRING' />
+  <field number='393' name='TotNoRelatedSym' type='INT' />
+  <field number='394' name='BidType' type='INT'>
+   <value enum='1' description='NONDISC' />
+   <value enum='2' description='DISC' />
+   <value enum='3' description='NOBID' />
+  </field>
+  <field number='395' name='NumTickets' type='INT' />
+  <field number='396' name='SideValue1' type='AMT' />
+  <field number='397' name='SideValue2' type='AMT' />
+  <field number='398' name='NoBidDescriptors' type='NUMINGROUP' />
+  <field number='399' name='BidDescriptorType' type='INT'>
+   <value enum='1' description='SECTOR' />
+   <value enum='2' description='COUNTRY' />
+   <value enum='3' description='INDEX' />
+  </field>
+  <field number='400' name='BidDescriptor' type='STRING' />
+  <field number='401' name='SideValueInd' type='INT'>
+   <value enum='1' description='SIDEVALUE1' />
+   <value enum='2' description='SIDEVALUE2' />
+  </field>
+  <field number='402' name='LiquidityPctLow' type='PERCENTAGE' />
+  <field number='403' name='LiquidityPctHigh' type='PERCENTAGE' />
+  <field number='404' name='LiquidityValue' type='AMT' />
+  <field number='405' name='EFPTrackingError' type='PERCENTAGE' />
+  <field number='406' name='FairValue' type='AMT' />
+  <field number='407' name='OutsideIndexPct' type='PERCENTAGE' />
+  <field number='408' name='ValueOfFutures' type='AMT' />
+  <field number='409' name='LiquidityIndType' type='INT'>
+   <value enum='1' description='5DAY' />
+   <value enum='2' description='20DAY' />
+   <value enum='3' description='NORMAL' />
+   <value enum='4' description='OTHER' />
+  </field>
+  <field number='410' name='WtAverageLiquidity' type='PERCENTAGE' />
+  <field number='411' name='ExchangeForPhysical' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='412' name='OutMainCntryUIndex' type='AMT' />
+  <field number='413' name='CrossPercent' type='PERCENTAGE' />
+  <field number='414' name='ProgRptReqs' type='INT'>
+   <value enum='1' description='BUYSIDE' />
+   <value enum='2' description='SELLSIDE' />
+   <value enum='3' description='REALTIME' />
+  </field>
+  <field number='415' name='ProgPeriodInterval' type='INT' />
+  <field number='416' name='IncTaxInd' type='INT'>
+   <value enum='1' description='NET' />
+   <value enum='2' description='GROSS' />
+  </field>
+  <field number='417' name='NumBidders' type='INT' />
+  <field number='418' name='BidTradeType' type='CHAR'>
+   <value enum='A' description='AGENCY' />
+   <value enum='G' description='VWAPGUARANTEE' />
+   <value enum='J' description='GUARANTEEDCLOSE' />
+   <value enum='R' description='RISKTRADE' />
+  </field>
+  <field number='419' name='BasisPxType' type='CHAR'>
+   <value enum='2' description='CLSPXMORN' />
+   <value enum='3' description='CLSPX' />
+   <value enum='4' description='CURRPX' />
+   <value enum='5' description='SQ' />
+   <value enum='6' description='VWAPDAY' />
+   <value enum='7' description='VWAPMORN' />
+   <value enum='8' description='VWAPAFT' />
+   <value enum='9' description='VWAPDAYXYORI' />
+   <value enum='A' description='VWAPMORNXYORI' />
+   <value enum='B' description='VWAPAFTXYORI' />
+   <value enum='C' description='STRIKE' />
+   <value enum='D' description='OPEN' />
+   <value enum='Z' description='OTHERS' />
+  </field>
+  <field number='420' name='NoBidComponents' type='NUMINGROUP' />
+  <field number='421' name='Country' type='COUNTRY' />
+  <field number='422' name='TotNoStrikes' type='INT' />
+  <field number='423' name='PriceType' type='INT'>
+   <value enum='1' description='PCT' />
+   <value enum='10' description='FIXEDCABINETTRADEPRICE' />
+   <value enum='11' description='VARIABLECABINETTRADEPRICE' />
+   <value enum='2' description='CPS' />
+   <value enum='3' description='ABS' />
+   <value enum='4' description='DISCOUNT' />
+   <value enum='5' description='PREMIUM' />
+   <value enum='6' description='SPREAD' />
+   <value enum='7' description='TEDPRICE' />
+   <value enum='8' description='TEDYIELD' />
+   <value enum='9' description='YIELD' />
+  </field>
+  <field number='424' name='DayOrderQty' type='QTY' />
+  <field number='425' name='DayCumQty' type='QTY' />
+  <field number='426' name='DayAvgPx' type='PRICE' />
+  <field number='427' name='GTBookingInst' type='INT'>
+   <value enum='0' description='BOOKALL' />
+   <value enum='1' description='ACCUMUNTILFILL' />
+   <value enum='2' description='ACCUMUNTILNOTIFY' />
+  </field>
+  <field number='428' name='NoStrikes' type='NUMINGROUP' />
+  <field number='429' name='ListStatusType' type='INT'>
+   <value enum='1' description='ACK' />
+   <value enum='2' description='RESP' />
+   <value enum='3' description='TIMED' />
+   <value enum='4' description='EXECSTART' />
+   <value enum='5' description='ALLDONE' />
+   <value enum='6' description='ALERT' />
+  </field>
+  <field number='430' name='NetGrossInd' type='INT'>
+   <value enum='1' description='NET' />
+   <value enum='2' description='GROSS' />
+  </field>
+  <field number='431' name='ListOrderStatus' type='INT'>
+   <value enum='1' description='INBIDPROC' />
+   <value enum='2' description='RECVFOREXEC' />
+   <value enum='3' description='EXEC' />
+   <value enum='4' description='CXL' />
+   <value enum='5' description='ALERT' />
+   <value enum='6' description='ALLDONE' />
+   <value enum='7' description='REJ' />
+  </field>
+  <field number='432' name='ExpireDate' type='LOCALMKTDATE' />
+  <field number='433' name='ListExecInstType' type='CHAR'>
+   <value enum='1' description='IMMED' />
+   <value enum='2' description='WAIT' />
+   <value enum='3' description='EXCHCIVSELL' />
+   <value enum='4' description='EXCHCIVBUYTOP' />
+   <value enum='5' description='EXCHCIVBUYWD' />
+  </field>
+  <field number='434' name='CxlRejResponseTo' type='CHAR'>
+   <value enum='1' description='ORDCXLREQ' />
+   <value enum='2' description='ORDCXLREPREQ' />
+  </field>
+  <field number='435' name='UnderlyingCouponRate' type='PERCENTAGE' />
+  <field number='436' name='UnderlyingContractMultiplier' type='FLOAT' />
+  <field number='437' name='ContraTradeQty' type='QTY' />
+  <field number='438' name='ContraTradeTime' type='UTCTIMESTAMP' />
+  <field number='439' name='ClearingFirm' type='STRING' />
+  <field number='440' name='ClearingAccount' type='STRING' />
+  <field number='441' name='LiquidityNumSecurities' type='INT' />
+  <field number='442' name='MultiLegReportingType' type='CHAR'>
+   <value enum='1' description='SINGLE' />
+   <value enum='2' description='INDIVLEG' />
+   <value enum='3' description='MULTILEG' />
+  </field>
+  <field number='443' name='StrikeTime' type='UTCTIMESTAMP' />
+  <field number='444' name='ListStatusText' type='STRING' />
+  <field number='445' name='EncodedListStatusTextLen' type='LENGTH' />
+  <field number='446' name='EncodedListStatusText' type='DATA' />
+  <field number='447' name='PartyIDSource' type='CHAR'>
+   <value enum='1' description='KOREANINVESTORID' />
+   <value enum='2' description='TAIWANESEQUALIFIED' />
+   <value enum='3' description='TAIWANESETRADINGACCT' />
+   <value enum='4' description='MCDNUMBER' />
+   <value enum='5' description='CHINESEBSHARE' />
+   <value enum='6' description='UKNATIONALINSPENNUMBER' />
+   <value enum='7' description='USSOCIALSECURITY' />
+   <value enum='8' description='USEMPLOYERIDNUMBER' />
+   <value enum='9' description='AUSTRALIANBUSINESSNUMBER' />
+   <value enum='A' description='AUSTRALIANTAXFILENUMBER' />
+   <value enum='B' description='BIC' />
+   <value enum='C' description='ACCPTMARKETPART' />
+   <value enum='D' description='PROPCODE' />
+   <value enum='E' description='ISOCODE' />
+   <value enum='F' description='SETTLENTLOC' />
+   <value enum='G' description='MIC' />
+   <value enum='H' description='CSDPARTCODE' />
+   <value enum='I' description='DIRECTEDDEFINEDISITC' />
+  </field>
+  <field number='448' name='PartyID' type='STRING' />
+  <field number='449' name='TotalVolumeTradedDate' type='UTCDATEONLY' />
+  <field number='450' name='TotalVolumeTradedTime' type='UTCTIMEONLY' />
+  <field number='451' name='NetChgPrevDay' type='PRICEOFFSET' />
+  <field number='452' name='PartyRole' type='INT'>
+   <value enum='1' description='EXECUTINGFIRM' />
+   <value enum='10' description='SETTLEMENTLOCATION' />
+   <value enum='11' description='INITIATINGTRADER' />
+   <value enum='12' description='EXECUTINGTRADER' />
+   <value enum='13' description='ORDERORIGINATOR' />
+   <value enum='14' description='GIVEUPCLEARINGFIRM' />
+   <value enum='15' description='CORRESPONDANTCLEARINGFIRM' />
+   <value enum='16' description='EXECUTINGSYSTEM' />
+   <value enum='17' description='CONTRAFIRM' />
+   <value enum='18' description='CONTRACLEARINGFIRM' />
+   <value enum='19' description='SPONSORINGFIRM' />
+   <value enum='2' description='BROKEROFCREDIT' />
+   <value enum='20' description='UNDRCONTRAFIRM' />
+   <value enum='21' description='CLEARINGORGANIZATION' />
+   <value enum='22' description='EXCHANGE' />
+   <value enum='24' description='CUSTOMERACCOUNT' />
+   <value enum='25' description='CORRESPONDENTCLEARINGORGANIZATION' />
+   <value enum='26' description='CORRESPONDENTBROKER' />
+   <value enum='27' description='BUYERSELLERRECEIVERDELIVERER' />
+   <value enum='28' description='CUSTODIAN' />
+   <value enum='29' description='INTERMEDIARY' />
+   <value enum='3' description='CLIENTID' />
+   <value enum='30' description='AGENT' />
+   <value enum='31' description='SUBCUSTODIAN' />
+   <value enum='32' description='BENEFICIARY' />
+   <value enum='33' description='INTERESTEDPARTY' />
+   <value enum='34' description='REGULATORYBODY' />
+   <value enum='35' description='LIQUIDITYPROVIDER' />
+   <value enum='36' description='ENTERINGTRADER' />
+   <value enum='37' description='CONTRATRADER' />
+   <value enum='38' description='POSITIONACCOUNT' />
+   <value enum='39' description='ALLOCENTITY' />
+   <value enum='4' description='CLEARINGFIRM' />
+   <value enum='5' description='INVESTORID' />
+   <value enum='6' description='INTRODUCINGFIRM' />
+   <value enum='7' description='ENTERINGFIRM' />
+   <value enum='8' description='LOCATELENDINGFIRM' />
+   <value enum='9' description='FUNDMANAGER' />
+  </field>
+  <field number='453' name='NoPartyIDs' type='NUMINGROUP' />
+  <field number='454' name='NoSecurityAltID' type='NUMINGROUP' />
+  <field number='455' name='SecurityAltID' type='STRING' />
+  <field number='456' name='SecurityAltIDSource' type='STRING' />
+  <field number='457' name='NoUnderlyingSecurityAltID' type='NUMINGROUP' />
+  <field number='458' name='UnderlyingSecurityAltID' type='STRING' />
+  <field number='459' name='UnderlyingSecurityAltIDSource' type='STRING' />
+  <field number='460' name='Product' type='INT'>
+   <value enum='1' description='AGENCY' />
+   <value enum='10' description='MORTGAGE' />
+   <value enum='11' description='MUNICIPAL' />
+   <value enum='12' description='OTHER' />
+   <value enum='13' description='FINANCING' />
+   <value enum='2' description='COMMODITY' />
+   <value enum='3' description='CORPORATE' />
+   <value enum='4' description='CURRENCY' />
+   <value enum='5' description='EQUITY' />
+   <value enum='6' description='GOVERNMENT' />
+   <value enum='7' description='INDEX' />
+   <value enum='8' description='LOAN' />
+   <value enum='9' description='MONEYMARKET' />
+  </field>
+  <field number='461' name='CFICode' type='STRING' />
+  <field number='462' name='UnderlyingProduct' type='INT' />
+  <field number='463' name='UnderlyingCFICode' type='STRING' />
+  <field number='464' name='TestMessageIndicator' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='465' name='QuantityType' type='INT'>
+   <value enum='1' description='SHARES' />
+   <value enum='2' description='BONDS' />
+   <value enum='3' description='CURRENTFACE' />
+   <value enum='4' description='ORIGINALFACE' />
+   <value enum='5' description='CURRENCY' />
+   <value enum='6' description='CONTRACTS' />
+   <value enum='7' description='OTHER' />
+   <value enum='8' description='PAR' />
+  </field>
+  <field number='466' name='BookingRefID' type='STRING' />
+  <field number='467' name='IndividualAllocID' type='STRING' />
+  <field number='468' name='RoundingDirection' type='CHAR'>
+   <value enum='0' description='ROUNDNEAREST' />
+   <value enum='1' description='ROUNDDOWN' />
+   <value enum='2' description='ROUNDUP' />
+  </field>
+  <field number='469' name='RoundingModulus' type='FLOAT' />
+  <field number='470' name='CountryOfIssue' type='COUNTRY' />
+  <field number='471' name='StateOrProvinceOfIssue' type='STRING' />
+  <field number='472' name='LocaleOfIssue' type='STRING' />
+  <field number='473' name='NoRegistDtls' type='NUMINGROUP' />
+  <field number='474' name='MailingDtls' type='STRING' />
+  <field number='475' name='InvestorCountryOfResidence' type='COUNTRY' />
+  <field number='476' name='PaymentRef' type='STRING' />
+  <field number='477' name='DistribPaymentMethod' type='INT'>
+   <value enum='1' description='CREST' />
+   <value enum='10' description='BPAY' />
+   <value enum='11' description='HIGHVALUECLEARINGSYSTEMHVACS' />
+   <value enum='12' description='REINVESTINFUND' />
+   <value enum='2' description='NSCC' />
+   <value enum='3' description='EUROCLEAR' />
+   <value enum='4' description='CLEARSTREAM' />
+   <value enum='5' description='CHEQUE' />
+   <value enum='6' description='TELEGRAPHICTRANSFER' />
+   <value enum='7' description='FEDWIRE' />
+   <value enum='8' description='DIRECTCREDITBECSBACS' />
+   <value enum='9' description='ACHCREDIT' />
+  </field>
+  <field number='478' name='CashDistribCurr' type='CURRENCY' />
+  <field number='479' name='CommCurrency' type='CURRENCY' />
+  <field number='480' name='CancellationRights' type='CHAR'>
+   <value enum='M' description='NOWAIVER' />
+   <value enum='N' description='NOEXECONLY' />
+   <value enum='O' description='NOINSTIT' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='481' name='MoneyLaunderingStatus' type='CHAR'>
+   <value enum='1' description='EXBELOWLIM' />
+   <value enum='2' description='EXCLIENTMONEYTYPE' />
+   <value enum='3' description='EXAUTHCREDIT' />
+   <value enum='N' description='NOTCHECKED' />
+   <value enum='Y' description='PASSED' />
+  </field>
+  <field number='482' name='MailingInst' type='STRING' />
+  <field number='483' name='TransBkdTime' type='UTCTIMESTAMP' />
+  <field number='484' name='ExecPriceType' type='CHAR'>
+   <value enum='B' description='BIDPRICE' />
+   <value enum='C' description='CREATIONPRICE' />
+   <value enum='D' description='CREATIONPRICEADJPCT' />
+   <value enum='E' description='CREATIONPRICEADJAMT' />
+   <value enum='O' description='OFFERPRICE' />
+   <value enum='P' description='OFFERPRICEMINUSADJPCT' />
+   <value enum='Q' description='OFFERPRICEMINUSADJAMT' />
+   <value enum='S' description='SINGLEPRICE' />
+  </field>
+  <field number='485' name='ExecPriceAdjustment' type='FLOAT' />
+  <field number='486' name='DateOfBirth' type='LOCALMKTDATE' />
+  <field number='487' name='TradeReportTransType' type='INT'>
+   <value enum='0' description='NEW' />
+   <value enum='1' description='CANCEL' />
+   <value enum='2' description='REPLACE' />
+   <value enum='3' description='RELEASE' />
+   <value enum='4' description='REVERSE' />
+  </field>
+  <field number='488' name='CardHolderName' type='STRING' />
+  <field number='489' name='CardNumber' type='STRING' />
+  <field number='490' name='CardExpDate' type='LOCALMKTDATE' />
+  <field number='491' name='CardIssNum' type='STRING' />
+  <field number='492' name='PaymentMethod' type='INT'>
+   <value enum='1' description='CREST' />
+   <value enum='10' description='DIRECTCREDITBECS' />
+   <value enum='11' description='CREDITCARD' />
+   <value enum='12' description='ACHDEBIT' />
+   <value enum='13' description='ACHCREDIT' />
+   <value enum='14' description='BPAY' />
+   <value enum='15' description='HIGHVALUECLEARINGSYSTEMHVACS' />
+   <value enum='2' description='NSCC' />
+   <value enum='3' description='EUROCLEAR' />
+   <value enum='4' description='CLEARSTREAM' />
+   <value enum='5' description='CHEQUE' />
+   <value enum='6' description='TELEGRAPHICTRANSFER' />
+   <value enum='7' description='FEDWIRE' />
+   <value enum='8' description='DEBITCARD' />
+   <value enum='9' description='DIRECTDEBITBECS' />
+  </field>
+  <field number='493' name='RegistAcctType' type='STRING' />
+  <field number='494' name='Designation' type='STRING' />
+  <field number='495' name='TaxAdvantageType' type='INT'>
+   <value enum='0' description='NONE' />
+   <value enum='1' description='MAXIISAUK' />
+   <value enum='10' description='EMPLOYEECURRENTYEARUS' />
+   <value enum='11' description='EMPLOYERPRIORYEARUS' />
+   <value enum='12' description='EMPLOYERCURRENTYEARUS' />
+   <value enum='13' description='NONFUNDPROTOTYPEIRAUS' />
+   <value enum='14' description='NONFUNDQUALIFIEDPLANUS' />
+   <value enum='15' description='DEFINEDCONTRIBUTIONPLANUS' />
+   <value enum='16' description='INDIVIDUALRETIREMENTACCOUNTUS' />
+   <value enum='17' description='INDIVIDUALRETIREMENTACCOUNTROLLOVERUS' />
+   <value enum='18' description='KEOGHUS' />
+   <value enum='19' description='PROFITSHARINGPLANUS' />
+   <value enum='2' description='TESSAUK' />
+   <value enum='20' description='401KUS' />
+   <value enum='21' description='SELFDIRECTEDIRAUS' />
+   <value enum='22' description='403BUS' />
+   <value enum='23' description='457US' />
+   <value enum='24' description='ROTHIRAFUNDPROTOTYPEUS' />
+   <value enum='25' description='ROTHIRANONPROTOTYPEUS' />
+   <value enum='26' description='ROTHCONVERSIONIRAFUNDPROTOTYPEUS' />
+   <value enum='27' description='ROTHCONVERSIONIRANONPROTOTYPEUS' />
+   <value enum='28' description='EDUCATIONIRAFUNDPROTOTYPEUS' />
+   <value enum='29' description='EDUCATIONIRANONPROTOTYPEUS' />
+   <value enum='3' description='MINICASHISAUK' />
+   <value enum='4' description='MINISTOCKSANDSHARESISAUK' />
+   <value enum='5' description='MINIINSURANCEISAUK' />
+   <value enum='6' description='CURRENTYEARPAYMENTUS' />
+   <value enum='7' description='PRIORYEARPAYMENTUS' />
+   <value enum='8' description='ASSETTRANSFERUS' />
+   <value enum='9' description='EMPLOYEEPRIORYEARUS' />
+   <value enum='999' description='OTHER' />
+  </field>
+  <field number='496' name='RegistRejReasonText' type='STRING' />
+  <field number='497' name='FundRenewWaiv' type='CHAR'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='498' name='CashDistribAgentName' type='STRING' />
+  <field number='499' name='CashDistribAgentCode' type='STRING' />
+  <field number='500' name='CashDistribAgentAcctNumber' type='STRING' />
+  <field number='501' name='CashDistribPayRef' type='STRING' />
+  <field number='502' name='CashDistribAgentAcctName' type='STRING' />
+  <field number='503' name='CardStartDate' type='LOCALMKTDATE' />
+  <field number='504' name='PaymentDate' type='LOCALMKTDATE' />
+  <field number='505' name='PaymentRemitterID' type='STRING' />
+  <field number='506' name='RegistStatus' type='CHAR'>
+   <value enum='A' description='ACCEPTED' />
+   <value enum='H' description='HELD' />
+   <value enum='N' description='REMINDER_IE_REGISTRATION_INSTRUCTIONS_ARE_STILL_OUTSTANDING' />
+   <value enum='R' description='REJECTED' />
+  </field>
+  <field number='507' name='RegistRejReasonCode' type='INT'>
+   <value enum='1' description='INVALIDACCOUNTTYPE' />
+   <value enum='10' description='INVALIDINVESTORIDSOURCE' />
+   <value enum='11' description='INVALIDDATEOFBIRTH' />
+   <value enum='12' description='INVALIDINVESTORCOUNTRYOFRESIDENCE' />
+   <value enum='13' description='INVALIDNODISTRIBINSTNS' />
+   <value enum='14' description='INVALIDDISTRIBPERCENTAGE' />
+   <value enum='15' description='INVALIDDISTRIBPAYMENTMETHOD' />
+   <value enum='16' description='INVALIDCASHDISTRIBAGENTACCTNAME' />
+   <value enum='17' description='INVALIDCASHDISTRIBAGENTCODE' />
+   <value enum='18' description='INVALIDCASHDISTRIBAGENTACCTNUM' />
+   <value enum='2' description='INVALIDTAXEXEMPTTYPE' />
+   <value enum='3' description='INVALIDOWNERSHIPTYPE' />
+   <value enum='4' description='INVALIDNOREGDETLS' />
+   <value enum='5' description='INVALIDREGSEQNO' />
+   <value enum='6' description='INVALIDREGDTLS' />
+   <value enum='7' description='INVALIDMAILINGDTLS' />
+   <value enum='8' description='INVALIDMAILINGINST' />
+   <value enum='9' description='INVALIDINVESTORID' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='508' name='RegistRefID' type='STRING' />
+  <field number='509' name='RegistDtls' type='STRING' />
+  <field number='510' name='NoDistribInsts' type='NUMINGROUP' />
+  <field number='511' name='RegistEmail' type='STRING' />
+  <field number='512' name='DistribPercentage' type='PERCENTAGE' />
+  <field number='513' name='RegistID' type='STRING' />
+  <field number='514' name='RegistTransType' type='CHAR'>
+   <value enum='0' description='NEW' />
+   <value enum='1' description='REPLACE' />
+   <value enum='2' description='CANCEL' />
+  </field>
+  <field number='515' name='ExecValuationPoint' type='UTCTIMESTAMP' />
+  <field number='516' name='OrderPercent' type='PERCENTAGE' />
+  <field number='517' name='OwnershipType' type='CHAR'>
+   <value enum='2' description='JOINT_TRUSTEES' />
+   <value enum='J' description='JOINT_INVESTORS' />
+   <value enum='T' description='TENANTS_IN_COMMON' />
+  </field>
+  <field number='518' name='NoContAmts' type='NUMINGROUP' />
+  <field number='519' name='ContAmtType' type='INT'>
+   <value enum='1' description='COMMISSIONAMT' />
+   <value enum='10' description='EXITCHARGEPCT' />
+   <value enum='11' description='FUNDBASEDRENEWALCOMM' />
+   <value enum='12' description='PROJECTEDFUNDVALUE' />
+   <value enum='13' description='FUNDBASEDRENEWALCOMMAMTORD' />
+   <value enum='14' description='FUNDBASEDRENEWALCOMMAMTPROJ' />
+   <value enum='15' description='NETSETTLEMENTAMOUNT' />
+   <value enum='2' description='COMMISSIONPCT' />
+   <value enum='3' description='INITIALCHARGEAMT' />
+   <value enum='4' description='INITIALCHARGEPCT' />
+   <value enum='5' description='DISCOUNTAMT' />
+   <value enum='6' description='DISCOUNTPCT' />
+   <value enum='7' description='DILUTIONLEVYAMT' />
+   <value enum='8' description='DILUTIONLEVYPCT' />
+   <value enum='9' description='EXITCHARGEAMT' />
+  </field>
+  <field number='520' name='ContAmtValue' type='FLOAT' />
+  <field number='521' name='ContAmtCurr' type='CURRENCY' />
+  <field number='522' name='OwnerType' type='INT'>
+   <value enum='1' description='INDIVINVESTOR' />
+   <value enum='10' description='NETWORKINGSUBACCT' />
+   <value enum='11' description='NON_PROFITORG' />
+   <value enum='12' description='CORPBODY' />
+   <value enum='13' description='NOMINEE' />
+   <value enum='2' description='PUBLICCOMPANY' />
+   <value enum='3' description='PRIVATECOMPANY' />
+   <value enum='4' description='INDIVTRUSTEE' />
+   <value enum='5' description='COMPANYTRUSTEE' />
+   <value enum='6' description='PENSIONPLAN' />
+   <value enum='7' description='CUSTODIANMINORSACT' />
+   <value enum='8' description='TRUSTS' />
+   <value enum='9' description='FIDUCIARIES' />
+  </field>
+  <field number='523' name='PartySubID' type='STRING' />
+  <field number='524' name='NestedPartyID' type='STRING' />
+  <field number='525' name='NestedPartyIDSource' type='CHAR' />
+  <field number='526' name='SecondaryClOrdID' type='STRING' />
+  <field number='527' name='SecondaryExecID' type='STRING' />
+  <field number='528' name='OrderCapacity' type='CHAR'>
+   <value enum='A' description='AGENCY' />
+   <value enum='G' description='PROPRIETARY' />
+   <value enum='I' description='INDIVIDUAL' />
+   <value enum='P' description='PRINCIPAL' />
+   <value enum='R' description='RISKLESSPRINCIPAL' />
+   <value enum='W' description='AGENTOTHERMEMBER' />
+  </field>
+  <field number='529' name='OrderRestrictions' type='MULTIPLEVALUESTRING'>
+   <value enum='1' description='PROGRAMTRADE' />
+   <value enum='2' description='INDEXARBITRAGE' />
+   <value enum='3' description='NON_INDEXARBITRAGE' />
+   <value enum='4' description='COMPETINGMARKETMAKER' />
+   <value enum='5' description='ACTMM' />
+   <value enum='6' description='ACTMMDERIV' />
+   <value enum='7' description='FORENTITY' />
+   <value enum='8' description='EXMRKTPART' />
+   <value enum='9' description='EXINTMRKTLINK' />
+   <value enum='A' description='RISKARB' />
+  </field>
+  <field number='530' name='MassCancelRequestType' type='CHAR'>
+   <value enum='1' description='CXLORDERSSECURITY' />
+   <value enum='2' description='CXLORDERSUNDERLYINGSECURITY' />
+   <value enum='3' description='CXLORDERSPRODUCT' />
+   <value enum='4' description='CXLORDERSCFICODE' />
+   <value enum='5' description='CXLORDERSSECURITYTYPE' />
+   <value enum='6' description='CXLORDERSTRDSESSION' />
+   <value enum='7' description='CXLALLORDERS' />
+  </field>
+  <field number='531' name='MassCancelResponse' type='CHAR'>
+   <value enum='0' description='CXLREQREJ' />
+   <value enum='1' description='CXLORDERSSECURITY' />
+   <value enum='2' description='CXLORDERSUNDERLYINGSECURITY' />
+   <value enum='3' description='CXLORDERSPRODUCT' />
+   <value enum='4' description='CXLORDERSCFICODE' />
+   <value enum='5' description='CXLORDERSSECURITYTYPE' />
+   <value enum='6' description='CXLORDERSTRDSESSION' />
+   <value enum='7' description='CXLALLORDERS' />
+  </field>
+  <field number='532' name='MassCancelRejectReason' type='CHAR'>
+   <value enum='0' description='MASSCXLNOTSUPPORTED' />
+   <value enum='1' description='INVALIDSECURITY' />
+   <value enum='2' description='INVALIDUNDERLYING' />
+   <value enum='3' description='INVALIDPRODUCT' />
+   <value enum='4' description='INVALIDCFICODE' />
+   <value enum='5' description='INVALIDSECURITYTYPE' />
+   <value enum='6' description='INVALIDTRDSESSION' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='533' name='TotalAffectedOrders' type='INT' />
+  <field number='534' name='NoAffectedOrders' type='INT' />
+  <field number='535' name='AffectedOrderID' type='STRING' />
+  <field number='536' name='AffectedSecondaryOrderID' type='STRING' />
+  <field number='537' name='QuoteType' type='INT'>
+   <value enum='0' description='INDICATIVE' />
+   <value enum='1' description='TRADEABLE' />
+   <value enum='2' description='RESTRICTEDTRADEABLE' />
+   <value enum='3' description='COUNTER' />
+  </field>
+  <field number='538' name='NestedPartyRole' type='INT' />
+  <field number='539' name='NoNestedPartyIDs' type='NUMINGROUP' />
+  <field number='540' name='TotalAccruedInterestAmt' type='AMT' />
+  <field number='541' name='MaturityDate' type='LOCALMKTDATE' />
+  <field number='542' name='UnderlyingMaturityDate' type='LOCALMKTDATE' />
+  <field number='543' name='InstrRegistry' type='STRING'>
+   <value enum='BIC' description='CUSTODIAN' />
+   <value enum='ISO' description='COUNTRY' />
+   <value enum='ZZ' description='PHYSICAL' />
+  </field>
+  <field number='544' name='CashMargin' type='CHAR'>
+   <value enum='1' description='CASH' />
+   <value enum='2' description='MARGINOPEN' />
+   <value enum='3' description='MARGINCLOSE' />
+  </field>
+  <field number='545' name='NestedPartySubID' type='STRING' />
+  <field number='546' name='Scope' type='MULTIPLEVALUESTRING'>
+   <value enum='1' description='LOCALMARKET' />
+   <value enum='2' description='NATIONAL' />
+   <value enum='3' description='GLOBAL' />
+  </field>
+  <field number='547' name='MDImplicitDelete' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='548' name='CrossID' type='STRING' />
+  <field number='549' name='CrossType' type='INT'>
+   <value enum='1' description='CROSSAON' />
+   <value enum='2' description='CROSSIOC' />
+   <value enum='3' description='CROSSONESIDE' />
+   <value enum='4' description='CROSSSAMEPRICE' />
+  </field>
+  <field number='550' name='CrossPrioritization' type='INT'>
+   <value enum='0' description='NONE' />
+   <value enum='1' description='BUY_SIDE_PRIORITIZED' />
+   <value enum='2' description='SELL_SIDE_PRIORITIZED' />
+  </field>
+  <field number='551' name='OrigCrossID' type='STRING' />
+  <field number='552' name='NoSides' type='NUMINGROUP'>
+   <value enum='1' description='ONESIDE' />
+   <value enum='2' description='BOTHSIDES' />
+  </field>
+  <field number='553' name='Username' type='STRING' />
+  <field number='554' name='Password' type='STRING' />
+  <field number='555' name='NoLegs' type='NUMINGROUP' />
+  <field number='556' name='LegCurrency' type='CURRENCY' />
+  <field number='557' name='TotNoSecurityTypes' type='INT' />
+  <field number='558' name='NoSecurityTypes' type='NUMINGROUP' />
+  <field number='559' name='SecurityListRequestType' type='INT'>
+   <value enum='0' description='SYMBOL' />
+   <value enum='1' description='SECURITYTYPECFICODE' />
+   <value enum='2' description='PRODUCT' />
+   <value enum='3' description='TRADINGSESSIONID' />
+   <value enum='4' description='ALLSECURITIES' />
+  </field>
+  <field number='560' name='SecurityRequestResult' type='INT'>
+   <value enum='0' description='VALIDREQ' />
+   <value enum='1' description='INVALIDREQ' />
+   <value enum='2' description='NOINSTRUMENTSFOUND' />
+   <value enum='3' description='NOTAUTHORIZED' />
+   <value enum='4' description='INSTRUMENTUNAVAILABLE' />
+   <value enum='5' description='NOTSUPPORTED' />
+  </field>
+  <field number='561' name='RoundLot' type='QTY' />
+  <field number='562' name='MinTradeVol' type='QTY' />
+  <field number='563' name='MultiLegRptTypeReq' type='INT'>
+   <value enum='0' description='REPORT_BY_MULITLEG_SECURITY_ONLY' />
+   <value enum='1' description='REPORT_BY_MULTILEG_SECURITY_AND_BY_INSTRUMENT_LEGS_BELONGING_TO_THE_MULTILEG_SECURITY' />
+   <value enum='2' description='REPORT_BY_INSTRUMENT_LEGS_BELONGING_TO_THE_MULTILEG_SECURITY_ONLY' />
+  </field>
+  <field number='564' name='LegPositionEffect' type='CHAR' />
+  <field number='565' name='LegCoveredOrUncovered' type='INT' />
+  <field number='566' name='LegPrice' type='PRICE' />
+  <field number='567' name='TradSesStatusRejReason' type='INT'>
+   <value enum='1' description='UNKNOWNTRADINGSESSIONID' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='568' name='TradeRequestID' type='STRING' />
+  <field number='569' name='TradeRequestType' type='INT'>
+   <value enum='0' description='ALLTRADES' />
+   <value enum='1' description='MATCHEDTRADES' />
+   <value enum='2' description='UNMATCHEDTRADES' />
+   <value enum='3' description='UNREPORTEDTRADES' />
+   <value enum='4' description='ADVISORIESMATCH' />
+  </field>
+  <field number='570' name='PreviouslyReported' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='571' name='TradeReportID' type='STRING' />
+  <field number='572' name='TradeReportRefID' type='STRING' />
+  <field number='573' name='MatchStatus' type='CHAR'>
+   <value enum='0' description='COMPMATAFF' />
+   <value enum='1' description='UNCOMPUNMATUNAFF' />
+   <value enum='2' description='ADVALERT' />
+  </field>
+  <field number='574' name='MatchType' type='STRING'>
+   <value enum='A1' description='EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSFOURBADGESANDEXECUTIONTIME' />
+   <value enum='A2' description='EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSFOURBADGES' />
+   <value enum='A3' description='EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSTWOBADGESANDEXECUTIONTIME' />
+   <value enum='A4' description='EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSTWOBADGES' />
+   <value enum='A5' description='EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSEXECUTIONTIME' />
+   <value enum='ACTM1' description='NASDAQACTM1MATCH' />
+   <value enum='ACTM2' description='NASDAQACTM2MATCH' />
+   <value enum='ACTM3' description='NASDAQACTACCEPTEDTRADE' />
+   <value enum='ACTM4' description='NASDAQACTDEFAULTTRADE' />
+   <value enum='ACTM5' description='NASDAQACTDEFAULTAFTERM2' />
+   <value enum='ACTM6' description='NASDAQACTM6MATCH' />
+   <value enum='ACTMT' description='NASDAQNONACT' />
+   <value enum='AQ' description='COMPAREDRECORDSRESULTINGFROMSTAMPEDADVISORIESORSPECIALISTACCEPTSPAIROFFS' />
+   <value enum='M1' description='EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORMINUSBADGESANDTIMES' />
+   <value enum='M2' description='SUMMARIZEDMATCHMINUSBADGESANDTIMES' />
+   <value enum='MT' description='OCSLOCKEDIN' />
+   <value enum='S1' description='SUMMARIZEDMATCHUSINGA1' />
+   <value enum='S2' description='SUMMARIZEDMATCHUSINGA2' />
+   <value enum='S3' description='SUMMARIZEDMATCHUSINGA3' />
+   <value enum='S4' description='SUMMARIZEDMATCHUSINGA4' />
+   <value enum='S5' description='SUMMARIZEDMATCHUSINGA5' />
+  </field>
+  <field number='575' name='OddLot' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='576' name='NoClearingInstructions' type='NUMINGROUP' />
+  <field number='577' name='ClearingInstruction' type='INT'>
+   <value enum='0' description='PROCESSNORMALLY' />
+   <value enum='1' description='EXCLUDEFROMALLNETTING' />
+   <value enum='10' description='AUTOMATICGIVEUPMODETRADEGIVEUPTOTHEGIVEUPDESTINATIONNUMBERSPECIFIED' />
+   <value enum='11' description='QUALIFIEDSERVICEREPRESENTATIVEQSR' />
+   <value enum='12' description='CUSTOMERTRADE' />
+   <value enum='13' description='SELFCLEARING' />
+   <value enum='2' description='BILATERALNETTINGONLY' />
+   <value enum='3' description='EXCLEARING' />
+   <value enum='4' description='SPECIALTRADE' />
+   <value enum='5' description='MULTILATERALNETTING' />
+   <value enum='6' description='CLEARAGAINSTCENTRALCOUNTERPARTY' />
+   <value enum='7' description='EXCLUDEFROMCENTRALCOUNTERPARTY' />
+   <value enum='8' description='MANUALMODEPREPOSTINGANDORPREGIVEUP' />
+   <value enum='9' description='AUTOMATICPOSTINGMODETRADEPOSTINGTOTHEPOSITIONACCOUNTNUMBERSPECIFIED' />
+  </field>
+  <field number='578' name='TradeInputSource' type='STRING' />
+  <field number='579' name='TradeInputDevice' type='STRING' />
+  <field number='580' name='NoDates' type='INT' />
+  <field number='581' name='AccountType' type='INT'>
+   <value enum='1' description='ACCOUNTCUSTOMER' />
+   <value enum='2' description='ACCOUNTNONCUSTOMER' />
+   <value enum='3' description='HOUSETRADER' />
+   <value enum='4' description='FLOORTRADER' />
+   <value enum='6' description='ACCOUNTNONCUSTOMERCROSS' />
+   <value enum='7' description='HOUSETRADERCROSS' />
+   <value enum='8' description='JOINTBOACCT' />
+  </field>
+  <field number='582' name='CustOrderCapacity' type='INT'>
+   <value enum='1' description='MEMBER_TRADING_FOR_THEIR_OWN_ACCOUNT' />
+   <value enum='2' description='CLEARING_FIRM_TRADING_FOR_ITS_PROPRIETARY_ACCOUNT' />
+   <value enum='3' description='MEMBER_TRADING_FOR_ANOTHER_MEMBER' />
+   <value enum='4' description='ALL_OTHER' />
+  </field>
+  <field number='583' name='ClOrdLinkID' type='STRING' />
+  <field number='584' name='MassStatusReqID' type='STRING' />
+  <field number='585' name='MassStatusReqType' type='INT'>
+   <value enum='1' description='STATUSSECURITY' />
+   <value enum='2' description='STATUSUNDERLYINGSECURITY' />
+   <value enum='3' description='STATUSPRODUCT' />
+   <value enum='4' description='STATUSCFICODE' />
+   <value enum='5' description='STATUSSECURITYTYPE' />
+   <value enum='6' description='STATUSTRDSESSION' />
+   <value enum='7' description='STATUSALLORDERS' />
+   <value enum='8' description='STATUSPARTYID' />
+  </field>
+  <field number='586' name='OrigOrdModTime' type='UTCTIMESTAMP' />
+  <field number='587' name='LegSettlType' type='CHAR' />
+  <field number='588' name='LegSettlDate' type='LOCALMKTDATE' />
+  <field number='589' name='DayBookingInst' type='CHAR'>
+   <value enum='0' description='CAN_TRIGGER_BOOKING_WITHOUT_REFERENCE_TO_THE_ORDER_INITIATOR_AUTO' />
+   <value enum='1' description='SPEAK_WITH_ORDER_INITIATOR_BEFORE_BOOKING_SPEAK_FIRST' />
+   <value enum='2' description='ACCUMULATE' />
+  </field>
+  <field number='590' name='BookingUnit' type='CHAR'>
+   <value enum='0' description='EACH_PARTIAL_EXECUTION_IS_A_BOOKABLE_UNIT' />
+   <value enum='1' description='AGGREGATE_PARTIAL_EXECUTIONS_ON_THIS_ORDER_AND_BOOK_ONE_TRADE_PER_ORDER' />
+   <value enum='2' description='AGGREGATE_EXECUTIONS_FOR_THIS_SYMBOL_SIDE_AND_SETTLEMENT_DATE' />
+  </field>
+  <field number='591' name='PreallocMethod' type='CHAR'>
+   <value enum='0' description='PRORATA' />
+   <value enum='1' description='DO_NOT_PRORATA_DISCUSS_FIRST' />
+  </field>
+  <field number='592' name='UnderlyingCountryOfIssue' type='COUNTRY' />
+  <field number='593' name='UnderlyingStateOrProvinceOfIssue' type='STRING' />
+  <field number='594' name='UnderlyingLocaleOfIssue' type='STRING' />
+  <field number='595' name='UnderlyingInstrRegistry' type='STRING' />
+  <field number='596' name='LegCountryOfIssue' type='COUNTRY' />
+  <field number='597' name='LegStateOrProvinceOfIssue' type='STRING' />
+  <field number='598' name='LegLocaleOfIssue' type='STRING' />
+  <field number='599' name='LegInstrRegistry' type='STRING' />
+  <field number='600' name='LegSymbol' type='STRING' />
+  <field number='601' name='LegSymbolSfx' type='STRING' />
+  <field number='602' name='LegSecurityID' type='STRING' />
+  <field number='603' name='LegSecurityIDSource' type='STRING' />
+  <field number='604' name='NoLegSecurityAltID' type='STRING' />
+  <field number='605' name='LegSecurityAltID' type='STRING' />
+  <field number='606' name='LegSecurityAltIDSource' type='STRING' />
+  <field number='607' name='LegProduct' type='INT' />
+  <field number='608' name='LegCFICode' type='STRING' />
+  <field number='609' name='LegSecurityType' type='STRING' />
+  <field number='610' name='LegMaturityMonthYear' type='MONTHYEAR' />
+  <field number='611' name='LegMaturityDate' type='LOCALMKTDATE' />
+  <field number='612' name='LegStrikePrice' type='PRICE' />
+  <field number='613' name='LegOptAttribute' type='CHAR' />
+  <field number='614' name='LegContractMultiplier' type='FLOAT' />
+  <field number='615' name='LegCouponRate' type='PERCENTAGE' />
+  <field number='616' name='LegSecurityExchange' type='EXCHANGE' />
+  <field number='617' name='LegIssuer' type='STRING' />
+  <field number='618' name='EncodedLegIssuerLen' type='LENGTH' />
+  <field number='619' name='EncodedLegIssuer' type='DATA' />
+  <field number='620' name='LegSecurityDesc' type='STRING' />
+  <field number='621' name='EncodedLegSecurityDescLen' type='LENGTH' />
+  <field number='622' name='EncodedLegSecurityDesc' type='DATA' />
+  <field number='623' name='LegRatioQty' type='FLOAT' />
+  <field number='624' name='LegSide' type='CHAR' />
+  <field number='625' name='TradingSessionSubID' type='STRING' />
+  <field number='626' name='AllocType' type='INT'>
+   <value enum='1' description='BUYSIDECALC' />
+   <value enum='2' description='BUYSIDEPRELIM' />
+   <value enum='3' description='SELLSIDECALC' />
+   <value enum='4' description='SELLSIDECALCWITHOUTPRELIM' />
+   <value enum='5' description='BUYSIDEREADYTOBOOKSINGLE' />
+   <value enum='6' description='BUYSIDEREADYTOBOOKCOMBINED' />
+   <value enum='7' description='WAREHOUSEINSTRUCTION' />
+   <value enum='8' description='REQUESTTOINTERMEDIARY' />
+  </field>
+  <field number='627' name='NoHops' type='NUMINGROUP' />
+  <field number='628' name='HopCompID' type='STRING' />
+  <field number='629' name='HopSendingTime' type='UTCTIMESTAMP' />
+  <field number='630' name='HopRefID' type='SEQNUM' />
+  <field number='631' name='MidPx' type='PRICE' />
+  <field number='632' name='BidYield' type='PERCENTAGE' />
+  <field number='633' name='MidYield' type='PERCENTAGE' />
+  <field number='634' name='OfferYield' type='PERCENTAGE' />
+  <field number='635' name='ClearingFeeIndicator' type='STRING'>
+   <value enum='1' description='1STYEARDELEGATE' />
+   <value enum='2' description='2NDYEARDELEGATE' />
+   <value enum='3' description='3RDYEARDELEGATE' />
+   <value enum='4' description='4THYEARDELEGATE' />
+   <value enum='5' description='5THYEARDELEGATE' />
+   <value enum='9' description='6THYEARDELEGATE' />
+   <value enum='B' description='CBOEMEMBER' />
+   <value enum='C' description='NONMEMBERCUSTOMER' />
+   <value enum='E' description='EQUITYCLEARINGMEMBER' />
+   <value enum='F' description='FULLASSOCIATEMEMBER' />
+   <value enum='H' description='106H106J' />
+   <value enum='I' description='GIMIDEMCOMMEMBERSHIP' />
+   <value enum='L' description='LESSEE106F' />
+   <value enum='M' description='ALLOTHERS' />
+  </field>
+  <field number='636' name='WorkingIndicator' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='637' name='LegLastPx' type='PRICE' />
+  <field number='638' name='PriorityIndicator' type='INT'>
+   <value enum='0' description='PRIORITYUNCHANGED' />
+   <value enum='1' description='LOSTPRIORITY' />
+  </field>
+  <field number='639' name='PriceImprovement' type='PRICEOFFSET' />
+  <field number='640' name='Price2' type='PRICE' />
+  <field number='641' name='LastForwardPoints2' type='PRICEOFFSET' />
+  <field number='642' name='BidForwardPoints2' type='PRICEOFFSET' />
+  <field number='643' name='OfferForwardPoints2' type='PRICEOFFSET' />
+  <field number='644' name='RFQReqID' type='STRING' />
+  <field number='645' name='MktBidPx' type='PRICE' />
+  <field number='646' name='MktOfferPx' type='PRICE' />
+  <field number='647' name='MinBidSize' type='QTY' />
+  <field number='648' name='MinOfferSize' type='QTY' />
+  <field number='649' name='QuoteStatusReqID' type='STRING' />
+  <field number='650' name='LegalConfirm' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='651' name='UnderlyingLastPx' type='PRICE' />
+  <field number='652' name='UnderlyingLastQty' type='QTY' />
+  <field number='653' name='SecDefStatus' type='INT'>
+   <value enum='0' description='PENDINGAPPROVAL' />
+   <value enum='1' description='APPROVEDACCEPTED' />
+   <value enum='2' description='REJECTED' />
+   <value enum='3' description='UNAUTHORIZEDREQUEST' />
+   <value enum='4' description='INVALIDDEFINITIONREQUEST' />
+  </field>
+  <field number='654' name='LegRefID' type='STRING' />
+  <field number='655' name='ContraLegRefID' type='STRING' />
+  <field number='656' name='SettlCurrBidFxRate' type='FLOAT' />
+  <field number='657' name='SettlCurrOfferFxRate' type='FLOAT' />
+  <field number='658' name='QuoteRequestRejectReason' type='INT'>
+   <value enum='1' description='UNKNOWNSYM' />
+   <value enum='10' description='PASS' />
+   <value enum='2' description='EXCHANGECLOSED' />
+   <value enum='3' description='QUOTEREQUESTEXLIMIT' />
+   <value enum='4' description='TOOLATE' />
+   <value enum='5' description='INVPRICE' />
+   <value enum='6' description='NOTAUTHTOREQQUOTE' />
+   <value enum='7' description='NOMATCHFORINQUIRY' />
+   <value enum='8' description='NOMARKETFORINSTRUMENT' />
+   <value enum='9' description='NOINVENTORY' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='659' name='SideComplianceID' type='STRING' />
+  <field number='660' name='AcctIDSource' type='INT'>
+   <value enum='1' description='BIC' />
+   <value enum='2' description='SIDCODE' />
+   <value enum='3' description='TFMGSPTA' />
+   <value enum='4' description='OMGEOALERTID' />
+   <value enum='5' description='DTCCCODE' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='661' name='AllocAcctIDSource' type='INT' />
+  <field number='662' name='BenchmarkPrice' type='PRICE' />
+  <field number='663' name='BenchmarkPriceType' type='INT' />
+  <field number='664' name='ConfirmID' type='STRING' />
+  <field number='665' name='ConfirmStatus' type='INT'>
+   <value enum='1' description='RECEIVED' />
+   <value enum='2' description='MISMATCHEDACCOUNT' />
+   <value enum='3' description='MISSINGSETTLEMENTINSTRUCTIONS' />
+   <value enum='4' description='CONFIRMED' />
+   <value enum='5' description='REQUESTREJECTED' />
+  </field>
+  <field number='666' name='ConfirmTransType' type='INT'>
+   <value enum='0' description='NEW' />
+   <value enum='1' description='REPLACE' />
+   <value enum='2' description='CANCEL' />
+  </field>
+  <field number='667' name='ContractSettlMonth' type='MONTHYEAR' />
+  <field number='668' name='DeliveryForm' type='INT'>
+   <value enum='1' description='BOOKENTRY' />
+   <value enum='2' description='BEARER' />
+  </field>
+  <field number='669' name='LastParPx' type='PRICE' />
+  <field number='670' name='NoLegAllocs' type='NUMINGROUP' />
+  <field number='671' name='LegAllocAccount' type='STRING' />
+  <field number='672' name='LegIndividualAllocID' type='STRING' />
+  <field number='673' name='LegAllocQty' type='QTY' />
+  <field number='674' name='LegAllocAcctIDSource' type='STRING' />
+  <field number='675' name='LegSettlCurrency' type='CURRENCY' />
+  <field number='676' name='LegBenchmarkCurveCurrency' type='CURRENCY' />
+  <field number='677' name='LegBenchmarkCurveName' type='STRING' />
+  <field number='678' name='LegBenchmarkCurvePoint' type='STRING' />
+  <field number='679' name='LegBenchmarkPrice' type='PRICE' />
+  <field number='680' name='LegBenchmarkPriceType' type='INT' />
+  <field number='681' name='LegBidPx' type='PRICE' />
+  <field number='682' name='LegIOIQty' type='STRING' />
+  <field number='683' name='NoLegStipulations' type='NUMINGROUP' />
+  <field number='684' name='LegOfferPx' type='PRICE' />
+  <field number='685' name='LegOrderQty' type='QTY' />
+  <field number='686' name='LegPriceType' type='INT' />
+  <field number='687' name='LegQty' type='QTY' />
+  <field number='688' name='LegStipulationType' type='STRING' />
+  <field number='689' name='LegStipulationValue' type='STRING' />
+  <field number='690' name='LegSwapType' type='INT'>
+   <value enum='1' description='PARFORPAR' />
+   <value enum='2' description='MODIFIEDDURATION' />
+   <value enum='4' description='RISK' />
+   <value enum='5' description='PROCEEDS' />
+  </field>
+  <field number='691' name='Pool' type='STRING' />
+  <field number='692' name='QuotePriceType' type='INT'>
+   <value enum='1' description='PERCENT' />
+   <value enum='10' description='YIELD' />
+   <value enum='2' description='PERSHARE' />
+   <value enum='3' description='FIXEDAMOUNT' />
+   <value enum='4' description='DISCOUNT' />
+   <value enum='5' description='PREMIUM' />
+   <value enum='6' description='BASISPOINTSRELATIVETOBENCHMARK' />
+   <value enum='7' description='TEDPRICE' />
+   <value enum='8' description='TEDYIELD' />
+   <value enum='9' description='YIELDSPREADSWAPS' />
+  </field>
+  <field number='693' name='QuoteRespID' type='STRING' />
+  <field number='694' name='QuoteRespType' type='INT'>
+   <value enum='1' description='HITLIFT' />
+   <value enum='2' description='COUNTER' />
+   <value enum='3' description='EXPIRED' />
+   <value enum='4' description='COVER' />
+   <value enum='5' description='DONEAWAY' />
+   <value enum='6' description='PASS' />
+  </field>
+  <field number='695' name='QuoteQualifier' type='CHAR' />
+  <field number='696' name='YieldRedemptionDate' type='LOCALMKTDATE' />
+  <field number='697' name='YieldRedemptionPrice' type='PRICE' />
+  <field number='698' name='YieldRedemptionPriceType' type='INT' />
+  <field number='699' name='BenchmarkSecurityID' type='STRING' />
+  <field number='700' name='ReversalIndicator' type='BOOLEAN' />
+  <field number='701' name='YieldCalcDate' type='LOCALMKTDATE' />
+  <field number='702' name='NoPositions' type='NUMINGROUP' />
+  <field number='703' name='PosType' type='STRING'>
+   <value enum='ALC' description='ALLOCATIONTRADEQTY' />
+   <value enum='AS' description='OPTIONASSIGNMENT' />
+   <value enum='ASF' description='ASOFTRADEQTY' />
+   <value enum='DLV' description='DELIVERYQTY' />
+   <value enum='ETR' description='ELECTRONICTRADEQTY' />
+   <value enum='EX' description='OPTIONEXERCISEQTY' />
+   <value enum='FIN' description='ENDOFDAYQTY' />
+   <value enum='IAS' description='INTRASPREADQTY' />
+   <value enum='IES' description='INTERSPREADQTY' />
+   <value enum='PA' description='ADJUSTMENTQTY' />
+   <value enum='PIT' description='PITTRADEQTY' />
+   <value enum='SOD' description='STARTOFDAYQTY' />
+   <value enum='SPL' description='INTEGRALSPLIT' />
+   <value enum='TA' description='TRANSACTIONFROMASSIGNMENT' />
+   <value enum='TOT' description='TOTALTRANSACTIONQTY' />
+   <value enum='TQ' description='TRANSACTIONQUANTITY' />
+   <value enum='TRF' description='TRANSFERTRADEQTY' />
+   <value enum='TX' description='TRANSACTIONFROMEXERCISE' />
+   <value enum='XM' description='CROSSMARGINQTY' />
+  </field>
+  <field number='704' name='LongQty' type='QTY' />
+  <field number='705' name='ShortQty' type='QTY' />
+  <field number='706' name='PosQtyStatus' type='INT'>
+   <value enum='0' description='SUBMITTED' />
+   <value enum='1' description='ACCEPTED' />
+   <value enum='2' description='REJECTED' />
+  </field>
+  <field number='707' name='PosAmtType' type='STRING'>
+   <value enum='CASH' description='CASHAMOUNTCORPORATEEVENT' />
+   <value enum='CRES' description='CASHRESIDUALAMOUNT' />
+   <value enum='FMTM' description='FINALMARKTOMARKETAMOUNT' />
+   <value enum='IMTM' description='INCREMENTALMARKTOMARKETAMOUNT' />
+   <value enum='PREM' description='PREMIUMAMOUNT' />
+   <value enum='SMTM' description='STARTOFDAYMARKTOMARKETAMOUNT' />
+   <value enum='TVAR' description='TRADEVARIATIONAMOUNT' />
+   <value enum='VADJ' description='VALUEADJUSTEDAMOUNT' />
+  </field>
+  <field number='708' name='PosAmt' type='AMT' />
+  <field number='709' name='PosTransType' type='INT'>
+   <value enum='1' description='EXERCISE' />
+   <value enum='2' description='DONOTEXERCISE' />
+   <value enum='3' description='POSITIONADJUSTMENT' />
+   <value enum='4' description='POSITIONCHANGESUBMISSIONMARGINDISPOSITION' />
+   <value enum='5' description='PLEDGE' />
+  </field>
+  <field number='710' name='PosReqID' type='STRING' />
+  <field number='711' name='NoUnderlyings' type='NUMINGROUP' />
+  <field number='712' name='PosMaintAction' type='INT'>
+   <value enum='1' description='NEW' />
+   <value enum='2' description='REPLACE' />
+   <value enum='3' description='CANCEL' />
+  </field>
+  <field number='713' name='OrigPosReqRefID' type='STRING' />
+  <field number='714' name='PosMaintRptRefID' type='STRING' />
+  <field number='715' name='ClearingBusinessDate' type='LOCALMKTDATE' />
+  <field number='716' name='SettlSessID' type='STRING' />
+  <field number='717' name='SettlSessSubID' type='STRING' />
+  <field number='718' name='AdjustmentType' type='INT'>
+   <value enum='0' description='PROCESSREQUESTASMARGINDISPOSITION' />
+   <value enum='1' description='DELTAPLUS' />
+   <value enum='2' description='DELTAMINUS' />
+   <value enum='3' description='FINAL' />
+  </field>
+  <field number='719' name='ContraryInstructionIndicator' type='BOOLEAN' />
+  <field number='720' name='PriorSpreadIndicator' type='BOOLEAN' />
+  <field number='721' name='PosMaintRptID' type='STRING' />
+  <field number='722' name='PosMaintStatus' type='INT'>
+   <value enum='0' description='ACCEPTED' />
+   <value enum='1' description='ACCEPTEDWITHWARNINGS' />
+   <value enum='2' description='REJECTED' />
+   <value enum='3' description='COMPLETED' />
+   <value enum='4' description='COMPLETEDWITHWARNINGS' />
+  </field>
+  <field number='723' name='PosMaintResult' type='INT'>
+   <value enum='0' description='SUCCESSFULCOMPLETION' />
+   <value enum='1' description='REJECTED' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='724' name='PosReqType' type='INT'>
+   <value enum='0' description='POSITIONS' />
+   <value enum='1' description='TRADES' />
+   <value enum='2' description='EXERCISES' />
+   <value enum='3' description='ASSIGNMENTS' />
+  </field>
+  <field number='725' name='ResponseTransportType' type='INT'>
+   <value enum='0' description='INBAND' />
+   <value enum='1' description='OUTOFBAND' />
+  </field>
+  <field number='726' name='ResponseDestination' type='STRING' />
+  <field number='727' name='TotalNumPosReports' type='INT' />
+  <field number='728' name='PosReqResult' type='INT'>
+   <value enum='0' description='VALIDREQUEST' />
+   <value enum='1' description='INVALIDORUNSUPPORTEDREQUEST' />
+   <value enum='2' description='NOPOSITIONSFOUNDTHATMATCHCRITERIA' />
+   <value enum='3' description='NOTAUTHORIZEDTOREQUESTPOSITIONS' />
+   <value enum='4' description='REQUESTFORPOSITIONNOTSUPPORTED' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='729' name='PosReqStatus' type='INT'>
+   <value enum='0' description='COMPLETED' />
+   <value enum='1' description='COMPLETEDWITHWARNINGS' />
+   <value enum='2' description='REJECTED' />
+  </field>
+  <field number='730' name='SettlPrice' type='PRICE' />
+  <field number='731' name='SettlPriceType' type='INT'>
+   <value enum='1' description='FINAL' />
+   <value enum='2' description='THEORETICAL' />
+  </field>
+  <field number='732' name='UnderlyingSettlPrice' type='PRICE' />
+  <field number='733' name='UnderlyingSettlPriceType' type='INT' />
+  <field number='734' name='PriorSettlPrice' type='PRICE' />
+  <field number='735' name='NoQuoteQualifiers' type='NUMINGROUP' />
+  <field number='736' name='AllocSettlCurrency' type='CURRENCY' />
+  <field number='737' name='AllocSettlCurrAmt' type='AMT' />
+  <field number='738' name='InterestAtMaturity' type='AMT' />
+  <field number='739' name='LegDatedDate' type='LOCALMKTDATE' />
+  <field number='740' name='LegPool' type='STRING' />
+  <field number='741' name='AllocInterestAtMaturity' type='AMT' />
+  <field number='742' name='AllocAccruedInterestAmt' type='AMT' />
+  <field number='743' name='DeliveryDate' type='LOCALMKTDATE' />
+  <field number='744' name='AssignmentMethod' type='CHAR'>
+   <value enum='P' description='PRORATA' />
+   <value enum='R' description='RANDOM' />
+  </field>
+  <field number='745' name='AssignmentUnit' type='QTY' />
+  <field number='746' name='OpenInterest' type='AMT' />
+  <field number='747' name='ExerciseMethod' type='CHAR'>
+   <value enum='A' description='AUTOMATIC' />
+   <value enum='M' description='MANUAL' />
+  </field>
+  <field number='748' name='TotNumTradeReports' type='INT' />
+  <field number='749' name='TradeRequestResult' type='INT'>
+   <value enum='0' description='SUCCESSFUL' />
+   <value enum='1' description='INVALIDORUNKNOWNINSTRUMENT' />
+   <value enum='2' description='INVALIDTYPEOFTRADEREQUESTED' />
+   <value enum='3' description='INVALIDPARTIES' />
+   <value enum='4' description='INVALIDTRANSPORTTYPEREQUESTED' />
+   <value enum='5' description='INVALIDDESTINATIONREQUESTED' />
+   <value enum='8' description='TRADEREQUESTTYPENOTSUPPORTED' />
+   <value enum='9' description='UNAUTHORIZEDFORTRADECAPTUREREPORTREQUEST' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='750' name='TradeRequestStatus' type='INT'>
+   <value enum='0' description='ACCEPTED' />
+   <value enum='1' description='COMPLETED' />
+   <value enum='2' description='REJECTED' />
+  </field>
+  <field number='751' name='TradeReportRejectReason' type='INT'>
+   <value enum='0' description='SUCCESSFULDEFAULT' />
+   <value enum='1' description='INVALIDPARTYINFORMATION' />
+   <value enum='2' description='UNKNOWNINSTRUMENT' />
+   <value enum='3' description='UNAUTHORIZEDTOREPORTTRADES' />
+   <value enum='4' description='INVALIDTRADETYPE' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='752' name='SideMultiLegReportingType' type='INT'>
+   <value enum='1' description='SINGLESECURITY' />
+   <value enum='2' description='INDIVIDUALLEGOFAMULTILEGSECURITY' />
+   <value enum='3' description='MULTILEGSECURITY' />
+  </field>
+  <field number='753' name='NoPosAmt' type='NUMINGROUP' />
+  <field number='754' name='AutoAcceptIndicator' type='BOOLEAN' />
+  <field number='755' name='AllocReportID' type='STRING' />
+  <field number='756' name='NoNested2PartyIDs' type='NUMINGROUP' />
+  <field number='757' name='Nested2PartyID' type='STRING' />
+  <field number='758' name='Nested2PartyIDSource' type='CHAR' />
+  <field number='759' name='Nested2PartyRole' type='INT' />
+  <field number='760' name='Nested2PartySubID' type='STRING' />
+  <field number='761' name='BenchmarkSecurityIDSource' type='STRING' />
+  <field number='762' name='SecuritySubType' type='STRING' />
+  <field number='763' name='UnderlyingSecuritySubType' type='STRING' />
+  <field number='764' name='LegSecuritySubType' type='STRING' />
+  <field number='765' name='AllowableOneSidednessPct' type='PERCENTAGE' />
+  <field number='766' name='AllowableOneSidednessValue' type='AMT' />
+  <field number='767' name='AllowableOneSidednessCurr' type='CURRENCY' />
+  <field number='768' name='NoTrdRegTimestamps' type='NUMINGROUP' />
+  <field number='769' name='TrdRegTimestamp' type='UTCTIMESTAMP' />
+  <field number='770' name='TrdRegTimestampType' type='INT'>
+   <value enum='1' description='EXECUTIONTIME' />
+   <value enum='2' description='TIMEIN' />
+   <value enum='3' description='TIMEOUT' />
+   <value enum='4' description='BROKERRECEIPT' />
+   <value enum='5' description='BROKEREXECUTION' />
+  </field>
+  <field number='771' name='TrdRegTimestampOrigin' type='STRING' />
+  <field number='772' name='ConfirmRefID' type='STRING' />
+  <field number='773' name='ConfirmType' type='INT'>
+   <value enum='1' description='STATUS' />
+   <value enum='2' description='CONFIRMATION' />
+   <value enum='3' description='CONFIRMATIONREQUESTREJECTED' />
+  </field>
+  <field number='774' name='ConfirmRejReason' type='INT'>
+   <value enum='1' description='MISMATCHEDACCOUNT' />
+   <value enum='2' description='MISSINGSETTLEMENTINSTRUCTIONS' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='775' name='BookingType' type='INT'>
+   <value enum='0' description='REGULARBOOKING' />
+   <value enum='1' description='CFDCONTRACTFORDIFFERENCE' />
+   <value enum='2' description='TOTALRETURNSWAP' />
+  </field>
+  <field number='776' name='IndividualAllocRejCode' type='INT' />
+  <field number='777' name='SettlInstMsgID' type='STRING' />
+  <field number='778' name='NoSettlInst' type='NUMINGROUP' />
+  <field number='779' name='LastUpdateTime' type='UTCTIMESTAMP' />
+  <field number='780' name='AllocSettlInstType' type='INT'>
+   <value enum='0' description='USEDEFAULTINSTRUCTIONS' />
+   <value enum='1' description='DERIVEFROMPARAMETERSPROVIDED' />
+   <value enum='2' description='FULLDETAILSPROVIDED' />
+   <value enum='3' description='SSIDBIDSPROVIDED' />
+   <value enum='4' description='PHONEFORINSTRUCTIONS' />
+  </field>
+  <field number='781' name='NoSettlPartyIDs' type='NUMINGROUP' />
+  <field number='782' name='SettlPartyID' type='STRING' />
+  <field number='783' name='SettlPartyIDSource' type='CHAR' />
+  <field number='784' name='SettlPartyRole' type='INT' />
+  <field number='785' name='SettlPartySubID' type='STRING' />
+  <field number='786' name='SettlPartySubIDType' type='INT' />
+  <field number='787' name='DlvyInstType' type='CHAR'>
+   <value enum='C' description='CASH' />
+   <value enum='S' description='SECURITIES' />
+  </field>
+  <field number='788' name='TerminationType' type='INT'>
+   <value enum='1' description='OVERNIGHT' />
+   <value enum='2' description='TERM' />
+   <value enum='3' description='FLEXIBLE' />
+   <value enum='4' description='OPEN' />
+  </field>
+  <field number='789' name='NextExpectedMsgSeqNum' type='SEQNUM' />
+  <field number='790' name='OrdStatusReqID' type='STRING' />
+  <field number='791' name='SettlInstReqID' type='STRING' />
+  <field number='792' name='SettlInstReqRejCode' type='INT'>
+   <value enum='0' description='UNABLETOPROCESSREQUEST' />
+   <value enum='1' description='UNKNOWNACCOUNT' />
+   <value enum='2' description='NOMATCHINGSETTLEMENTINSTRUCTIONSFOUND' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='793' name='SecondaryAllocID' type='STRING' />
+  <field number='794' name='AllocReportType' type='INT'>
+   <value enum='3' description='SELLSIDECALCULATEDUSINGPRELIMINARY' />
+   <value enum='4' description='SELLSIDECALCULATEDWITHOUTPRELIMINARY' />
+   <value enum='5' description='WAREHOUSERECAP' />
+   <value enum='8' description='REQUESTTOINTERMEDIARY' />
+  </field>
+  <field number='795' name='AllocReportRefID' type='STRING' />
+  <field number='796' name='AllocCancReplaceReason' type='INT'>
+   <value enum='1' description='ORIGINALDETAILSINCORRECT' />
+   <value enum='2' description='CHANGEINUNDERLYINGORDERDETAILS' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='797' name='CopyMsgIndicator' type='BOOLEAN' />
+  <field number='798' name='AllocAccountType' type='INT'>
+   <value enum='1' description='ACCOUNTISCARRIEDONCUSTOMERSIDEOFBOOKS' />
+   <value enum='2' description='ACCOUNTISCARRIEDONNONCUSTOMERSIDEOFBOOKS' />
+   <value enum='3' description='HOUSETRADER' />
+   <value enum='4' description='FLOORTRADER' />
+   <value enum='6' description='ACCOUNTISCARRIEDONNONCUSTOMERSIDEOFBOOKSANDISCROSSMARGINED' />
+   <value enum='7' description='ACCOUNTISHOUSETRADERANDISCROSSMARGINED' />
+   <value enum='8' description='JBO' />
+  </field>
+  <field number='799' name='OrderAvgPx' type='PRICE' />
+  <field number='800' name='OrderBookingQty' type='QTY' />
+  <field number='801' name='NoSettlPartySubIDs' type='NUMINGROUP' />
+  <field number='802' name='NoPartySubIDs' type='NUMINGROUP' />
+  <field number='803' name='PartySubIDType' type='INT'>
+   <value enum='1' description='FIRM' />
+   <value enum='10' description='SECURITIESACCOUNTNUMBER' />
+   <value enum='11' description='REGISTRATIONNUMBER' />
+   <value enum='12' description='REGISTEREDADDRESS_12' />
+   <value enum='13' description='REGULATORYSTATUS' />
+   <value enum='14' description='REGISTRATIONNAME' />
+   <value enum='15' description='CASHACCOUNT' />
+   <value enum='16' description='BIC' />
+   <value enum='17' description='CSDPARTICIPANTMEMBERCODE' />
+   <value enum='18' description='REGISTEREDADDRESS_18' />
+   <value enum='19' description='FUNDACCOUNTNAME' />
+   <value enum='2' description='PERSON' />
+   <value enum='20' description='TELEXNUMBER' />
+   <value enum='21' description='FAXNUMBER' />
+   <value enum='22' description='SECURITIESACCOUNTNAME' />
+   <value enum='23' description='CASHACCOUNTNAME' />
+   <value enum='24' description='DEPARTMENT' />
+   <value enum='25' description='LOCATIONDESK' />
+   <value enum='26' description='POSITIONACCOUNTTYPE' />
+   <value enum='3' description='SYSTEM' />
+   <value enum='4' description='APPLICATION' />
+   <value enum='4000' description='RESERVEDANDAVAILABLEFORBILATERALLYAGREEDUPONUSERDEFINEDVALUES' />
+   <value enum='5' description='FULLLEGALNAMEOFFIRM' />
+   <value enum='6' description='POSTALADDRESS' />
+   <value enum='7' description='PHONENUMBER' />
+   <value enum='8' description='EMAILADDRESS' />
+   <value enum='9' description='CONTACTNAME' />
+  </field>
+  <field number='804' name='NoNestedPartySubIDs' type='NUMINGROUP' />
+  <field number='805' name='NestedPartySubIDType' type='INT' />
+  <field number='806' name='NoNested2PartySubIDs' type='NUMINGROUP' />
+  <field number='807' name='Nested2PartySubIDType' type='INT' />
+  <field number='808' name='AllocIntermedReqType' type='INT'>
+   <value enum='1' description='PENDINGACCEPT' />
+   <value enum='2' description='PENDINGRELEASE' />
+   <value enum='3' description='PENDINGREVERSAL' />
+   <value enum='4' description='ACCEPT' />
+   <value enum='5' description='BLOCKLEVELREJECT' />
+   <value enum='6' description='ACCOUNTLEVELREJECT' />
+  </field>
+  <field number='810' name='UnderlyingPx' type='PRICE' />
+  <field number='811' name='PriceDelta' type='FLOAT' />
+  <field number='812' name='ApplQueueMax' type='INT' />
+  <field number='813' name='ApplQueueDepth' type='INT' />
+  <field number='814' name='ApplQueueResolution' type='INT'>
+   <value enum='0' description='NOACTIONTAKEN' />
+   <value enum='1' description='QUEUEFLUSHED' />
+   <value enum='2' description='OVERLAYLAST' />
+   <value enum='3' description='ENDSESSION' />
+  </field>
+  <field number='815' name='ApplQueueAction' type='INT'>
+   <value enum='0' description='NOACTIONTAKEN' />
+   <value enum='1' description='QUEUEFLUSHED' />
+   <value enum='2' description='OVERLAYLAST' />
+   <value enum='3' description='ENDSESSION' />
+  </field>
+  <field number='816' name='NoAltMDSource' type='NUMINGROUP' />
+  <field number='817' name='AltMDSourceID' type='STRING' />
+  <field number='818' name='SecondaryTradeReportID' type='STRING' />
+  <field number='819' name='AvgPxIndicator' type='INT'>
+   <value enum='0' description='NOAVERAGEPRICING' />
+   <value enum='1' description='TRADEAVERAGEPRICEGROUP' />
+   <value enum='2' description='LASTTRADEAVERAGEPRICEGROUP' />
+  </field>
+  <field number='820' name='TradeLinkID' type='STRING' />
+  <field number='821' name='OrderInputDevice' type='STRING' />
+  <field number='822' name='UnderlyingTradingSessionID' type='STRING' />
+  <field number='823' name='UnderlyingTradingSessionSubID' type='STRING' />
+  <field number='824' name='TradeLegRefID' type='STRING' />
+  <field number='825' name='ExchangeRule' type='STRING' />
+  <field number='826' name='TradeAllocIndicator' type='INT'>
+   <value enum='0' description='ALLOCATIONNOTREQUIRED' />
+   <value enum='1' description='ALLOCATIONREQUIREDALLOCATIONINFORMATIONNOTPROVIDED' />
+   <value enum='2' description='USEALLOCATIONPROVIDEDWITHTHETRADE' />
+  </field>
+  <field number='827' name='ExpirationCycle' type='INT'>
+   <value enum='0' description='EXPIREONTRADINGSESSIONCLOSE' />
+   <value enum='1' description='EXPIREONTRADINGSESSIONOPEN' />
+  </field>
+  <field number='828' name='TrdType' type='INT'>
+   <value enum='0' description='REGULARTRADE' />
+   <value enum='1' description='BLOCKTRADE' />
+   <value enum='10' description='AFTERHOURSTRADE' />
+   <value enum='2' description='EFP' />
+   <value enum='3' description='TRANSFER' />
+   <value enum='4' description='LATETRADE' />
+   <value enum='5' description='TTRADE' />
+   <value enum='6' description='WEIGHTEDAVERAGEPRICETRADE' />
+   <value enum='7' description='BUNCHEDTRADE' />
+   <value enum='8' description='LATEBUNCHEDTRADE' />
+   <value enum='9' description='PRIORREFERENCEPRICETRADE' />
+  </field>
+  <field number='829' name='TrdSubType' type='INT' />
+  <field number='830' name='TransferReason' type='STRING' />
+  <field number='831' name='AsgnReqID' type='STRING' />
+  <field number='832' name='TotNumAssignmentReports' type='INT' />
+  <field number='833' name='AsgnRptID' type='STRING' />
+  <field number='834' name='ThresholdAmount' type='PRICEOFFSET' />
+  <field number='835' name='PegMoveType' type='INT'>
+   <value enum='0' description='FLOATING' />
+   <value enum='1' description='FIXED' />
+  </field>
+  <field number='836' name='PegOffsetType' type='INT'>
+   <value enum='0' description='PRICE' />
+   <value enum='1' description='BASISPOINTS' />
+   <value enum='2' description='TICKS' />
+   <value enum='3' description='PRICETIERLEVEL' />
+  </field>
+  <field number='837' name='PegLimitType' type='INT'>
+   <value enum='0' description='ORBETTER' />
+   <value enum='1' description='STRICT' />
+   <value enum='2' description='ORWORSE' />
+  </field>
+  <field number='838' name='PegRoundDirection' type='INT'>
+   <value enum='1' description='MOREAGGRESSIVE' />
+   <value enum='2' description='MOREPASSIVE' />
+  </field>
+  <field number='839' name='PeggedPrice' type='PRICE' />
+  <field number='840' name='PegScope' type='INT'>
+   <value enum='1' description='LOCALEXCHANGEECNATS' />
+   <value enum='2' description='NATIONAL' />
+   <value enum='3' description='GLOBAL' />
+   <value enum='4' description='NATIONALEXCLUDINGLOCAL' />
+  </field>
+  <field number='841' name='DiscretionMoveType' type='INT'>
+   <value enum='0' description='FLOATING' />
+   <value enum='1' description='FIXED' />
+  </field>
+  <field number='842' name='DiscretionOffsetType' type='INT'>
+   <value enum='0' description='PRICE' />
+   <value enum='1' description='BASISPOINTS' />
+   <value enum='2' description='TICKS' />
+   <value enum='3' description='PRICETIERLEVEL' />
+  </field>
+  <field number='843' name='DiscretionLimitType' type='INT'>
+   <value enum='0' description='ORBETTER' />
+   <value enum='1' description='STRICT' />
+   <value enum='2' description='ORWORSE' />
+  </field>
+  <field number='844' name='DiscretionRoundDirection' type='INT'>
+   <value enum='1' description='MOREAGGRESSIVE' />
+   <value enum='2' description='MOREPASSIVE' />
+  </field>
+  <field number='845' name='DiscretionPrice' type='PRICE' />
+  <field number='846' name='DiscretionScope' type='INT'>
+   <value enum='1' description='LOCALEXCHANGEECNATS' />
+   <value enum='2' description='NATIONAL' />
+   <value enum='3' description='GLOBAL' />
+   <value enum='4' description='NATIONALEXCLUDINGLOCAL' />
+  </field>
+  <field number='847' name='TargetStrategy' type='INT'>
+   <value enum='1' description='VWAP' />
+   <value enum='1000' description='RESERVEDANDAVAILABLEFORBILATERALLYAGREEDUPONUSERDEFINEDVALUES' />
+   <value enum='2' description='PARTICIPATE' />
+   <value enum='3' description='MININIZEMARKETIMPACT' />
+  </field>
+  <field number='848' name='TargetStrategyParameters' type='STRING' />
+  <field number='849' name='ParticipationRate' type='PERCENTAGE' />
+  <field number='850' name='TargetStrategyPerformance' type='FLOAT' />
+  <field number='851' name='LastLiquidityInd' type='INT'>
+   <value enum='1' description='ADDEDLIQUIDITY' />
+   <value enum='2' description='REMOVEDLIQUIDITY' />
+   <value enum='3' description='LIQUIDITYROUTEDOUT' />
+  </field>
+  <field number='852' name='PublishTrdIndicator' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='853' name='ShortSaleReason' type='INT'>
+   <value enum='0' description='DEALERSOLDSHORT' />
+   <value enum='1' description='DEALERSOLDSHORTEXEMPT' />
+   <value enum='2' description='SELLINGCUSTOMERSOLDSHORT' />
+   <value enum='3' description='SELLINGCUSTOMERSOLDSHORTEXEMPT' />
+   <value enum='4' description='QSRORAGUCONTRASIDESOLDSHORT' />
+   <value enum='5' description='QSRORAGUCONTRASIDESOLDSHORTEXEMPT' />
+  </field>
+  <field number='854' name='QtyType' type='INT'>
+   <value enum='0' description='UNITS' />
+   <value enum='1' description='CONTRACTS' />
+  </field>
+  <field number='855' name='SecondaryTrdType' type='INT' />
+  <field number='856' name='TradeReportType' type='INT'>
+   <value enum='0' description='SUBMIT' />
+   <value enum='1' description='ALLEGED' />
+   <value enum='2' description='ACCEPT' />
+   <value enum='3' description='DECLINE' />
+   <value enum='4' description='ADDENDUM' />
+   <value enum='5' description='NOWAS' />
+   <value enum='6' description='TRADEREPORTCANCEL' />
+   <value enum='7' description='LOCKEDINTRADEBREAK' />
+  </field>
+  <field number='857' name='AllocNoOrdersType' type='INT'>
+   <value enum='0' description='NOTSPECIFIED' />
+   <value enum='1' description='EXPLICITLISTPROVIDED' />
+  </field>
+  <field number='858' name='SharedCommission' type='AMT' />
+  <field number='859' name='ConfirmReqID' type='STRING' />
+  <field number='860' name='AvgParPx' type='PRICE' />
+  <field number='861' name='ReportedPx' type='PRICE' />
+  <field number='862' name='NoCapacities' type='NUMINGROUP' />
+  <field number='863' name='OrderCapacityQty' type='QTY' />
+  <field number='864' name='NoEvents' type='NUMINGROUP' />
+  <field number='865' name='EventType' type='INT'>
+   <value enum='1' description='PUT' />
+   <value enum='2' description='CALL' />
+   <value enum='3' description='TENDER' />
+   <value enum='4' description='SINKINGFUNDCALL' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='866' name='EventDate' type='LOCALMKTDATE' />
+  <field number='867' name='EventPx' type='PRICE' />
+  <field number='868' name='EventText' type='STRING' />
+  <field number='869' name='PctAtRisk' type='PERCENTAGE' />
+  <field number='870' name='NoInstrAttrib' type='NUMINGROUP' />
+  <field number='871' name='InstrAttribType' type='INT'>
+   <value enum='1' description='FLAT' />
+   <value enum='10' description='ORIGINALISSUEDISCOUNT' />
+   <value enum='11' description='CALLABLEPUTTABLE' />
+   <value enum='12' description='ESCROWEDTOMATURITY' />
+   <value enum='13' description='ESCROWEDTOREDEMPTIONDATE' />
+   <value enum='14' description='PREREFUNDED' />
+   <value enum='15' description='INDEFAULT' />
+   <value enum='16' description='UNRATED' />
+   <value enum='17' description='TAXABLE' />
+   <value enum='18' description='INDEXED' />
+   <value enum='19' description='SUBJECTTOALTERNATIVEMINIMUMTAX' />
+   <value enum='2' description='ZEROCOUPON' />
+   <value enum='20' description='ORIGINALISSUEDISCOUNTPRICE' />
+   <value enum='21' description='CALLABLEBELOWMATURITYVALUE' />
+   <value enum='22' description='CALLABLEWITHOUTNOTICEBYMAILTOHOLDERUNLESSREGISTERED' />
+   <value enum='3' description='INTERESTBEARING' />
+   <value enum='4' description='NOPERIODICPAYMENTS' />
+   <value enum='5' description='VARIABLERATE' />
+   <value enum='6' description='LESSFEEFORPUT' />
+   <value enum='7' description='STEPPEDCOUPON' />
+   <value enum='8' description='COUPONPERIOD' />
+   <value enum='9' description='WHENISSUED' />
+   <value enum='99' description='TEXT' />
+  </field>
+  <field number='872' name='InstrAttribValue' type='STRING' />
+  <field number='873' name='DatedDate' type='LOCALMKTDATE' />
+  <field number='874' name='InterestAccrualDate' type='LOCALMKTDATE' />
+  <field number='875' name='CPProgram' type='INT'>
+   <value enum='1' description='3A3' />
+   <value enum='2' description='42' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='876' name='CPRegType' type='STRING' />
+  <field number='877' name='UnderlyingCPProgram' type='STRING' />
+  <field number='878' name='UnderlyingCPRegType' type='STRING' />
+  <field number='879' name='UnderlyingQty' type='QTY' />
+  <field number='880' name='TrdMatchID' type='STRING' />
+  <field number='881' name='SecondaryTradeReportRefID' type='STRING' />
+  <field number='882' name='UnderlyingDirtyPrice' type='PRICE' />
+  <field number='883' name='UnderlyingEndPrice' type='PRICE' />
+  <field number='884' name='UnderlyingStartValue' type='AMT' />
+  <field number='885' name='UnderlyingCurrentValue' type='AMT' />
+  <field number='886' name='UnderlyingEndValue' type='AMT' />
+  <field number='887' name='NoUnderlyingStips' type='NUMINGROUP' />
+  <field number='888' name='UnderlyingStipType' type='STRING' />
+  <field number='889' name='UnderlyingStipValue' type='STRING' />
+  <field number='890' name='MaturityNetMoney' type='AMT' />
+  <field number='891' name='MiscFeeBasis' type='INT'>
+   <value enum='0' description='ABSOLUTE' />
+   <value enum='1' description='PERUNIT' />
+   <value enum='2' description='PERCENTAGE' />
+  </field>
+  <field number='892' name='TotNoAllocs' type='INT' />
+  <field number='893' name='LastFragment' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='894' name='CollReqID' type='STRING' />
+  <field number='895' name='CollAsgnReason' type='INT'>
+   <value enum='0' description='INITIAL' />
+   <value enum='1' description='SCHEDULED' />
+   <value enum='2' description='TIMEWARNING' />
+   <value enum='3' description='MARGINDEFICIENCY' />
+   <value enum='4' description='MARGINEXCESS' />
+   <value enum='5' description='FORWARDCOLLATERALDEMAND' />
+   <value enum='6' description='EVENTOFDEFAULT' />
+   <value enum='7' description='ADVERSETAXEVENT' />
+  </field>
+  <field number='896' name='CollInquiryQualifier' type='INT'>
+   <value enum='0' description='TRADEDATE' />
+   <value enum='1' description='GCINSTRUMENT' />
+   <value enum='2' description='COLLATERALINSTRUMENT' />
+   <value enum='3' description='SUBSTITUTIONELIGIBLE' />
+   <value enum='4' description='NOTASSIGNED' />
+   <value enum='5' description='PARTIALLYASSIGNED' />
+   <value enum='6' description='FULLYASSIGNED' />
+   <value enum='7' description='OUTSTANDINGTRADES' />
+  </field>
+  <field number='897' name='NoTrades' type='NUMINGROUP' />
+  <field number='898' name='MarginRatio' type='PERCENTAGE' />
+  <field number='899' name='MarginExcess' type='AMT' />
+  <field number='900' name='TotalNetValue' type='AMT' />
+  <field number='901' name='CashOutstanding' type='AMT' />
+  <field number='902' name='CollAsgnID' type='STRING' />
+  <field number='903' name='CollAsgnTransType' type='INT'>
+   <value enum='0' description='NEW' />
+   <value enum='1' description='REPLACE' />
+   <value enum='2' description='CANCEL' />
+   <value enum='3' description='RELEASE' />
+   <value enum='4' description='REVERSE' />
+  </field>
+  <field number='904' name='CollRespID' type='STRING' />
+  <field number='905' name='CollAsgnRespType' type='INT'>
+   <value enum='0' description='RECEIVED' />
+   <value enum='1' description='ACCEPTED' />
+   <value enum='2' description='DECLINED' />
+   <value enum='3' description='REJECTED' />
+  </field>
+  <field number='906' name='CollAsgnRejectReason' type='INT'>
+   <value enum='0' description='UNKNOWNDEAL' />
+   <value enum='1' description='UNKNOWNORINVALIDINSTRUMENT' />
+   <value enum='2' description='UNAUTHORIZEDTRANSACTION' />
+   <value enum='3' description='INSUFFICIENTCOLLATERAL' />
+   <value enum='4' description='INVALIDTYPEOFCOLLATERAL' />
+   <value enum='5' description='EXCESSIVESUBSTITUTION' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='907' name='CollAsgnRefID' type='STRING' />
+  <field number='908' name='CollRptID' type='STRING' />
+  <field number='909' name='CollInquiryID' type='STRING' />
+  <field number='910' name='CollStatus' type='INT'>
+   <value enum='0' description='UNASSIGNED' />
+   <value enum='1' description='PARTIALLYASSIGNED' />
+   <value enum='2' description='ASSIGNMENTPROPOSED' />
+   <value enum='3' description='ASSIGNEDACCEPTED' />
+   <value enum='4' description='CHALLENGED' />
+  </field>
+  <field number='911' name='TotNumReports' type='INT' />
+  <field number='912' name='LastRptRequested' type='BOOLEAN'>
+   <value enum='N' description='NO' />
+   <value enum='Y' description='YES' />
+  </field>
+  <field number='913' name='AgreementDesc' type='STRING' />
+  <field number='914' name='AgreementID' type='STRING' />
+  <field number='915' name='AgreementDate' type='LOCALMKTDATE' />
+  <field number='916' name='StartDate' type='LOCALMKTDATE' />
+  <field number='917' name='EndDate' type='LOCALMKTDATE' />
+  <field number='918' name='AgreementCurrency' type='CURRENCY' />
+  <field number='919' name='DeliveryType' type='INT'>
+   <value enum='0' description='VERSUSPAYMENT' />
+   <value enum='1' description='FREE' />
+   <value enum='2' description='TRIPARTY' />
+   <value enum='3' description='HOLDINCUSTODY' />
+  </field>
+  <field number='920' name='EndAccruedInterestAmt' type='AMT' />
+  <field number='921' name='StartCash' type='AMT' />
+  <field number='922' name='EndCash' type='AMT' />
+  <field number='923' name='UserRequestID' type='STRING' />
+  <field number='924' name='UserRequestType' type='INT'>
+   <value enum='1' description='LOGONUSER' />
+   <value enum='2' description='LOGOFFUSER' />
+   <value enum='3' description='CHANGEPASSWORDFORUSER' />
+   <value enum='4' description='REQUESTINDIVIDUALUSERSTATUS' />
+  </field>
+  <field number='925' name='NewPassword' type='STRING' />
+  <field number='926' name='UserStatus' type='INT'>
+   <value enum='1' description='LOGGEDIN' />
+   <value enum='2' description='NOTLOGGEDIN' />
+   <value enum='3' description='USERNOTRECOGNISED' />
+   <value enum='4' description='PASSWORDINCORRECT' />
+   <value enum='5' description='PASSWORDCHANGED' />
+   <value enum='6' description='OTHER' />
+  </field>
+  <field number='927' name='UserStatusText' type='STRING' />
+  <field number='928' name='StatusValue' type='INT'>
+   <value enum='1' description='CONNECTED' />
+   <value enum='2' description='NOTCONNECTEDDOWNEXPECTEDUP' />
+   <value enum='3' description='NOTCONNECTEDDOWNEXPECTEDDOWN' />
+   <value enum='4' description='INPROCESS' />
+  </field>
+  <field number='929' name='StatusText' type='STRING' />
+  <field number='930' name='RefCompID' type='STRING' />
+  <field number='931' name='RefSubID' type='STRING' />
+  <field number='932' name='NetworkResponseID' type='STRING' />
+  <field number='933' name='NetworkRequestID' type='STRING' />
+  <field number='934' name='LastNetworkResponseID' type='STRING' />
+  <field number='935' name='NetworkRequestType' type='INT'>
+   <value enum='1' description='SNAPSHOT' />
+   <value enum='2' description='SUBSCRIBE' />
+   <value enum='4' description='STOPSUBSCRIBING' />
+   <value enum='8' description='LEVELOFDETAIL' />
+  </field>
+  <field number='936' name='NoCompIDs' type='NUMINGROUP' />
+  <field number='937' name='NetworkStatusResponseType' type='INT'>
+   <value enum='1' description='FULL' />
+   <value enum='2' description='INCREMENTALUPDATE' />
+  </field>
+  <field number='938' name='NoCollInquiryQualifier' type='NUMINGROUP' />
+  <field number='939' name='TrdRptStatus' type='INT'>
+   <value enum='0' description='ACCEPTED' />
+   <value enum='1' description='REJECTED' />
+  </field>
+  <field number='940' name='AffirmStatus' type='INT'>
+   <value enum='1' description='RECEIVED' />
+   <value enum='2' description='CONFIRMREJECTED' />
+   <value enum='3' description='AFFIRMED' />
+  </field>
+  <field number='941' name='UnderlyingStrikeCurrency' type='CURRENCY' />
+  <field number='942' name='LegStrikeCurrency' type='CURRENCY' />
+  <field number='943' name='TimeBracket' type='STRING' />
+  <field number='944' name='CollAction' type='INT'>
+   <value enum='0' description='RETAIN' />
+   <value enum='1' description='ADD' />
+   <value enum='2' description='REMOVE' />
+  </field>
+  <field number='945' name='CollInquiryStatus' type='INT'>
+   <value enum='0' description='ACCEPTED' />
+   <value enum='1' description='ACCEPTEDWITHWARNINGS' />
+   <value enum='2' description='COMPLETED' />
+   <value enum='3' description='COMPLETEDWITHWARNINGS' />
+   <value enum='4' description='REJECTED' />
+  </field>
+  <field number='946' name='CollInquiryResult' type='INT'>
+   <value enum='0' description='SUCCESSFUL' />
+   <value enum='1' description='INVALIDORUNKNOWNINSTRUMENT' />
+   <value enum='2' description='INVALIDORUNKNOWNCOLLATERALTYPE' />
+   <value enum='3' description='INVALIDPARTIES' />
+   <value enum='4' description='INVALIDTRANSPORTTYPEREQUESTED' />
+   <value enum='5' description='INVALIDDESTINATIONREQUESTED' />
+   <value enum='6' description='NOCOLLATERALFOUNDFORTHETRADESPECIFIED' />
+   <value enum='7' description='NOCOLLATERALFOUNDFORTHEORDERSPECIFIED' />
+   <value enum='8' description='COLLATERALINQUIRYTYPENOTSUPPORTED' />
+   <value enum='9' description='UNAUTHORIZEDFORCOLLATERALINQUIRY' />
+   <value enum='99' description='OTHER' />
+  </field>
+  <field number='947' name='StrikeCurrency' type='CURRENCY' />
+  <field number='948' name='NoNested3PartyIDs' type='NUMINGROUP' />
+  <field number='949' name='Nested3PartyID' type='STRING' />
+  <field number='950' name='Nested3PartyIDSource' type='CHAR' />
+  <field number='951' name='Nested3PartyRole' type='INT' />
+  <field number='952' name='NoNested3PartySubIDs' type='NUMINGROUP' />
+  <field number='953' name='Nested3PartySubID' type='STRING' />
+  <field number='954' name='Nested3PartySubIDType' type='INT' />
+  <field number='955' name='LegContractSettlMonth' type='MONTHYEAR' />
+  <field number='956' name='LegInterestAccrualDate' type='LOCALMKTDATE' />
+ </fields>
+</fix>

+ 34 - 0
api/fix/SessionCfgMk.cfg

@@ -0,0 +1,34 @@
+[DEFAULT]
+ConnectionType=initiator
+ReconnectInterval=2
+FileStorePath=somewhere
+FileLogPath=log
+StartTime=00:00:00
+EndTime=00:00:00
+UseDataDictionary=Y
+DataDictionary=FIX44.xml
+SocketConnectPort=8882
+SocketConnectHost=127.0.0.1
+LogoutTimeout=5
+ResetOnLogon=Y
+CheckLatency=N
+FileLogShowEvents=Y
+FileLogShowIncoming=Y
+FileLogShowOutgoing=Y
+NullFormatIsOk=Y
+ValidateFieldsHaveValues=N
+
+[SESSION]
+BeginString=FIX.4.4
+HeartBtInt=30 
+SenderCompID=DISANBO
+TargetCompID=XW-MKD
+FileStorePath=somewhere
+FileLogPath=log
+DataDictionary=FIX44.xml
+SocketUseSSL=N
+Username=disanbo_fix
+Password=1xd4Z1
+
+
+

+ 269 - 0
api/fix/app.go

@@ -0,0 +1,269 @@
+package fix
+
+import "fmt"
+import "time"
+import "log"
+
+type MarketInfoApp struct {
+	AppBase
+	ch chan *TickFull
+}
+
+func NewMarketInfoApp(ch chan *TickFull) *MarketInfoApp {
+	app := &MarketInfoApp{}
+	app.ch = ch
+	return app
+}
+
+var stocks map[string]*StockInfo
+
+func (app *MarketInfoApp) onLogon(tc *AppTradeClient, sid *SessionID) {
+	tc.MarketData("AUD/CAD", '1')
+	tc.MarketData("AUD/CHF", '1')
+	tc.MarketData("AUD/JPY", '1')
+	tc.MarketData("AUD/NZD", '1')
+	tc.MarketData("AUD/USD", '1')
+	tc.MarketData("CAD/JPY", '1')
+	tc.MarketData("CHF/JPY", '1')
+	tc.MarketData("EUR/AUD", '1')
+	tc.MarketData("EUR/CAD", '1')
+	tc.MarketData("EUR/CHF", '1')
+	tc.MarketData("EUR/GBP", '1')
+	tc.MarketData("EUR/JPY", '1')
+	tc.MarketData("EUR/NZD", '1')
+	tc.MarketData("EUR/USD", '1')
+	tc.MarketData("GBP/AUD", '1')
+	tc.MarketData("GBP/CAD", '1')
+	tc.MarketData("GBP/CHF", '1')
+	tc.MarketData("GBP/JPY", '1')
+	tc.MarketData("GBP/USD", '1')
+	tc.MarketData("NZD/JPY", '1')
+	tc.MarketData("NZD/USD", '1')
+	tc.MarketData("OIL/USD", '1')
+	tc.MarketData("SGD/JPY", '1')
+	tc.MarketData("USD/CAD", '1')
+	tc.MarketData("USD/CHF", '1')
+	tc.MarketData("USD/JPY", '1')
+	tc.MarketData("USD/PLN", '1')
+	tc.MarketData("XAG/USD", '1')
+	tc.MarketData("XAG/EUR", '1')
+	tc.MarketData("XAU/USD", '1')
+	tc.MarketData("XAU/EUR", '1')
+	tc.MarketData("ZAR/JPY", '1')
+
+	/*for i := 1; i <= 17; i++ {
+		tc.MarketData(fmt.Sprintf("%d", 4000+i), "1")
+	}
+	for i := 1; i <= 7; i += 2 {
+		tc.MarketData(fmt.Sprintf("%d", 100088+i), "1")
+	}
+	for i := 1; i <= 57; i += 2 {
+		tc.MarketData(fmt.Sprintf("%d", 100478+i), "1")
+	}
+	*/
+	fmt.Println("onLogon -------------------")
+	/*
+	   stocks = make(map[string]*StockInfo)
+
+	   posReqID := tc.ClOrdID()
+	   fmt.Println("test:" , posReqID);
+	   posReqType := 0
+	   account := "20410767"
+	   accountType := 300
+
+	   tc.RequestForPositions(posReqID ,posReqType ,account ,accountType )
+	*/
+}
+
+func (app *MarketInfoApp) fromApp(tc *AppTradeClient, msg *Message, sid *SessionID) {
+	typevalue, ok := GetMsgType(msg)
+	if (typevalue == "UAP") && (ok == true) {
+		/*		stockinfo, nLastRptRequested, ok := GetAccountStockInfo(msg)
+				fmt.Println(stockinfo, nLastRptRequested)
+				if ok {
+					stocks[cstring(stockinfo.Symbol[:])] = stockinfo
+					if nLastRptRequested == 1 {
+
+						tc.MarketData(cstring(stockinfo.Symbol[:]), cstring(stockinfo.SecurityExchange[:]))
+					}
+				}
+		*/
+	} else if (typevalue == "UAN") && (ok == true) {
+		//get value
+	} else if (typevalue == "W") && (ok == true) {
+		tick, ok := GetMarketData(msg)
+		if ok {
+			//非阻塞模式
+			select {
+			case app.ch <- tick:
+			default:
+			}
+		}
+	}
+
+}
+
+const (
+	INIT = iota
+	CREATE
+	READY
+	CLOSE
+)
+
+//请求的结构体
+type OrderRequest struct {
+	BookID           string
+	ClOrdID          string
+	HandInst         byte
+	Side             byte
+	OrderType        byte
+	Qty              float64
+	Price            float64
+	Account          string
+	SecurityType     string
+	SecurityExchange string
+	Currency         string
+}
+
+type OrderStatus struct {
+	OrderID          string
+	SecondaryExecID  string
+	ClOrdID          string
+	OrigClOrdID      string
+	OrdStatusReqID   string
+	ExecID           string
+	ExecType         byte
+	OrdStatus        byte
+	OrdRejReason     int
+	Account          string
+	SecurityID       string
+	SecurityIDSource string
+	Side             byte
+	OrdType          byte
+	Price            float64
+	TimeInForce      byte
+	LastQty          float64
+	LastPx           float64
+	LeavesQty        float64
+	CumQty           float64
+	AvgPx            float64
+	Text             string
+}
+
+type OrderInfo struct {
+	req      *OrderRequest
+	status   *OrderStatus
+	callback func(status interface{})
+}
+
+type OrderApp struct {
+	AppBase
+	state  int
+	tc     *AppTradeClient
+	orders map[string]*OrderInfo
+}
+
+//订单相关的操作:先完成市价单的处理,然后完成limit单的处理。
+//不管市价的单 和 limit单,都是采用异步通知的模式
+
+func NewOrderApp() *OrderApp {
+	app := &OrderApp{}
+	app.state = INIT
+	app.orders = make(map[string]*OrderInfo)
+	return app
+}
+
+func (app *OrderApp) onCreate(tc *AppTradeClient, sid *SessionID) {
+	fmt.Println("onCreate")
+	app.state = CREATE
+}
+
+func (app *OrderApp) onLogon(tc *AppTradeClient, sid *SessionID) {
+	fmt.Println("onLogon")
+	app.tc = tc
+	app.state = READY
+}
+
+func (app *OrderApp) onLogout(tc *AppTradeClient, sid *SessionID) {
+	fmt.Println("onLogout")
+	app.state = CLOSE
+}
+
+func (app *OrderApp) GetTC() *AppTradeClient {
+	return app.tc
+}
+
+func (app *OrderApp) SendOrder(req *OrderRequest, cb func(interface{})) bool {
+	//真正发送到服务器的操作
+	if app.tc == nil || app.state != READY {
+		return false
+	}
+	info := &OrderInfo{}
+	ret := app.tc.SendOrder(req.BookID, req.ClOrdID, req.HandInst, req.Side, req.OrderType, req.Qty, req.Price, req.Account, req.SecurityType, req.SecurityExchange, req.Currency)
+
+	if ret {
+		info.req = req
+		info.callback = cb
+		app.orders[req.ClOrdID] = info
+	}
+	return ret
+}
+
+func (app *OrderApp) TradeCaptureReportRequest(reqId string, reqType int, subType byte, cb func(interface{})) bool {
+	//真正发送到服务器的操作
+	if app.tc == nil || app.state != READY {
+		return false
+	}
+	info := &OrderInfo{}
+	ret := app.tc.TradeCaptureReportRequest(reqId, reqType, subType)
+	if ret {
+		info.req = nil
+		info.callback = cb
+		app.orders[reqId] = info
+	}
+	return ret
+}
+
+func (app *OrderApp) CancleOrder(clordId string, qty float64, cb func(interface{})) bool {
+	if info, ok := app.orders[clordId]; ok {
+		id := app.tc.ClOrdID()
+		ret := app.tc.CancleOrder(info.req.BookID, info.req.ClOrdID, id, info.req.Side, qty, info.req.Account, info.req.SecurityType, clordId)
+		if ret {
+			req := *info.req
+			req.ClOrdID = id
+			info2 := &OrderInfo{}
+			info2.req = &req
+			info2.callback = cb
+			app.orders[req.ClOrdID] = info2
+		}
+		return ret
+	}
+	return false
+}
+
+func (app *OrderApp) StatusOrder(clordId string, cb func(interface{})) bool {
+	return true
+}
+
+func (app *OrderApp) fromApp(tc *AppTradeClient, msg *Message, sid *SessionID) {
+	log.Println("fromApp go", msg.ToStr())
+	status, ok := GetOrderStatus(msg)
+
+	if ok {
+		if info, ok := app.orders[status.ClOrdID]; ok {
+			info.status = status
+			info.callback(status)
+		} else {
+			fmt.Println("error clordid", status.ClOrdID, status)
+		}
+	}
+}
+
+func (app *OrderApp) WaitReady() {
+	for {
+		if app.state == READY {
+			break
+		}
+		time.Sleep(time.Millisecond)
+	}
+}

+ 352 - 0
api/fix/broadcast.go

@@ -0,0 +1,352 @@
+package fix
+
+import "fmt"
+import "net"
+import "encoding/binary"
+import "os"
+//import "syscall"
+//import "unsafe"
+import "time"
+//import "errors"
+import "sync"
+import _ "github.com/go-sql-driver/mysql" 
+import "database/sql"
+import "database/model"
+
+const listenport = ":8898"
+const NUM_PER_SYMBOL = 10//0000
+const (
+	EURUSD = iota
+	GBPUSD
+	USDJPY
+	USDCHF
+	AUDUSD
+	USDCAD
+	NZDUSD
+	EURGBP
+	EURJPY
+	EURCHF
+	EURAUD
+	EURCAD
+	GBPCHF
+	GBPJPY
+	CHFJPY
+	CADJPY
+	AUDJPY
+	AUDCAD
+	USDMXN
+	AUDNZD
+	XAGUSD
+	XAUUSD
+	OILUSD
+)
+
+type Tick struct {
+	AskCount int32
+	BidCount int32
+	AskPrice  []float64
+	BidPrice  []float64
+	AskVolume []float64
+	BidVolume []float64
+	Symbol [8]byte
+	Time int32
+	Millisecond int32
+}
+
+type SymbolInfo struct {
+	BufIndex int
+	BufPos int
+}
+
+type ClientInfo struct{
+	BufIndex int
+	DataPos int
+	DataNum int16
+}
+
+type ClientReqInfo struct{
+	BeginTime int64
+	Symbol int16
+	DataNum int16
+}
+
+type TimeAndPos struct {
+	Time int64
+	Pos int
+}
+
+var broaddatach chan TimeAndPos
+var fileLog *os.File
+var fileIndex int64
+var connmapreal map[net.Conn] chan TimeAndPos
+var symbolinfomap map[string] SymbolInfo
+var symbolidmap map[int16] string
+var TickBuf [][NUM_PER_SYMBOL]TickFull
+var mutex sync.Mutex
+var db *sql.DB
+var groupcommit *model.SqlQueue
+
+func debug(a ...interface{}) (n int, err error) {
+	mutex.Lock()
+	fileinfo,_ := fileLog.Stat()
+	if fileinfo.Size() >= 10*1024*1024 {
+		fileLog.Close()
+		fileIndex++
+		filename := fmt.Sprintf("log%d.txt",fileIndex)
+		fileLog, err = os.OpenFile(filename, os.O_RDWR | os.O_CREATE | os.O_TRUNC, 0644)
+		if err != nil {
+			return -1,err
+		}
+	}
+	mutex.Unlock()
+	tmptime := time.Now()
+	timestr := fmt.Sprintf("%02d-%02d %02d:%02d:%02d:%d",tmptime.Month(),tmptime.Day(),tmptime.Hour(),tmptime.Minute(),tmptime.Second(),tmptime.Nanosecond())
+	return fmt.Fprintln(fileLog,timestr,a)
+}
+
+func FindPosition(databuf []TickFull,beginpos int,endpos int,time int64)(pos int,re int){
+	begintime := GetTotalTime(databuf[beginpos].Time,databuf[beginpos].Millisecond)
+	if time <= begintime {
+		debug("time:",time,"databuf[beginpos].Time:",begintime)
+		return beginpos,0
+	}
+	endtime := GetTotalTime(databuf[endpos].Time,databuf[endpos].Millisecond)
+	if time >= endtime {
+		debug("time:",time,"databuf[endpos].Time:",endtime)
+		return endpos,0
+	}
+	midpos := beginpos + (endpos - beginpos)/2
+	midtime := GetTotalTime(databuf[midpos].Time,databuf[midpos].Millisecond)
+	if time == midtime {
+		debug("midpos",midpos)
+		return midpos,0
+	}else{
+		if endpos == (beginpos + 1) {
+			debug("endpos:",endpos)
+			return endpos,0
+		}else {
+			if time < midtime {
+				debug("beginpos:",beginpos,"midpos:",midpos,"time:",time)
+				return FindPosition(databuf,beginpos,midpos,time)
+			}else{
+				debug("midpos:",midpos,"endpos:",endpos,"time:",time)
+				return FindPosition(databuf,midpos,endpos,time)
+			}
+		}
+	}
+	debug(-1,-1)
+	return -1,-1
+}
+
+func ReadClientRequest(conn net.Conn){
+	var cri ClientReqInfo
+	err := binary.Read(conn, binary.LittleEndian, &cri)
+	if err == nil {
+		var ok bool
+		var tmpsymbolinfo SymbolInfo
+		var tmpsymbolstr string
+		if cri.Symbol != -1 {
+			tmpsymbolstr,ok = symbolidmap[cri.Symbol]
+			if ok {
+				tmpsymbolinfo,ok = symbolinfomap[tmpsymbolstr]
+			}
+		}
+		if (cri.Symbol == -1) || (ok) {
+			debug("begintime:",cri.BeginTime,"symbol:",cri.Symbol)
+			var ci ClientInfo
+			ci.BufIndex = tmpsymbolinfo.BufIndex
+			ci.DataNum = cri.DataNum
+			if cri.BeginTime == -1  || cri.BeginTime == 0 {
+				if cri.BeginTime == -1 {
+					ci.DataPos = tmpsymbolinfo.BufPos
+				}else{
+					ci.DataPos = 0
+				}
+				debug("ci.BufIndex:",ci.BufIndex,"ci.DataPos:",ci.DataPos)
+			}else{
+				pos,re := FindPosition(TickBuf[tmpsymbolinfo.BufIndex][:],0,tmpsymbolinfo.BufPos,cri.BeginTime)
+				if re >= 0 {
+					ci.DataPos = pos
+					debug("ci.BufIndex:",ci.BufIndex,"ci.DataPos:",ci.DataPos)
+				}else{
+					ci.DataPos = 0
+					debug("ci.BufIndex:",ci.BufIndex,"ci.DataPos:",ci.DataPos)
+                }
+			}
+			clientch := make(chan TimeAndPos)
+			connmapreal[conn] = clientch
+			go SendData(conn,ci,clientch,cri.Symbol,tmpsymbolstr)
+			var tmptimeandpos TimeAndPos
+			tmptimeandpos.Time = GetTotalTime(TickBuf[tmpsymbolinfo.BufIndex][tmpsymbolinfo.BufPos].Time,
+                                      TickBuf[tmpsymbolinfo.BufIndex][tmpsymbolinfo.BufPos].Millisecond)
+			tmptimeandpos.Pos = tmpsymbolinfo.BufPos
+			clientch <- tmptimeandpos
+		}else{
+			var retcode int32 = -1
+			err := binary.Write(conn, binary.LittleEndian, &retcode)
+			if err != nil {
+				debug(err)
+			}
+			conn.Close()
+			debug("symbol:",cri.Symbol)
+		}
+	}else{
+		conn.Close()
+		debug(err)
+	}
+}
+
+func DoConnection(port string) {
+    ln, err := net.Listen("tcp", port)
+    if err != nil {
+        panic(err)
+    }
+    for {
+        conn, err := ln.Accept()
+        if err != nil {
+            fmt.Println(err)
+            continue
+        }
+        debug("get client conn")
+        debug("link begin",conn.RemoteAddr().Network(),conn.RemoteAddr().String())
+        go ReadClientRequest(conn)
+    }
+}
+
+func GetTotalTime(Time int32,Millisecond int32)(TotalTime int64){
+	TotalTime = int64(Time)
+	TotalTime <<= 32
+	TotalTime += int64(Millisecond)
+	return
+}
+
+func ReadData(sourdatach chan *TickFull){
+	for {
+		tf := <-sourdatach
+		tmpsymbolstr := string(tf.Symbol[:])
+		tmpsymbolinfo,ok := symbolinfomap[tmpsymbolstr]
+		if !ok {
+			tmpsymbolinfo.BufIndex = len(TickBuf)
+			tmpsymbolinfo.BufPos = 0
+			symbolinfomap[tmpsymbolstr] = tmpsymbolinfo
+			tmpsymbolid := int16(tmpsymbolinfo.BufIndex)
+			symbolidmap[tmpsymbolid] = tmpsymbolstr
+			var tmpbuf [NUM_PER_SYMBOL]TickFull
+			TickBuf = append(TickBuf,tmpbuf)
+			//debug(tmpsymbolstr,tmpsymbolid,tmpsymbolinfo)
+		}else{
+			tmpsymbolinfo.BufPos++
+			if tmpsymbolinfo.BufPos >= NUM_PER_SYMBOL {
+				copy(TickBuf[tmpsymbolinfo.BufIndex][0:NUM_PER_SYMBOL/2],TickBuf[tmpsymbolinfo.BufIndex][NUM_PER_SYMBOL/2:])
+				tmpsymbolinfo.BufPos = NUM_PER_SYMBOL/2
+			}
+			symbolinfomap[tmpsymbolstr] = tmpsymbolinfo
+			//debug(tmpsymbolstr,tmpsymbolinfo)
+		}
+		TickBuf[tmpsymbolinfo.BufIndex][tmpsymbolinfo.BufPos] = *tf
+		//fmt.Println(TickBuf[CurBufIndex][CurDataPos].Tag,TickBuf[CurBufIndex][CurDataPos].Period,TickBuf[CurBufIndex][CurDataPos].Time,TickBuf[CurBufIndex][CurDataPos].MSec,TickBuf[CurBufIndex][CurDataPos].Symbol,TickBuf[CurBufIndex][CurDataPos].Bid,TickBuf[CurBufIndex][CurDataPos].Ask,TickBuf[CurBufIndex][CurDataPos].High,TickBuf[CurBufIndex][CurDataPos].Low,TickBuf[CurBufIndex][CurDataPos].Volume,"\n")
+		//debug(tmpsymbolinfo.BufIndex,tmpsymbolinfo.BufPos - 1,TickBuf[tmpsymbolinfo.BufIndex][tmpsymbolinfo.BufPos - 1].Time,TickBuf[tmpsymbolinfo.BufIndex][tmpsymbolinfo.BufPos - 1].Millisecond)
+		var curinfo TimeAndPos
+		curinfo.Time = GetTotalTime(tf.Time,tf.Millisecond)
+		curinfo.Pos = tmpsymbolinfo.BufPos
+		//debug(curinfo)
+		if tmpsymbolstr[:4] == "4001" {
+			debug(tmpsymbolinfo.BufPos)
+			debug(TickBuf[0][0].Time,TickBuf[0][1].Time,TickBuf[0][2].Time,TickBuf[0][3].Time,TickBuf[0][4].Time,TickBuf[0][5].Time,
+			      TickBuf[0][6].Time,TickBuf[0][7].Time,TickBuf[0][8].Time,TickBuf[0][9].Time)
+		}
+		errdb := groupcommit.ExecStruct(tf, func (elm *model.SqlElement) {})
+		if errdb != nil {
+			debug("db error",errdb)
+		}
+		broaddatach <- curinfo
+	}
+}
+
+func GetSendData(tf TickFull,num int16)(ti Tick){
+	if tf.AskCount > int32(num) {
+		ti.AskCount = int32(num)
+	}
+	if tf.BidCount > int32(num) {
+		ti.BidCount = int32(num)
+	}
+	ti.AskPrice = make([]float64,ti.AskCount)
+	ti.AskPrice = tf.AskPrice[0:ti.AskCount]
+	ti.BidPrice = make([]float64,ti.BidCount)
+	ti.BidPrice = tf.BidPrice[0:ti.BidCount]
+	ti.AskVolume = make([]float64,ti.AskCount)
+	ti.AskVolume = tf.AskVolume[0:ti.AskCount]
+	ti.BidVolume = make([]float64,ti.BidCount)
+	ti.BidVolume = tf.BidVolume[0:ti.BidCount]
+	copy(ti.Symbol[:],tf.Symbol[:])
+	ti.Time = tf.Time
+	ti.Millisecond = tf.Millisecond
+	return
+}
+
+func SendData(conn net.Conn,ci ClientInfo,ch chan TimeAndPos,symbol int16,symbolstr string){
+	for{
+		CurInfo := <-ch
+		clienttime := GetTotalTime(TickBuf[ci.BufIndex][ci.DataPos].Time,TickBuf[ci.BufIndex][ci.DataPos].Millisecond)
+		for ;clienttime <= CurInfo.Time; {
+				if symbol == -1 || symbolstr == string(TickBuf[ci.BufIndex][ci.DataPos].Symbol[:]) {
+					tmptick := GetSendData(TickBuf[ci.BufIndex][ci.DataPos],ci.DataNum)
+					err := binary.Write(conn, binary.LittleEndian, &tmptick)
+					if err != nil {
+						debug("link end",err,conn.RemoteAddr().Network(),conn.RemoteAddr().String())
+						delete(connmapreal,conn)
+						conn.Close()
+						return
+					}
+				}
+				needbreak := false
+				if clienttime == CurInfo.Time {
+					needbreak = true
+				}
+				ci.DataPos = ci.DataPos + 1
+				if ci.DataPos > CurInfo.Pos {
+					ci.DataPos = 0
+				}
+				if needbreak {
+					break
+				}
+			}
+	}
+}
+
+func BroadcastData(){
+	for {
+		curtime := <-broaddatach
+		for _,clientch := range connmapreal {
+			select {
+				case clientch <- curtime:
+				default:
+			}
+		}
+	}
+}
+
+func InitBroadcast(sourdatach chan *TickFull) {
+	connmapreal = make(map[net.Conn] chan TimeAndPos)
+	symbolinfomap = make(map[string] SymbolInfo)
+	symbolidmap = make(map[int16] string)
+	broaddatach = make(chan TimeAndPos)
+	filename := fmt.Sprintf("log%d.txt",fileIndex)
+	fileLog, _ = os.OpenFile(filename, os.O_RDWR | os.O_CREATE | os.O_TRUNC, 0644)
+	var err error
+	db,err = sql.Open("mysql","wr_mtuser:jDfSL6e9ZSCQDySP@tcp(211.155.230.186:3306)/wr_mtuser?charset=utf8")
+	if err != nil {
+		debug(err)
+		return
+	}
+	groupcommit, err = model.NewSqlQueue(db, 10000, 50 * time.Millisecond)
+	if err != nil {
+		debug(err)
+		return
+	}
+	groupcommit.SetExecConf("FixData", "")
+	go DoConnection(listenport)
+	go ReadData(sourdatach)
+	go BroadcastData()
+	//select{}
+}

BIN
api/fix/cfix.dll


+ 18 - 0
api/fix/cgo_fix.go

@@ -0,0 +1,18 @@
+package fix
+
+import "unsafe"
+import "C"
+import "log"
+
+//export message_callback_go
+func message_callback_go(pfunc unsafe.Pointer, trade unsafe.Pointer, msg unsafe.Pointer, sid unsafe.Pointer) {
+    if msg == nil {
+        f := *(*func (unsafe.Pointer, unsafe.Pointer))(pfunc)
+        log.Println(trade, sid, msg, f)
+        f(trade, sid)
+    } else {
+        f := *(*func (unsafe.Pointer, unsafe.Pointer, unsafe.Pointer))(pfunc)
+        log.Println(trade, sid, msg, f)
+        f(trade, msg, sid)
+    }
+}

+ 108 - 0
api/fix/const.go

@@ -0,0 +1,108 @@
+package fix
+
+//OrdType
+const OrdType_FOREX_MARKET = 'C';
+const OrdType_FOREX_PREVIOUSLY_QUOTED = 'H';
+const OrdType_ONBASIS = '9';
+const OrdType_PREVIOUSLYINDICATED = 'E';
+const OrdType_PREVIOUS_FUND_VALUATION_POINT = 'L';
+const OrdType_PEGGED = 'P';
+const OrdType_LIMITONCLOSE = 'B';
+const OrdType_LIMIT_WITH_OR_WITHOUT = '8';
+const OrdType_STOP_LIMIT = '4';
+const OrdType_FOREX_SWAP = 'G';
+const OrdType_WITHORWITHOUT = '6';
+const OrdType_FOREXLIMIT = 'F';
+const OrdType_MARKET_WITH_LEFT_OVER_AS_LIMIT = 'K';
+const OrdType_PREVIOUSLYQUOTED = 'D';
+const OrdType_PREVIOUSLY_QUOTED = 'D';
+const OrdType_COUNTER_ORDER_SELECTION = 'Q';
+const OrdType_LIMITWITHORWITHOUT = '8';
+const OrdType_FOREXSWAP = 'G';
+const OrdType_MARKET_IF_TOUCHED = 'J';
+const OrdType_NEXT_FUND_VALUATION_POINT = 'M';
+const OrdType_FOREX_C = 'C';
+const OrdType_ON_CLOSE = 'A';
+const OrdType_STOP = '3';
+const OrdType_STOPLIMIT = '4';
+const OrdType_LIMITORBETTER = '7';
+const OrdType_ONCLOSE = 'A';
+const OrdType_FOREX_LIMIT = 'F';
+const OrdType_FOREXMARKET = 'C';
+const OrdType_FOREX = 'C';
+const OrdType_MARKETIFTOUCHED = 'J';
+const OrdType_FUNARI = 'I';
+const OrdType_FOREX_F = 'F';
+const OrdType_PREVIOUSLY_INDICATED = 'E';
+const OrdType_WITH_OR_WITHOUT = '6';
+const OrdType_MARKET_ON_CLOSE = '5';
+const OrdType_LIMIT = '2';
+const OrdType_MARKET_WITH_LEFTOVER_AS_LIMIT = 'K';
+const OrdType_FOREX_G = 'G';
+const OrdType_LIMIT_ON_CLOSE = 'B';
+const OrdType_MARKETONCLOSE = '5';
+const OrdType_PREVIOUSFUNDVALUATIONPOINT = 'L';
+const OrdType_NEXTFUNDVALUATIONPOINT = 'M';
+const OrdType_FOREX_H = 'H';
+const OrdType_FOREXPREVIOUSLYQUOTED = 'H';
+const OrdType_MARKETWITHLEFTOVERLIMIT = 'K';
+const OrdType_ON_BASIS = '9';
+const OrdType_LIMIT_OR_BETTER = '7';
+const OrdType_MARKET = '1';
+
+const Side_BORROW = 'G';
+const Side_SELLPLUS = '4';
+const Side_BUY_MINUS = '3';
+const Side_BUYMIN = '3';
+const Side_ASDEFINED = 'B';
+const Side_SUBSCRIBE = 'D';
+const Side_CROSS_SHORT_EXEMPT = 'A';
+const Side_UNDISCLOSED = '7';
+const Side_SELLSHT = '5';
+const Side_SELLSHTEX = '6';
+const Side_CROSSSHORTEX = 'A';
+const Side_CROSS = '8';
+const Side_SELL_SHORT_EXEMPT = '6';
+const Side_UNDISC = '7';
+const Side_CROSSSHORT = '9';
+const Side_BORROWFINANCING = 'G';
+const Side_BUY = '1';
+const Side_CROSS_SHORT_EXXMPT = 'A';
+const Side_SELL = '2';
+const Side_LEND = 'F';
+const Side_SELL_SHORT = '5';
+const Side_OPPOSITE = 'C';
+const Side_CROSS_SHORT = '9';
+const Side_SELL_PLUS = '4';
+const Side_REDEEM = 'E';
+const Side_LENDFINANCING = 'F';
+const Side_AS_DEFINED = 'B';
+
+const TimeInForce_GOOD_TILL_CROSSING = '5'
+const TimeInForce_FILL_OR_KILL = '4'
+const TimeInForce_GOOD_TILL_DATE = '6'
+const TimeInForce_GOOD_TILL_CANCEL = '1'
+const TimeInForce_DAY = '0'
+const TimeInForce_AT_CROSSING = '9'
+const TimeInForce_IMMEDIATE_OR_CANCEL = '3'
+const TimeInForce_GOOD_THROUGH_CROSSING = '8'
+const TimeInForce_AT_THE_CLOSE = '7'
+const TimeInForce_AT_THE_OPENING = '2'
+
+const  TradeRequestType_UNMATCHED_TRADES_THAT_MATCH_CRITERIA = 2;
+const  TradeRequestType_ALL_TRADES = 0;
+const  TradeRequestType_MATCHED_TRADES_MATCHING_CRITERIA_PROVIDED_ON_REQUEST = 1;
+const  TradeRequestType_UNREPORTEDTRADES = 3;
+const  TradeRequestType_ALLTRADES = 0;
+const  TradeRequestType_ADVISORIESMATCH = 4;
+const  TradeRequestType_MATCHEDTRADES = 1;
+const  TradeRequestType_UNMATCHEDTRADES = 2;
+const  TradeRequestType_UNREPORTED_TRADES_THAT_MATCH_CRITERIA = 3;
+const  TradeRequestType_ADVISORIES_THAT_MATCH_CRITERIA = 4;
+
+const  SubscriptionRequestType_DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST = '2';
+const  SubscriptionRequestType_SNAPSHOT_PLUS_UPDATES = '1';
+const  SubscriptionRequestType_SNAPSHOTUPDATE = '1';
+const  SubscriptionRequestType_SNAPSHOT = '0';
+const  SubscriptionRequestType_UNSUBSCRIBE = '2';
+

+ 692 - 0
api/fix/fix.go

@@ -0,0 +1,692 @@
+package fix
+
+/*
+#cgo CFLAGS: -I./include
+#cgo LDFLAGS: -L./lib -lcfix
+#cgo linux LDFLAGS:  -L/usr/lib -lquickfix -lsignalsync -lfix -lstdc++ -lboost_system -lboost_chrono -lboost_thread
+#include <cfunc.h>
+#include <stdlib.h>
+
+extern void message_callback_go(void* foo,  void* trade, const void* msg, void* sid);
+void * message_callback (void *pfunc, AppTradeClient* trade, const Message* msg, SessionID* sid) {
+    message_callback_go(pfunc, trade, msg, sid);
+    return 0;
+}
+
+void * get_callback() {
+    return message_callback;
+}
+*/
+import "C"
+import "fmt"
+import "unsafe"
+import "log"
+import "time"
+
+/*
+func PrintHello(strs []string) {
+    ss := make([]*C.char, len(strs))
+    for i := 0; i < len(strs); i++ {
+        ss[i] = C.CString(strs[i])
+    }
+    C.PrintHello((**C.char)(unsafe.Pointer(&ss[0])), C.int(len(strs)))
+    for i := 0; i < len(strs); i++ {
+        C.free(unsafe.Pointer(ss[i]))
+    }
+}
+*/
+type SessionSettings struct {
+	obj *C.struct_SessionSettings
+}
+
+type IApplication interface {
+	/// Notification of a session begin created
+	onCreate(*AppTradeClient, *SessionID)
+	/// Notification of a session successfully logging on
+	onLogon(*AppTradeClient, *SessionID)
+	/// Notification of a session logging off or disconnecting
+	onLogout(*AppTradeClient, *SessionID)
+	/// Notification of admin message being sent to target
+	toAdmin(*AppTradeClient, *Message, *SessionID)
+	/// Notification of app message being sent to target
+	toApp(*AppTradeClient, *Message, *SessionID)
+	/// Notification of admin message being received from target
+	fromAdmin(*AppTradeClient, *Message, *SessionID)
+	/// Notification of app message being received from target
+	fromApp(*AppTradeClient, *Message, *SessionID)
+}
+
+type AppTradeClient struct {
+	obj      *C.struct_AppTradeClient
+	app      IApplication
+	iapp     *Application
+	setting  *SessionSettings
+	onCreate func(unsafe.Pointer, unsafe.Pointer)
+	/// Notification of a session successfully logging on
+	onLogon func(unsafe.Pointer, unsafe.Pointer)
+	/// Notification of a session logging off or disconnecting
+	onLogout func(unsafe.Pointer, unsafe.Pointer)
+	/// Notification of admin message being sent to target
+	toAdmin func(unsafe.Pointer, unsafe.Pointer, unsafe.Pointer)
+	/// Notification of app message being sent to target
+	toApp func(unsafe.Pointer, unsafe.Pointer, unsafe.Pointer)
+	/// Notification of admin message being received from target
+	fromAdmin func(unsafe.Pointer, unsafe.Pointer, unsafe.Pointer)
+	/// Notification of app message being received from target
+	fromApp func(unsafe.Pointer, unsafe.Pointer, unsafe.Pointer)
+}
+
+type AppBase struct {
+}
+
+/// Notification of a session begin created
+func (app *AppBase) onCreate(tc *AppTradeClient, sid *SessionID) {
+	log.Println("onCreate go")
+}
+
+/// Notification of a session successfully logging on
+func (app *AppBase) onLogon(tc *AppTradeClient, sid *SessionID) {
+	log.Println("onLogon go")
+}
+
+/// Notification of a session logging off or disconnecting
+func (app *AppBase) onLogout(tc *AppTradeClient, sid *SessionID) {
+	log.Println("onLogout go")
+}
+
+/// Notification of admin message being sent to target
+func (app *AppBase) toAdmin(tc *AppTradeClient, msg *Message, sid *SessionID) {
+	log.Println("toAdmin go", msg.ToStr())
+}
+
+/// Notification of app message being sent to target
+func (app *AppBase) toApp(tc *AppTradeClient, msg *Message, sid *SessionID) {
+	log.Println("toApp go", msg.ToStr())
+}
+
+/// Notification of admin message being received from target
+func (app *AppBase) fromAdmin(tc *AppTradeClient, msg *Message, sid *SessionID) {
+	log.Println("fromAdmin go", msg.ToStr())
+}
+
+/// Notification of app message being received from target
+func (app *AppBase) fromApp(tc *AppTradeClient, msg *Message, sid *SessionID) {
+	log.Println("fromApp go", msg.ToStr())
+}
+
+type Message struct {
+	obj *C.struct_Message
+}
+
+type SessionID struct {
+	obj *C.struct_SessionID
+}
+
+type Dictionary struct {
+	obj *C.struct_Dictionary
+}
+
+type Application struct {
+	obj *C.IApplication
+}
+
+const MAX_BID_ASK_COUNT = 25
+
+type TickFull struct {
+	AskPrice    [MAX_BID_ASK_COUNT]float64
+	BidPrice    [MAX_BID_ASK_COUNT]float64
+	AskVolume   [MAX_BID_ASK_COUNT]float64
+	BidVolume   [MAX_BID_ASK_COUNT]float64
+	Symbol      [8]byte
+	Time        int32
+	Millisecond int32
+	AskCount    int32
+	BidCount    int32
+}
+
+type StockInfo struct {
+	Symbol           [15]byte
+	Position         int32
+	SecurityExchange [10]byte
+}
+
+type orderInfo struct {
+	OrderID          [32]byte //Unique identifier for Order as assigned by exchange
+	SecondaryExecID  [32]byte
+	ClOrdID          [32]byte //Client side order identifier
+	OrigClOrdID      [32]byte
+	OrdStatusReqID   [32]byte
+	ExecID           [32]byte //Execution ID for this fill.
+	Account          [16]byte //Account ID of the current logged in LMAX member
+	SecurityID       [8]byte
+	AvgPx            float64 //Calculated average price of all fills on this order.
+	CumQty           float64 //Contains the cumulated traded quantity for the order through its life.
+	LastPx           float64 //Price of this fill
+	LastQty          float64 //
+	OrderQty         float64 //Number of contracts submitted by the client
+	LeavesQty        float64 //成交手数
+	Price            float64 //Price per contract
+	Text             unsafe.Pointer
+	OrdRejReason     int
+	TransactTime     int //Time of execution/order creation
+	Millisecond      int
+	SecurityIDSource [2]byte
+	TimeInForce      byte
+	OrdType          byte
+	OrdStatus        byte
+	Side             byte //1=BUY ,2=SELL
+	ExecType         byte
+}
+
+func NewSessionSettings(file string) (*SessionSettings, error) {
+	cstr := C.CString(file)
+	defer C.free(unsafe.Pointer(cstr))
+	c := C.NewSessionSettings(cstr)
+	if c == nil {
+		return nil, fmt.Errorf("create new NewSessionSettings object error.")
+	}
+	return &SessionSettings{obj: c}, nil
+}
+
+func (c *SessionSettings) Free() {
+	if c.obj != nil {
+		C.FreeSessionSettings(c.obj)
+		c.obj = nil
+	}
+}
+
+func (ss *SessionSettings) Get(sid *SessionID) *Dictionary {
+	dict := &Dictionary{}
+	dict.obj = C.SessionSettingsGet(ss.obj, sid.obj)
+	return dict
+}
+
+func (dict *Dictionary) Has(find string) bool {
+	cstr := C.CString(find)
+	defer C.free(unsafe.Pointer(cstr))
+	ret := C.DictionaryHas(dict.obj, cstr)
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+
+func (dict *Dictionary) GetString(find string) string {
+	cstr := C.CString(find)
+	defer C.free(unsafe.Pointer(cstr))
+	ret := C.DictionaryGetString(dict.obj, cstr)
+	return C.GoString(ret)
+}
+
+func (dict *Dictionary) Free() {
+	if dict.obj != nil {
+		C.FreeDictionary(dict.obj)
+		dict.obj = nil
+	}
+}
+
+func WarpSessionID(sid unsafe.Pointer) *SessionID {
+	sessionId := &SessionID{}
+	sessionId.obj = C.WarpSessionID(sid)
+	return sessionId
+}
+
+func WarpMessage(msg unsafe.Pointer) *Message {
+	message := &Message{}
+	message.obj = C.WarpMessage(msg)
+	return message
+}
+
+func (msg *Message) SetField(field int, value string) {
+	cstr := C.CString(value)
+	defer C.free(unsafe.Pointer(cstr))
+	C.MessageSetField(msg.obj, C.int(field), cstr)
+}
+
+func (msg *Message) Send() int {
+	return int(C.MessageSend(msg.obj))
+}
+
+func (msg *Message) ToStr() string {
+	cstr := C.MessageToStr(msg.obj)
+	if cstr == nil {
+		return ""
+	}
+	defer C.Free(unsafe.Pointer(cstr))
+	return C.GoString(cstr)
+}
+
+func NewAppTradeClient(app IApplication, setting *SessionSettings) (*AppTradeClient, error) {
+	tradeclient := &AppTradeClient{}
+	tradeclient.app = app
+	tradeclient.onCreate = func(trade unsafe.Pointer, sid unsafe.Pointer) {
+		tradeclient.app.onCreate(tradeclient, WarpSessionID(sid))
+	}
+	tradeclient.onLogon = func(trade unsafe.Pointer, sid unsafe.Pointer) {
+		tradeclient.app.onLogon(tradeclient, WarpSessionID(sid))
+	}
+	tradeclient.onLogout = func(trade unsafe.Pointer, sid unsafe.Pointer) {
+		tradeclient.app.onLogout(tradeclient, WarpSessionID(sid))
+	}
+	tradeclient.toAdmin = func(trade unsafe.Pointer, msg unsafe.Pointer, sid unsafe.Pointer) {
+		tradeclient.app.toAdmin(tradeclient, WarpMessage(msg), WarpSessionID(sid))
+	}
+	tradeclient.fromAdmin = func(trade unsafe.Pointer, msg unsafe.Pointer, sid unsafe.Pointer) {
+		tradeclient.app.fromAdmin(tradeclient, WarpMessage(msg), WarpSessionID(sid))
+	}
+	tradeclient.toApp = func(trade unsafe.Pointer, msg unsafe.Pointer, sid unsafe.Pointer) {
+		tradeclient.app.toApp(tradeclient, WarpMessage(msg), WarpSessionID(sid))
+	}
+	tradeclient.fromApp = func(trade unsafe.Pointer, msg unsafe.Pointer, sid unsafe.Pointer) {
+		tradeclient.app.fromApp(tradeclient, WarpMessage(msg), WarpSessionID(sid))
+	}
+	iapp := NewApplication(tradeclient)
+	tradeclient.iapp = iapp
+	tradeclient.setting = setting
+	t := time.Now()
+	tradeclient.obj = C.NewAppTradeClient(iapp.obj, setting.obj)
+	log.Print(time.Now().Sub(t))
+	if tradeclient.obj == nil {
+		return nil, fmt.Errorf("NewAppTradeClient error.")
+	}
+	return tradeclient, nil
+}
+
+func NewApplication(tc *AppTradeClient) *Application {
+	app := &Application{}
+	app.obj = C.NewCBIApplication(C.get_callback(), unsafe.Pointer(&tc.onCreate), unsafe.Pointer(&tc.onLogon),
+		unsafe.Pointer(&tc.onLogout), unsafe.Pointer(&tc.toAdmin),
+		unsafe.Pointer(&tc.toApp), unsafe.Pointer(&tc.fromAdmin), unsafe.Pointer(&tc.fromApp))
+	return app
+}
+
+func (app *Application) Free() {
+	if app.obj != nil {
+		C.FreeIApplication(app.obj)
+		app.obj = nil
+	}
+}
+
+func (tradeclient *AppTradeClient) Free() {
+	tradeclient.setting.Free()
+	tradeclient.iapp.Free()
+	if tradeclient.obj != nil {
+		C.FreeAppTradeClient(tradeclient.obj)
+		tradeclient.obj = nil
+	}
+}
+
+func (tradeclient *AppTradeClient) Start() {
+	C.AppTradeClientStart(tradeclient.obj)
+}
+
+func (tradeclient *AppTradeClient) Stop() {
+	C.AppTradeClientStop(tradeclient.obj)
+}
+
+func (tradeclient *AppTradeClient) Run() int {
+	ret := C.AppTradeClientRun(tradeclient.obj)
+	return int(ret)
+}
+
+func (tradeclient *AppTradeClient) SessionID() *SessionID {
+	sid := C.AppTradeClientSessionID(tradeclient.obj)
+	return WarpSessionID(unsafe.Pointer(sid))
+}
+
+func (tradeclient *AppTradeClient) SenderCompID() string {
+	cstr := C.AppTradeClientSenderCompID(tradeclient.obj)
+	return C.GoString(cstr)
+}
+
+func (tradeclient *AppTradeClient) TargetCompID() string {
+	cstr := C.AppTradeClientTargetCompID(tradeclient.obj)
+	return C.GoString(cstr)
+}
+
+func (tradeclient *AppTradeClient) ClOrdID() string {
+	cstr := C.AppTradeClientClOrdID(tradeclient.obj)
+	return C.GoString(cstr)
+}
+
+func GetMarketData(msg *Message) (*TickFull, bool) {
+	tick := &TickFull{}
+	ret := C.GetMarketData(msg.obj, (*C.TickFull)(unsafe.Pointer(tick)))
+	if int(ret) == 1 {
+		return tick, true
+	}
+	return tick, false
+}
+
+func (tradeclient *AppTradeClient) OrigClOrdID(msg *Message) string {
+	cstr := C.AppTradeClientOrigClOrdID(tradeclient.obj, msg.obj)
+	return C.GoString(cstr)
+}
+
+func (tradeclient *AppTradeClient) SendOrder(bookId string, clordId string, handInst byte, side byte, orderType byte,
+	qty float64, price float64, account string, securitytype string, securityexchange string, currency string) bool {
+	cbookId := C.CString(bookId)
+	defer C.free(unsafe.Pointer(cbookId))
+
+	cclordId := C.CString(clordId)
+	defer C.free(unsafe.Pointer(cclordId))
+
+	caccount := C.CString(account)
+	defer C.free(unsafe.Pointer(caccount))
+
+	csecuritytype := C.CString(securitytype)
+	defer C.free(unsafe.Pointer(csecuritytype))
+
+	csecurityexchange := C.CString(securityexchange)
+	defer C.free(unsafe.Pointer(csecurityexchange))
+
+	ccurrency := C.CString(currency)
+	defer C.free(unsafe.Pointer(ccurrency))
+
+	ret := C.AppTradeClientSendOrder(tradeclient.obj, cbookId, cclordId, C.char(side), C.char(orderType), C.double(qty),
+		C.double(price), caccount)
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+
+func (tradeclient *AppTradeClient) CancleOrder(bookId string, origClordid string, clordId string, side byte, qty float64, account string, securitytype string, orderid string) bool {
+	cbookId := C.CString(bookId)
+	defer C.free(unsafe.Pointer(cbookId))
+
+	cclordId := C.CString(clordId)
+	defer C.free(unsafe.Pointer(cclordId))
+
+	corigClordid := C.CString(origClordid)
+	defer C.free(unsafe.Pointer(corigClordid))
+
+	caccount := C.CString(account)
+	defer C.free(unsafe.Pointer(caccount))
+
+	csecuritytype := C.CString(securitytype)
+	defer C.free(unsafe.Pointer(csecuritytype))
+
+	corderid := C.CString(orderid)
+	defer C.free(unsafe.Pointer(corderid))
+
+	ret := C.AppTradeClientCancelOrder(tradeclient.obj, cbookId, corigClordid, cclordId, C.char(side), caccount, corderid)
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+
+/*
+func (tradeclient *AppTradeClient) StatusOrder(bookId string, clordId string, side byte, account string, securitytype string, orderid string) bool {
+	cbookId := C.CString(bookId)
+	defer C.free(unsafe.Pointer(cbookId))
+
+	cclordId := C.CString(clordId)
+	defer C.free(unsafe.Pointer(cclordId))
+
+	caccount := C.CString(account)
+	defer C.free(unsafe.Pointer(caccount))
+
+	csecuritytype := C.CString(securitytype)
+	defer C.free(unsafe.Pointer(csecuritytype))
+
+	corderid := C.CString(orderid)
+	defer C.free(unsafe.Pointer(corderid))
+
+	ret := C.AppTradeClientOrderStatus(tradeclient.obj, cbookId, cclordId, C.char(side), caccount, csecuritytype, corderid)
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+*/
+func (tradeclient *AppTradeClient) CollectiveOrder(clordId string, handlInst byte, ordertype byte, sidestr string, symbolstr string, orderQtyStr string,
+	priceStr string, securityExchangeStr string, currentStr string, account string, securityTypeStr string, accountStr string, entrustNum int) bool {
+
+	cclordId := C.CString(clordId)
+	defer C.free(unsafe.Pointer(cclordId))
+
+	csidestr := C.CString(sidestr)
+	defer C.free(unsafe.Pointer(csidestr))
+
+	csymbolstr := C.CString(symbolstr)
+	defer C.free(unsafe.Pointer(csymbolstr))
+
+	corderQtyStr := C.CString(orderQtyStr)
+	defer C.free(unsafe.Pointer(corderQtyStr))
+
+	cpriceStr := C.CString(priceStr)
+	defer C.free(unsafe.Pointer(cpriceStr))
+
+	csecurityExchangeStr := C.CString(securityExchangeStr)
+	defer C.free(unsafe.Pointer(csecurityExchangeStr))
+
+	ccurrentStr := C.CString(currentStr)
+	defer C.free(unsafe.Pointer(ccurrentStr))
+
+	caccount := C.CString(account)
+	defer C.free(unsafe.Pointer(caccount))
+
+	csecurityTypeStr := C.CString(securityTypeStr)
+	defer C.free(unsafe.Pointer(csecurityTypeStr))
+
+	caccountStr := C.CString(accountStr)
+	defer C.free(unsafe.Pointer(caccountStr))
+
+	ret := C.AppTradeClientCollectiveOrder(tradeclient.obj, cclordId, C.char(handlInst), C.char(ordertype), csidestr, csymbolstr, corderQtyStr, cpriceStr, csecurityExchangeStr,
+		ccurrentStr, caccount, csecurityTypeStr, caccountStr, C.int(entrustNum))
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+
+func (tradeclient *AppTradeClient) CollectiveOrderCancel(clordId string, entrustNum int, entrustNoStr string, securityExchangeStr string,
+	currencyStr string, account string) bool {
+
+	cclordId := C.CString(clordId)
+	defer C.free(unsafe.Pointer(cclordId))
+
+	centrustNoStr := C.CString(entrustNoStr)
+	defer C.free(unsafe.Pointer(centrustNoStr))
+
+	csecurityExchangeStr := C.CString(securityExchangeStr)
+	defer C.free(unsafe.Pointer(csecurityExchangeStr))
+
+	ccurrencyStr := C.CString(currencyStr)
+	defer C.free(unsafe.Pointer(ccurrencyStr))
+
+	caccount := C.CString(account)
+	defer C.free(unsafe.Pointer(caccount))
+
+	ret := C.AppTradeClientCollectiveOrderCancel(tradeclient.obj, cclordId, C.int(entrustNum), centrustNoStr, csecurityExchangeStr, ccurrencyStr, caccount)
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+
+func (tradeclient *AppTradeClient) CollectiveOrderStatus(entrustNum int, entrustNoStr string, account string) bool {
+
+	centrustNoStr := C.CString(entrustNoStr)
+	defer C.free(unsafe.Pointer(centrustNoStr))
+
+	caccount := C.CString(account)
+	defer C.free(unsafe.Pointer(caccount))
+
+	ret := C.AppTradeClientCollectiveOrderStatus(tradeclient.obj, C.int(entrustNum), centrustNoStr, caccount)
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+
+func (tradeclient *AppTradeClient) BatchOrder(clordId string, handlInst byte, ordertype byte, symbolstr []string, sidestr []string, orderQtyStr []string,
+	priceStr []string, securityExchangeStr []string, currentStr []string, securityTypeStr []string, account string, num int) bool {
+
+	cclordId := C.CString(clordId)
+	defer C.free(unsafe.Pointer(cclordId))
+
+	psymbolstr := make([]*C.char, len(symbolstr))
+	for i := range symbolstr {
+		psymbolstr[i] = C.CString(symbolstr[i])
+		defer C.free(unsafe.Pointer(psymbolstr[i]))
+	}
+
+	psidestr := make([]*C.char, len(sidestr))
+	for i := range sidestr {
+		psidestr[i] = C.CString(sidestr[i])
+		defer C.free(unsafe.Pointer(psidestr[i]))
+	}
+
+	pcorderQtyStr := make([]*C.char, len(orderQtyStr))
+	for i := range orderQtyStr {
+		pcorderQtyStr[i] = C.CString(orderQtyStr[i])
+		defer C.free(unsafe.Pointer(pcorderQtyStr[i]))
+	}
+
+	ppriceStr := make([]*C.char, len(priceStr))
+	for i := range priceStr {
+		ppriceStr[i] = C.CString(priceStr[i])
+		defer C.free(unsafe.Pointer(ppriceStr[i]))
+	}
+
+	pcsecurityExchangeStr := make([]*C.char, len(securityExchangeStr))
+	for i := range securityExchangeStr {
+		pcsecurityExchangeStr[i] = C.CString(securityExchangeStr[i])
+		defer C.free(unsafe.Pointer(pcsecurityExchangeStr[i]))
+	}
+
+	pcurrentStr := make([]*C.char, len(currentStr))
+	for i := range currentStr {
+		pcurrentStr[i] = C.CString(currentStr[i])
+		defer C.free(unsafe.Pointer(pcurrentStr[i]))
+	}
+
+	psecurityTypeStr := make([]*C.char, len(securityTypeStr))
+	for i := range securityTypeStr {
+		psecurityTypeStr[i] = C.CString(securityTypeStr[i])
+		defer C.free(unsafe.Pointer(psecurityTypeStr[i]))
+	}
+
+	caccount := C.CString(account)
+	defer C.free(unsafe.Pointer(caccount))
+
+	ret := C.AppTradeClientBatchOrder(tradeclient.obj, cclordId, C.char(handlInst), C.char(ordertype), (**C.char)(unsafe.Pointer(&psymbolstr[0])), (**C.char)(unsafe.Pointer(&psidestr[0])), (**C.char)(unsafe.Pointer(&pcorderQtyStr[0])),
+		(**C.char)(unsafe.Pointer(&ppriceStr[0])), (**C.char)(unsafe.Pointer(&pcsecurityExchangeStr[0])), (**C.char)(unsafe.Pointer(&pcurrentStr[0])), (**C.char)(unsafe.Pointer(&psecurityTypeStr[0])), caccount, C.int(num))
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+
+func (tradeclient *AppTradeClient) RequestForPositions(posReqID string, posReqType int, account string, accountType int) bool {
+
+	cposReqID := C.CString(posReqID)
+	defer C.free(unsafe.Pointer(cposReqID))
+
+	caccount := C.CString(account)
+	defer C.free(unsafe.Pointer(caccount))
+
+	ret := C.AppTradeClientRequestForPositions(tradeclient.obj, cposReqID, C.int(posReqType), caccount, C.int(accountType))
+	if int(ret) == 1 {
+		return true
+	}
+
+	return false
+}
+
+func (tradeclient *AppTradeClient) TradeCaptureReportRequest(reqId string, reqType int, subType byte) bool {
+	creqId := C.CString(reqId)
+	defer C.free(unsafe.Pointer(creqId))
+	ret := C.AppTradeClientTradeCaptureReportRequest(tradeclient.obj, creqId, C.int(reqType), C.char(subType))
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+
+func (tradeclient *AppTradeClient) MarketData(bookId string, subscriptionRequestType byte) bool {
+	cbookId := C.CString(bookId)
+	defer C.free(unsafe.Pointer(cbookId))
+
+	//csecurityExchange := C.CString(securityExchange)
+	//defer C.free(unsafe.Pointer(csecurityExchange))
+
+	ret := C.AppTradeClientMarketData(tradeclient.obj, cbookId, C.char(subscriptionRequestType))
+	if int(ret) == 1 {
+		return true
+	}
+	return false
+}
+
+func GetMsgType(msg *Message) (string, bool) {
+	var TypeValue [32]byte
+
+	ret := C.GetMsgType(msg.obj, (*C.char)(unsafe.Pointer(&TypeValue[0])))
+	if int(ret) == 1 {
+
+		return cstring(TypeValue[:]), true
+	}
+
+	return "", false
+}
+
+func GetAccountStockInfo(msg *Message) (*StockInfo, int, bool) {
+	stockinfo := &StockInfo{}
+	nLastRptRequested := 0
+	ret := C.GetAccountStockInfo(msg.obj, (*C.StockInfo)(unsafe.Pointer(stockinfo)), (*C.int)(unsafe.Pointer(&nLastRptRequested)))
+	if int(ret) == 1 {
+		return stockinfo, nLastRptRequested, true
+	}
+	return nil, 0, false
+}
+
+func GetOrderStatus(msg *Message) (*OrderStatus, bool) {
+	info := &orderInfo{}
+	ret := C.GetOrderInfo(msg.obj, (*C.OrderInfo)(unsafe.Pointer(info)))
+
+	if int(ret) == 1 {
+		return formatOrderInfo(info), true
+	}
+	return nil, false
+}
+
+func formatOrderInfo(info *orderInfo) *OrderStatus {
+	status := &OrderStatus{}
+	status.OrderID = cstring(info.OrderID[:])
+	status.SecondaryExecID = cstring(info.SecondaryExecID[:])
+	status.ClOrdID = cstring(info.ClOrdID[:])
+	status.OrigClOrdID = cstring(info.OrigClOrdID[:])
+	status.OrdStatusReqID = cstring(info.OrdStatusReqID[:])
+	status.ExecID = cstring(info.ExecID[:])
+	status.Account = cstring(info.Account[:])
+	status.SecurityID = cstring(info.SecurityID[:])
+	status.SecurityIDSource = cstring(info.SecurityIDSource[:])
+	status.Text = C.GoString((*C.char)(info.Text))
+	C.Free(info.Text)
+	//复制其他的字段
+	status.ExecType = info.ExecType
+	status.OrdStatus = info.OrdStatus
+	status.OrdRejReason = info.OrdRejReason
+	status.Side = info.Side
+	status.OrdType = info.OrdType
+	status.Price = info.Price
+	//status.TimeInForce = info.TimeInForce
+	status.LastQty = info.LastQty
+	status.LastPx = info.LastPx
+	status.LeavesQty = info.LeavesQty
+	status.CumQty = info.CumQty
+	status.AvgPx = info.AvgPx
+	return status
+}
+
+func cstring(s []byte) string {
+	for i := range s {
+		if s[i] == 0 {
+			return string(s[0:i])
+		}
+	}
+	return string(s)
+}

+ 26 - 0
api/fix/fix_test.go

@@ -0,0 +1,26 @@
+package fix_test
+
+import "tickserver/api/fix"
+import "testing"
+import "fmt"
+
+func TestMarketData(t *testing.T) {
+    path := "./SessionCfgMk.cfg"
+    fmt.Println(path)
+    ss , err := fix.NewSessionSettings(path)
+    if err != nil {
+        panic(err)
+    }
+    app := &fix.AppBase{}
+    trade, err := fix.NewAppTradeClient(app, ss)
+    if err != nil {
+        panic(err)
+    }
+    trade.Start()
+    fmt.Println("run start")
+    trade.Run()
+    fmt.Println("run end")
+    trade.Stop()
+    trade.Free()
+    fmt.Println("stop")
+}

+ 4520 - 0
api/fix/include/FixValue.h

@@ -0,0 +1,4520 @@
+#ifndef __FIX_VALUES_H__
+#define __FIX_VALUES_H__
+
+  const int DeliveryForm_BOOKENTRY = 1;
+  const int DeliveryForm_BEARER = 2;
+  const int DeliveryForm_BOOK_ENTRY = 1;
+  const int ExecRestatementReason_GTRENEW = 1;
+  const int ExecRestatementReason_WAREHOUSE_RECAP = 10;
+  const int ExecRestatementReason_CANCELEDNOTBEST = 9;
+  const int ExecRestatementReason_CANCEL_ON_SYSTEM_FAILURE = 7;
+  const int ExecRestatementReason_CXLTRADINGHALT = 6;
+  const int ExecRestatementReason_PARTIAL_DECLINE_OF_ORDERQTY = 5;
+  const int ExecRestatementReason_GT_CORPORATE_ACTION = 0;
+  const int ExecRestatementReason_PEG_REFRESH = 11;
+  const int ExecRestatementReason_VERBAL = 2;
+  const int ExecRestatementReason_CANCELED_NOT_BEST = 9;
+  const int ExecRestatementReason_CANCEL_ON_TRADING_HALT = 6;
+  const int ExecRestatementReason_REPX = 3;
+  const int ExecRestatementReason_MRKTOPTION = 8;
+  const int ExecRestatementReason_VERBAL_CHANGE = 2;
+  const int ExecRestatementReason_PARTDEC = 5;
+  const int ExecRestatementReason_CXLSYSTEMFAILURE = 7;
+  const int ExecRestatementReason_GTCORPACT = 0;
+  const int ExecRestatementReason_OTHER = 99;
+  const int ExecRestatementReason_BROKER_OPTION = 4;
+  const int ExecRestatementReason_WAREHOUSERECAP = 10;
+  const int ExecRestatementReason_BRKROPT = 4;
+  const int ExecRestatementReason_REPRICING_OF_ORDER = 3;
+  const int ExecRestatementReason_MARKET = 8;
+  const int ExecRestatementReason_GT_RENEWAL = 1;
+  const int AllocIntermedReqType_PENDING_RELEASE = 2;
+  const int AllocIntermedReqType_PENDING_REVERSAL = 3;
+  const int AllocIntermedReqType_ACCOUNTLEVELREJECT = 6;
+  const int AllocIntermedReqType_PENDINGACCEPT = 1;
+  const int AllocIntermedReqType_BLOCK_LEVEL_REJECT = 5;
+  const int AllocIntermedReqType_ACCOUNT_LEVEL_REJECT = 6;
+  const int AllocIntermedReqType_BLOCKLEVELREJECT = 5;
+  const int AllocIntermedReqType_PENDING_ACCEPT = 1;
+  const int AllocIntermedReqType_PENDINGREVERSAL = 3;
+  const int AllocIntermedReqType_PENDINGRELEASE = 2;
+  const int AllocIntermedReqType_ACCEPT = 4;
+  const int SecurityListTypeSource_GICS = 3;
+  const int SecurityListTypeSource_NAICS = 2;
+  const int SecurityListTypeSource_ICB = 1;
+  const int CollInquiryQualifier_PARTIALLY_ASSIGNED = 5;
+  const int CollInquiryQualifier_OUTSTANDING_TRADES = 7;
+  const int CollInquiryQualifier_SUBSTITUTIONELIGIBLE = 3;
+  const int CollInquiryQualifier_TRADE_DATE = 0;
+  const int CollInquiryQualifier_FULLYASSIGNED = 6;
+  const int CollInquiryQualifier_SUBSTITUTION_ELIGIBLE = 3;
+  const int CollInquiryQualifier_FULLY_ASSIGNED = 6;
+  const int CollInquiryQualifier_NOTASSIGNED = 4;
+  const int CollInquiryQualifier_GCINSTRUMENT = 1;
+  const int CollInquiryQualifier_NOT_ASSIGNED = 4;
+  const int CollInquiryQualifier_COLLATERAL_INSTRUMENT = 2;
+  const int CollInquiryQualifier_OUTSTANDINGTRADES = 7;
+  const int CollInquiryQualifier_TRADEDATE = 0;
+  const int CollInquiryQualifier_GC_INSTRUMENT = 1;
+  const int CollInquiryQualifier_PARTIALLYASSIGNED = 5;
+  const int CollInquiryQualifier_COLLATERALINSTRUMENT = 2;
+  const int ContingencyType_ONE_UPDATES_THE_OTHER_4 = 4;
+  const int ContingencyType_ONE_TRIGGERS_THE_OTHER = 2;
+  const int ContingencyType_ONE_CANCELS_THE_OTHER = 1;
+  const int ContingencyType_ONE_UPDATES_THE_OTHER_3 = 3;
+  const char EmailType_NEW = '0';
+  const char EmailType_REPLY = '1';
+  const char EmailType_ADMIN_REPLY = '2';
+  const char EmailType_ADMINREPLY = '2';
+  const char IOIQltyInd_MEDIUM = 'M';
+  const char IOIQltyInd_HIGH = 'H';
+  const char IOIQltyInd_LOW = 'L';
+  const int MultiLegRptTypeReq_REPORT_BY_INSTRUMENT_LEGS_BELONGING_TO_THE_MULTILEG_SECURITY_ONLY = 2;
+  const int MultiLegRptTypeReq_REPORT_BY_MULTILEG_SECURITY_AND_BY_INSTRUMENT_LEGS_BELONGING_TO_THE_MULTILEG_SECURITY = 1;
+  const int MultiLegRptTypeReq_REPORT_BY_MULITLEG_SECURITY_ONLY = 0;
+  const int AccountType_ACCOUNTCUSTOMER = 1;
+  const int AccountType_HOUSE_TRADER = 3;
+  const int AccountType_ACCOUNT_IS_CARRIED_ON_CUSTOMER_SIDE_OF_THE_BOOKS = 1;
+  const int AccountType_ACCOUNT_IS_CARRIED_ON_NON_CUSTOMER_SIDE_OF_BOOKS = 2;
+  const int AccountType_FLOOR_TRADER = 4;
+  const int AccountType_JOINT_BACK_OFFICE_ACCOUNT = 8;
+  const int AccountType_HOUSETRADER = 3;
+  const int AccountType_FLOORTRADER = 4;
+  const int AccountType_ACCOUNTNONCUSTOMERCROSS = 6;
+  const int AccountType_ACCOUNT_IS_CARRIED_ON_NON_CUSTOMER_SIDE_OF_BOOKS_AND_IS_CROSS_MARGINED = 6;
+  const int AccountType_ACCOUNTNONCUSTOMER = 2;
+  const int AccountType_ACCOUNT_IS_CARRIED_ON_CUSTOMER_SIDE_OF_BOOKS = 1;
+  const int AccountType_HOUSETRADERCROSS = 7;
+  const int AccountType_JOINTBOACCT = 8;
+  const int AccountType_JOINT_BACKOFFICE_ACCOUNT = 8;
+  const int AccountType_ACCOUNT_IS_HOUSE_TRADER_AND_IS_CROSS_MARGINED = 7;
+  const int HaltReasonInt_ADDITIONAL_INFORMATION = 3;
+  const int HaltReasonInt_NEWS_PENDING = 4;
+  const int HaltReasonInt_ORDER_INFLUX = 1;
+  const int HaltReasonInt_NEWS_DISSEMINATION = 0;
+  const int HaltReasonInt_EQUIPMENT_CHANGEOVER = 5;
+  const int HaltReasonInt_ORDER_IMBALANCE = 2;
+  const char ClearingFeeIndicator_3RDYEARDELEGATE[] = "3";
+  const char ClearingFeeIndicator_FULLASSOCIATEMEMBER[] = "F";
+  const char ClearingFeeIndicator_106H_AND_106J_FIRMS[] = "H";
+  const char ClearingFeeIndicator_4THYEARDELEGATE[] = "4";
+  const char ClearingFeeIndicator_5THYEARDELEGATE[] = "5";
+  const char ClearingFeeIndicator_EQUITYCLEARINGMEMBER[] = "E";
+  const char ClearingFeeIndicator_GIMIDEMCOMMEMBERSHIP[] = "I";
+  const char ClearingFeeIndicator_2NDYEARDELEGATE[] = "2";
+  const char ClearingFeeIndicator_1ST_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "1";
+  const char ClearingFeeIndicator_1STYEARDELEGATE[] = "1";
+  const char ClearingFeeIndicator_106H106J[] = "H";
+  const char ClearingFeeIndicator_GIM_IDEM_AND_COM_MEMBERSHIP_INTEREST_HOLDERS[] = "I";
+  const char ClearingFeeIndicator_2ND_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "2";
+  const char ClearingFeeIndicator_4TH_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "4";
+  const char ClearingFeeIndicator_3RD_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "3";
+  const char ClearingFeeIndicator_LESSEE_106F_EMPLOYEES[] = "L";
+  const char ClearingFeeIndicator_6THYEARDELEGATE[] = "9";
+  const char ClearingFeeIndicator_NON_MEMBER_AND_CUSTOMER[] = "C";
+  const char ClearingFeeIndicator_5TH_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "5";
+  const char ClearingFeeIndicator_FULL_AND_ASSOCIATE_MEMBER_TRADING_FOR_OWN_ACCOUNT_AND_AS_FLOOR_BROKERS[] = "F";
+  const char ClearingFeeIndicator_CBOE_MEMBER[] = "B";
+  const char ClearingFeeIndicator_1ST_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "1";
+  const char ClearingFeeIndicator_5TH_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "5";
+  const char ClearingFeeIndicator_NONMEMBERCUSTOMER[] = "C";
+  const char ClearingFeeIndicator_LESSEE_AND_106F_EMPLOYEES[] = "L";
+  const char ClearingFeeIndicator_FULL_AND_ASSOCIATE_MEMBER_TRADING_FOR_OWN_ACCOUNT_AND_AS_FLOOR[] = "F";
+  const char ClearingFeeIndicator_3RD_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "3";
+  const char ClearingFeeIndicator_2ND_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "2";
+  const char ClearingFeeIndicator_CBOEMEMBER[] = "B";
+  const char ClearingFeeIndicator_LESSEE106F[] = "L";
+  const char ClearingFeeIndicator_ALLOTHERS[] = "M";
+  const char ClearingFeeIndicator_EQUITY_MEMBER_AND_CLEARING_MEMBER[] = "E";
+  const char ClearingFeeIndicator_ALL_OTHER_OWNERSHIP_TYPES[] = "M";
+  const char ClearingFeeIndicator_6TH_YEAR_AND_BEYOND_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "9";
+  const char ClearingFeeIndicator_4TH_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "4";
+  const char ClearingFeeIndicator_6TH_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "9";
+  const int BidType_DISCLOSED_STYLE = 2;
+  const int BidType_NONDISC = 1;
+  const int BidType_NO_BIDDING_PROCESS = 3;
+  const int BidType_DISC = 2;
+  const int BidType_DISCLOSED_SYTLE = 2;
+  const int BidType_NOBID = 3;
+  const int BidType_NON_DISCLOSED_STYLE = 1;
+  const int QuotePriceType_PER_SHARE = 2;
+  const int QuotePriceType_BASISPOINTSRELATIVETOBENCHMARK = 6;
+  const int QuotePriceType_TEDPRICE = 7;
+  const int QuotePriceType_PERSHARE = 2;
+  const int QuotePriceType_YIELD = 10;
+  const int QuotePriceType_FIXED_AMOUNT = 3;
+  const int QuotePriceType_TED_YIELD = 8;
+  const int QuotePriceType_PREMIUM = 5;
+  const int QuotePriceType_FIXEDAMOUNT = 3;
+  const int QuotePriceType_YIELDSPREADSWAPS = 9;
+  const int QuotePriceType_TEDYIELD = 8;
+  const int QuotePriceType_DISCOUNT = 4;
+  const int QuotePriceType_YIELD_SPREAD = 9;
+  const int QuotePriceType_TED_PRICE = 7;
+  const int QuotePriceType_PERCENT = 1;
+  const int QuotePriceType_SPREAD = 6;
+  const int MultilegPriceMethod_CONTRACT_WEIGHTED_AVERAGE_PRICE = 4;
+  const int MultilegPriceMethod_REVERSED_NET_PRICE = 1;
+  const int MultilegPriceMethod_MULTIPLIED_PRICE = 5;
+  const int MultilegPriceMethod_INDIVIDUAL = 3;
+  const int MultilegPriceMethod_YIELD_DIFFERENCE = 2;
+  const int MultilegPriceMethod_NET_PRICE = 0;
+  const int ListMethod_PRE_LISTED_ONLY = 0;
+  const int ListMethod_USER_REQUESTED = 1;
+  const char MDImplicitDelete_NO = 'N';
+  const char MDImplicitDelete_YES = 'Y';
+  const int RoutingType_BLOCKLIST = 4;
+  const int RoutingType_TARGET_LIST = 2;
+  const int RoutingType_TARGET_FIRM = 1;
+  const int RoutingType_TARGETFIRM = 1;
+  const int RoutingType_TARGETLIST = 2;
+  const int RoutingType_BLOCK_LIST = 4;
+  const int RoutingType_BLOCK_FIRM = 3;
+  const int RoutingType_BLOCKFIRM = 3;
+  const char BidTradeType_RISKTRADE = 'R';
+  const char BidTradeType_VWAPGUARANTEE = 'G';
+  const char BidTradeType_AGENCY = 'A';
+  const char BidTradeType_GUARANTEEDCLOSE = 'J';
+  const char BidTradeType_VWAP_GUARANTEE = 'G';
+  const char BidTradeType_RISK_TRADE = 'R';
+  const char BidTradeType_GUARANTEED_CLOSE = 'J';
+  const int OrdRejReason_INCORRECT_ALLOCATED_QUANTITY = 14;
+  const int OrdRejReason_DUPLICATE_OF_A_VERBALLY_COMMUNICATED_ORDER = 7;
+  const int OrdRejReason_DUPLICATEVERBAL = 7;
+  const int OrdRejReason_ORDER_EXCEEDS_LIMIT = 3;
+  const int OrdRejReason_EXCHANGE_CLOSED = 2;
+  const int OrdRejReason_DUPLICATE = 6;
+  const int OrdRejReason_SURVEILLENCE_OPTION = 12;
+  const int OrdRejReason_UNKNOWN_ORDER = 5;
+  const int OrdRejReason_INCORRECTALLOCATEDQUANTITY = 14;
+  const int OrdRejReason_TOOLATE = 4;
+  const int OrdRejReason_UNSUPPORTED_ORDER_CHARACTERISTIC = 11;
+  const int OrdRejReason_DUPLICATE_ORDER = 6;
+  const int OrdRejReason_TOO_LATE_TO_ENTER = 4;
+  const int OrdRejReason_INCORRECT_QUANTITY = 13;
+  const int OrdRejReason_UNKNOWNSYM = 1;
+  const int OrdRejReason_STALE = 8;
+  const int OrdRejReason_UNKNOWN_ACCOUNT = 15;
+  const int OrdRejReason_INVALID_PRICE_INCREMENT = 18;
+  const int OrdRejReason_BROKEROPT = 0;
+  const int OrdRejReason_EXCEEDSLIM = 3;
+  const int OrdRejReason_INVALID_INVESTOR_ID = 10;
+  const int OrdRejReason_UNKNOWN_SYMBOL = 1;
+  const int OrdRejReason_INCORRECTQUANTITY = 13;
+  const int OrdRejReason_UNKNOWNACCOUNTS = 15;
+  const int OrdRejReason_OTHER = 99;
+  const int OrdRejReason_BROKER = 0;
+  const int OrdRejReason_BROKER_OPTION = 0;
+  const int OrdRejReason_SURVEILLENCE = 12;
+  const int OrdRejReason_EXCHCLOSED = 2;
+  const int OrdRejReason_PRICE_EXCEEDS_CURRENT_PRICE_BAND = 16;
+  const int OrdRejReason_INVINVID = 10;
+  const int OrdRejReason_UNSUPPORDERCHAR = 11;
+  const int OrdRejReason_TRADEALONGREQ = 9;
+  const int OrdRejReason_UNKNOWN = 5;
+  const int OrdRejReason_TRADE_ALONG_REQUIRED = 9;
+  const int OrdRejReason_STALE_ORDER = 8;
+  const int MaturityMonthYearIncrementUnits_WEEKS = 2;
+  const int MaturityMonthYearIncrementUnits_MONTHS = 0;
+  const int MaturityMonthYearIncrementUnits_YEARS = 3;
+  const int MaturityMonthYearIncrementUnits_DAYS = 1;
+  const char DisplayWhen_EXHAUST = '2';
+  const char DisplayWhen_IMMEDIATE = '1';
+  const int ApplQueueAction_END_SESSION = 3;
+  const int ApplQueueAction_QUEUEFLUSHED = 1;
+  const int ApplQueueAction_QUEUE_FLUSHED = 1;
+  const int ApplQueueAction_ENDSESSION = 3;
+  const int ApplQueueAction_OVERLAYLAST = 2;
+  const int ApplQueueAction_OVERLAY_LAST = 2;
+  const int ApplQueueAction_NOACTIONTAKEN = 0;
+  const int ApplQueueAction_NO_ACTION_TAKEN = 0;
+  const char RegistTransType_REPLACE = '1';
+  const char RegistTransType_NEW = '0';
+  const char RegistTransType_CANCEL = '2';
+  const int PriceType_PRODUCT_TICKS_IN_HALFS = 13;
+  const int PriceType_FIXEDCABINETTRADEPRICE = 10;
+  const int PriceType_PER_SHARE = 2;
+  const int PriceType_PCT = 1;
+  const int PriceType_VARIABLECABINETTRADEPRICE = 11;
+  const int PriceType_PRODUCT_TICKS_IN_FOURTHS = 14;
+  const int PriceType_TEDPRICE = 7;
+  const int PriceType_YIELD = 9;
+  const int PriceType_TED_YIELD = 8;
+  const int PriceType_PREMIUM = 5;
+  const int PriceType_FIXED_AMOUNT = 3;
+  const int PriceType_TEDYIELD = 8;
+  const int PriceType_DISCOUNT = 4;
+  const int PriceType_PRODUCT_TICKS_IN_SIXTY_FORTHS = 18;
+  const int PriceType_PRODUCT_TICKS_IN_ONE_TWENTY_EIGHTS = 19;
+  const int PriceType_CPS = 2;
+  const int PriceType_PERCENTAGE = 1;
+  const int PriceType_PRODUCT_TICKS_IN_EIGHTS = 15;
+  const int PriceType_PRODUCT_TICKS_IN_THIRTY_SECONDS = 17;
+  const int PriceType_ABS = 3;
+  const int PriceType_VARIABLE_CABINET_TRADE_PRICE = 11;
+  const int PriceType_PER_UNIT = 2;
+  const int PriceType_PRODUCT_TICKS_IN_SIXTEENTHS = 16;
+  const int PriceType_TED_PRICE = 7;
+  const int PriceType_FIXED_CABINET_TRADE_PRICE = 10;
+  const int PriceType_SPREAD = 6;
+  const int PriceType_BASIS_POINTS_RELATIVE_TO_BENCHMARK = 6;
+  const int SettlObligMode_PRELIMINARY = 1;
+  const int SettlObligMode_FINAL = 2;
+  const char SecurityUpdateAction_DELETE = 'D';
+  const char SecurityUpdateAction_ADD = 'A';
+  const char SecurityUpdateAction_MODIFY = 'M';
+  const int NetworkRequestType_STOP_SUBSCRIBING = 4;
+  const int NetworkRequestType_LEVELOFDETAIL = 8;
+  const int NetworkRequestType_SUBSCRIBE = 2;
+  const int NetworkRequestType_SNAPSHOT = 1;
+  const int NetworkRequestType_STOPSUBSCRIBING = 4;
+  const int NetworkRequestType_LEVEL_OF_DETAIL_THEN_NOCOMPIDS_BECOMES_REQUIRED = 8;
+  const int PartyRole_TRADER_MNEMONIC = 53;
+  const int PartyRole_ACCEPTABLE_COUNTERPARTY = 56;
+  const int PartyRole_HOST_COMPETENT_AUTHORITY = 68;
+  const int PartyRole_CONTRATRADER = 37;
+  const int PartyRole_EXECUTINGFIRM = 1;
+  const int PartyRole_CUSTOMER_ACCOUNT = 24;
+  const int PartyRole_POSITIONACCOUNT = 38;
+  const int PartyRole_REPORT_ORIGINATOR = 62;
+  const int PartyRole_CONTRAFIRM = 17;
+  const int PartyRole_EXECUTION_VENUE = 73;
+  const int PartyRole_INTERMEDIARY = 29;
+  const int PartyRole_ORDER_ENTRY_OPERATOR_ID = 44;
+  const int PartyRole_INTRODUCING_BROKER = 60;
+  const int PartyRole_FOREIGN_FIRM = 46;
+  const int PartyRole_HOME_COMPETENT_AUTHORITY = 69;
+  const int PartyRole_EXECUTINGSYSTEM = 16;
+  const int PartyRole_SECONDARY_ACCOUNT_NUMBER = 45;
+  const int PartyRole_INVESTMENT_FIRM = 67;
+  const int PartyRole_CONTRA_CLEARING_FIRM = 18;
+  const int PartyRole_CONTRA_POSITION_ACCOUNT = 41;
+  const int PartyRole_SYSTEMATIC_INTERNALISER = 63;
+  const int PartyRole_EXCHANGE = 22;
+  const int PartyRole_INTERNAL_CARRY_ACCOUNT = 43;
+  const int PartyRole_LOCATE = 8;
+  const int PartyRole_CORRESPONDENTCLEARINGORGANIZATION = 25;
+  const int PartyRole_ORDER_ORIGINATION_TRADER = 11;
+  const int PartyRole_SUB_CUSTODIAN = 31;
+  const int PartyRole_ENTERING_UNIT = 58;
+  const int PartyRole_STEP_OUT_FIRM = 80;
+  const int PartyRole_COMPETENT_AUTHORITY_OF_THE_TRANSACTION = 71;
+  const int PartyRole_SENDER_LOCATION = 54;
+  const int PartyRole_REGULATED_MARKET = 65;
+  const int PartyRole_UNACCEPTABLE_SETTLING_COUNTERPARTY = 85;
+  const int PartyRole_SETTLEMENTLOCATION = 10;
+  const int PartyRole_COMPETENT_AUTHORITY_OF_THE_MOST_RELEVANT_MARKET_IN_TERMS_OF_LIQUIDITY = 70;
+  const int PartyRole_QUOTE_ORIGINATOR = 61;
+  const int PartyRole_CLEARING_ORGANIZATION = 21;
+  const int PartyRole_SESSION_ID = 55;
+  const int PartyRole_MARKET_MAKER = 66;
+  const int PartyRole_INTERESTED_PARTY = 33;
+  const int PartyRole_TRANSFER_TO_FIRM = 40;
+  const int PartyRole_CONTRA_TRADER = 37;
+  const int PartyRole_ENTERINGTRADER = 36;
+  const int PartyRole_ENTERING_TRADER = 36;
+  const int PartyRole_LARGE_TRADER_REPORTABLE_ACCOUNT = 52;
+  const int PartyRole_BENEFICIARY = 32;
+  const int PartyRole_CONTRA_INVESTOR_ID = 39;
+  const int PartyRole_FORIEGN_FIRM = 46;
+  const int PartyRole_SETTLEMENT_LOCATION = 10;
+  const int PartyRole_CLEARINGORGANIZATION = 21;
+  const int PartyRole_EXECUTING_SYSTEM = 16;
+  const int PartyRole_CLEARING_FIRM = 4;
+  const int PartyRole_PLEDGEE_ACCOUNT = 51;
+  const int PartyRole_CLIENT_ID = 3;
+  const int PartyRole_ENTERING_FIRM = 7;
+  const int PartyRole_ALLOCENTITY = 39;
+  const int PartyRole_INVESTOR_ID = 5;
+  const int PartyRole_CLEARINGFIRM = 4;
+  const int PartyRole_CORRESPONDANT_CLEARING_FIRM = 15;
+  const int PartyRole_SUBCUSTODIAN = 31;
+  const int PartyRole_BUYER_SELLER = 27;
+  const int PartyRole_CLEARING_ACCOUNT = 83;
+  const int PartyRole_ENTERINGFIRM = 7;
+  const int PartyRole_PRIME_BROKER_PROVIDING_GENERAL_TRADE_SERVICES = 79;
+  const int PartyRole_CORRESPONDENT_CLEARING_ORGANIZATION = 25;
+  const int PartyRole_ACCEPTABLE_SETTLING_COUNTERPARTY = 84;
+  const int PartyRole_CUSTOMERACCOUNT = 24;
+  const int PartyRole_MARKET_DATA_ENTRY_ORIGINATOR = 74;
+  const int PartyRole_INTRODUCINGFIRM = 6;
+  const int PartyRole_EXECUTING_UNIT = 59;
+  const int PartyRole_CENTRAL_REGISTRATION_DEPOSITORY = 82;
+  const int PartyRole_INTERESTEDPARTY = 33;
+  const int PartyRole_LOCATION_ID = 75;
+  const int PartyRole_ORDERORIGINATOR = 13;
+  const int PartyRole_CORRESPONDENT_BROKER = 26;
+  const int PartyRole_ASSET_MANAGER = 49;
+  const int PartyRole_MULTILATERAL_TRADING_FACILITY = 64;
+  const int PartyRole_SPONSORINGFIRM = 19;
+  const int PartyRole_ORDER_ORIGINATION_FIRM = 13;
+  const int PartyRole_CONTRA_EXCHANGE = 42;
+  const int PartyRole_INVESTORID = 5;
+  const int PartyRole_FUNDMANAGER = 9;
+  const int PartyRole_REGULATORYBODY = 34;
+  const int PartyRole_CONTRA_FIRM = 17;
+  const int PartyRole_BROKER_OF_CREDIT = 2;
+  const int PartyRole_LIQUIDITYPROVIDER = 35;
+  const int PartyRole_GIVEUPCLEARINGFIRM = 14;
+  const int PartyRole_CONTRACLEARINGFIRM = 18;
+  const int PartyRole_CLAIMING_ACCOUNT = 48;
+  const int PartyRole_INTRODUCING_FIRM = 6;
+  const int PartyRole_GIVEUP_CLEARING_FIRM = 14;
+  const int PartyRole_EXECUTINGTRADER = 12;
+  const int PartyRole_UNDERLYING_CONTRA_FIRM = 20;
+  const int PartyRole_EXECUTING_FIRM = 1;
+  const int PartyRole_AGENT = 30;
+  const int PartyRole_LIQUIDITY_PROVIDER = 35;
+  const int PartyRole_POSITION_ACCOUNT = 38;
+  const int PartyRole_BROKEROFCREDIT = 2;
+  const int PartyRole_THIRD_PARTY_ALLOCATION_FIRM = 47;
+  const int PartyRole_CLIENTID = 3;
+  const int PartyRole_PLEDGOR_ACCOUNT = 50;
+  const int PartyRole_REPORTING_INTERMEDIARY = 72;
+  const int PartyRole_EXECUTING_TRADER = 12;
+  const int PartyRole_CUSTODIAN = 28;
+  const int PartyRole_BROKERCLEARINGID = 81;
+  const int PartyRole_CORRESPONDENTBROKER = 26;
+  const int PartyRole_LOCATE_LENDING_FIRM = 8;
+  const int PartyRole_INITIATINGTRADER = 11;
+  const int PartyRole_REGULATORY_BODY = 34;
+  const int PartyRole_UNACCEPTABLE_COUNTERPARTY = 57;
+  const int PartyRole_CORRESPONDANTCLEARINGFIRM = 15;
+  const int PartyRole_FUND_MANAGER_CLIENT_ID = 9;
+  const int PartyRole_BUYERSELLERRECEIVERDELIVERER = 27;
+  const int PartyRole_DESK_ID = 76;
+  const int PartyRole_ALLOCATION_ENTITY = 78;
+  const int PartyRole_MARKET_DATA_MARKET = 77;
+  const int PartyRole_SPONSORING_FIRM = 19;
+  const int PartyRole_LOCATELENDINGFIRM = 8;
+  const int PartyRole_UNDRCONTRAFIRM = 20;
+  const char AssignmentMethod_PRO_RATA = 'P';
+  const char AssignmentMethod_RANDOM = 'R';
+  const char AssignmentMethod_PRORATA = 'P';
+  const int StrategyParameterType_MONTHYEAR = 18;
+  const int StrategyParameterType_TZTIMEONLY = 27;
+  const int StrategyParameterType_PRICE = 8;
+  const int StrategyParameterType_QTY = 7;
+  const int StrategyParameterType_BOOLEAN = 13;
+  const int StrategyParameterType_MULTIPLECHARVALUE = 15;
+  const int StrategyParameterType_CHAR = 12;
+  const int StrategyParameterType_NUMINGROUP = 3;
+  const int StrategyParameterType_TAGNUM = 5;
+  const int StrategyParameterType_COUNTRY = 25;
+  const int StrategyParameterType_TENOR = 29;
+  const int StrategyParameterType_LOCALMKTTIME = 21;
+  const int StrategyParameterType_INT = 1;
+  const int StrategyParameterType_LOCALMKTDATE = 21;
+  const int StrategyParameterType_EXCHANGE = 17;
+  const int StrategyParameterType_LANGUAGE = 26;
+  const int StrategyParameterType_MONTH_YEAR = 18;
+  const int StrategyParameterType_PERCENTAGE = 11;
+  const int StrategyParameterType_LENGTH = 2;
+  const int StrategyParameterType_TZTIMESTAMP = 28;
+  const int StrategyParameterType_MULTIPLESTRINGVALUE = 24;
+  const int StrategyParameterType_UTCTIMESTAMP = 19;
+  const int StrategyParameterType_DATA = 23;
+  const int StrategyParameterType_CURRENCY = 16;
+  const int StrategyParameterType_STRING = 14;
+  const int StrategyParameterType_AMT = 10;
+  const int StrategyParameterType_FLOAT = 6;
+  const int StrategyParameterType_UTCDATE = 22;
+  const int StrategyParameterType_UTCTIMEONLY = 20;
+  const int StrategyParameterType_SEQNUM = 4;
+  const int StrategyParameterType_UTCDATEONLY = 22;
+  const int StrategyParameterType_PRICEOFFSET = 9;
+  const int EncryptMethod_PGP_DES_MD5 = 5;
+  const int EncryptMethod_PGPDESMD5SEEAPPNOTEONFIXWEBSITE = 5;
+  const int EncryptMethod_PKCS_DES = 3;
+  const int EncryptMethod_NONEOTHER = 0;
+  const int EncryptMethod_PKCSDESPROPRIETARY = 3;
+  const int EncryptMethod_PGPDESDEFUNCT = 4;
+  const int EncryptMethod_PEMDESMD5SEEAPPNOTEONFIXWEBSITENAFORFIXMLNOTUSED = 6;
+  const int EncryptMethod_PKCS = 1;
+  const int EncryptMethod_PGP_DES = 4;
+  const int EncryptMethod_NONE = 0;
+  const int EncryptMethod_DES = 2;
+  const int EncryptMethod_PKCSPROPRIETARY = 1;
+  const int EncryptMethod_NONE_OTHER = 0;
+  const int EncryptMethod_DESECBMODE = 2;
+  const int EncryptMethod_PEM_DES_MD5 = 6;
+  const char PosAmtType_ACCRUED_COUPON_AMOUNT[] = "ACPN";
+  const char PosAmtType_PREMIUM_AMOUNT[] = "PREM";
+  const char PosAmtType_STARTOFDAYMARKTOMARKETAMOUNT[] = "SMTM";
+  const char PosAmtType_INCREMENTALMARKTOMARKETAMOUNT[] = "IMTM";
+  const char PosAmtType_CASHAMOUNTCORPORATEEVENT[] = "CASH";
+  const char PosAmtType_INCREMENTAL_COLLATERALIZED_MARK_TO_MARKET[] = "ICMTM";
+  const char PosAmtType_TOTAL_BANKED_AMOUNT[] = "BANK";
+  const char PosAmtType_FINAL_MARK_TO_MARKET_AMOUNT[] = "FMTM";
+  const char PosAmtType_SETTLEMENT_VALUE[] = "SETL";
+  const char PosAmtType_VALUEADJUSTEDAMOUNT[] = "VADJ";
+  const char PosAmtType_CASH_AMOUNT[] = "CASH";
+  const char PosAmtType_PREMIUMAMOUNT[] = "PREM";
+  const char PosAmtType_INITIAL_TRADE_COUPON_AMOUNT[] = "ICPN";
+  const char PosAmtType_INCREMENTAL_ACCRUED_COUPON[] = "IACPN";
+  const char PosAmtType_START_OF_DAY_MARK_TO_MARKET_AMOUNT[] = "SMTM";
+  const char PosAmtType_VALUE_ADJUSTED_AMOUNT[] = "VADJ";
+  const char PosAmtType_CASHRESIDUALAMOUNT[] = "CRES";
+  const char PosAmtType_COLLATERALIZED_MARK_TO_MARKET[] = "CMTM";
+  const char PosAmtType_CASH_RESIDUAL_AMOUNT[] = "CRES";
+  const char PosAmtType_COMPENSATION_AMOUNT[] = "DLV";
+  const char PosAmtType_TRADE_VARIATION_AMOUNT[] = "TVAR";
+  const char PosAmtType_TRADEVARIATIONAMOUNT[] = "TVAR";
+  const char PosAmtType_FINALMARKTOMARKETAMOUNT[] = "FMTM";
+  const char PosAmtType_COUPON_AMOUNT[] = "CPN";
+  const char PosAmtType_TOTAL_COLLATERALIZED_AMOUNT[] = "COLAT";
+  const char PosAmtType_INCREMENTAL_MARK_TO_MARKET_AMOUNT[] = "IMTM";
+  const char ResetSeqNumFlag_NO = 'N';
+  const char ResetSeqNumFlag_YES = 'Y';
+  const int CollInquiryResult_NO_COLLATERAL_FOUND_FOR_THE_ORDER_SPECIFIED = 7;
+  const int CollInquiryResult_NOCOLLATERALFOUNDFORTHEORDERSPECIFIED = 7;
+  const int CollInquiryResult_NOCOLLATERALFOUNDFORTHETRADESPECIFIED = 6;
+  const int CollInquiryResult_INVALIDORUNKNOWNINSTRUMENT = 1;
+  const int CollInquiryResult_INVALID_DESTINATION_REQUESTED = 5;
+  const int CollInquiryResult_INVALIDORUNKNOWNCOLLATERALTYPE = 2;
+  const int CollInquiryResult_UNAUTHORIZED_FOR_COLLATERAL_INQUIRY = 9;
+  const int CollInquiryResult_INVALIDTRANSPORTTYPEREQUESTED = 4;
+  const int CollInquiryResult_INVALIDPARTIES = 3;
+  const int CollInquiryResult_INVALID_OR_UNKNOWN_COLLATERAL_TYPE = 2;
+  const int CollInquiryResult_INVALIDDESTINATIONREQUESTED = 5;
+  const int CollInquiryResult_SUCCESSFUL = 0;
+  const int CollInquiryResult_INVALID_OR_UNKNOWN_INSTRUMENT = 1;
+  const int CollInquiryResult_COLLATERAL_INQUIRY_TYPE_NOT_SUPPORTED = 8;
+  const int CollInquiryResult_OTHER = 99;
+  const int CollInquiryResult_UNAUTHORIZEDFORCOLLATERALINQUIRY = 9;
+  const int CollInquiryResult_COLLATERALINQUIRYTYPENOTSUPPORTED = 8;
+  const int CollInquiryResult_INVALID_PARTIES = 3;
+  const int CollInquiryResult_INVALID_TRANSPORT_TYPE_REQUESTED = 4;
+  const int CollInquiryResult_NO_COLLATERAL_FOUND_FOR_THE_TRADE_SPECIFIED = 6;
+  const int CollAsgnRespType_DECLINED = 2;
+  const int CollAsgnRespType_RECEIVED = 0;
+  const int CollAsgnRespType_REJECTED = 3;
+  const int CollAsgnRespType_ACCEPTED = 1;
+  const char UnsolicitedIndicator_NO = 'N';
+  const char UnsolicitedIndicator_YES = 'Y';
+  const int QuoteEntryRejectReason_UNKNWNSYM = 1;
+  const int QuoteEntryRejectReason_EXCHCLSD = 2;
+  const int QuoteEntryRejectReason_EXHCNAGE = 2;
+  const int QuoteEntryRejectReason_DUPORD = 6;
+  const int QuoteEntryRejectReason_INVALID_PRICE = 8;
+  const int QuoteEntryRejectReason_TOOLATE = 4;
+  const int QuoteEntryRejectReason_INVBIDASK = 7;
+  const int QuoteEntryRejectReason_NOT_AUTHORIZED_TO_QUOTE_SECURITY = 9;
+  const int QuoteEntryRejectReason_TOO_LATE_TO_ENTER = 4;
+  const int QuoteEntryRejectReason_QUOTE_EXCEEDS_LIMIT = 3;
+  const int QuoteEntryRejectReason_ORDEXCLIM = 3;
+  const int QuoteEntryRejectReason_UNKNORD = 5;
+  const int QuoteEntryRejectReason_INVPX = 8;
+  const int QuoteEntryRejectReason_EXCHANGE = 2;
+  const int QuoteEntryRejectReason_UNKNOWN_SYMBOL = 1;
+  const int QuoteEntryRejectReason_NOTAUTH = 9;
+  const int QuoteEntryRejectReason_OTHER = 99;
+  const int QuoteEntryRejectReason_INVALID_BID_ASK_SPREAD = 7;
+  const int QuoteEntryRejectReason_UNKNOWN_QUOTE = 5;
+  const int QuoteEntryRejectReason_DUPLICATE_QUOTE = 6;
+  const char OrderCapacity_PROPRIETARY = 'G';
+  const char OrderCapacity_RISKLESS_PRINCIPAL = 'R';
+  const char OrderCapacity_AGENT_FOR_OTHER_MEMBER = 'W';
+  const char OrderCapacity_PRINCIPAL = 'P';
+  const char OrderCapacity_AGENCY = 'A';
+  const char OrderCapacity_INDIVIDUAL = 'I';
+  const char OrderCapacity_AGENTOTHERMEMBER = 'W';
+  const char OrderCapacity_RISKLESSPRINCIPAL = 'R';
+  const int QuoteAckStatus_CANCELED_FOR_UNDERLYING = 3;
+  const int QuoteAckStatus_CANCELED_ALL = 4;
+  const int QuoteAckStatus_CANCELED_FOR_SECURITY_TYPE = 2;
+  const int QuoteAckStatus_REJECTED = 5;
+  const int QuoteAckStatus_CANCELED_FOR_SYMBOL = 1;
+  const int QuoteAckStatus_ACCEPTED = 0;
+  const int UserRequestType_CHANGE_PASSWORD_FOR_USER = 3;
+  const int UserRequestType_CHANGEPASSWORDFORUSER = 3;
+  const int UserRequestType_LOGOFFUSER = 2;
+  const int UserRequestType_LOG_OFF_USER = 2;
+  const int UserRequestType_REQUEST_INDIVIDUAL_USER_STATUS = 4;
+  const int UserRequestType_REQUESTINDIVIDUALUSERSTATUS = 4;
+  const int UserRequestType_LOGONUSER = 1;
+  const int UserRequestType_LOG_ON_USER = 1;
+  const int TradeReportTransType_REPLACE = 2;
+  const int TradeReportTransType_NEW = 0;
+  const int TradeReportTransType_REVERSE = 4;
+  const int TradeReportTransType_CANCEL = 1;
+  const int TradeReportTransType_CANCEL_DUE_TO_BACK_OUT_OF_TRADE = 5;
+  const int TradeReportTransType_RELEASE = 3;
+  const char AdvSide_CROSS = 'X';
+  const char AdvSide_TRADE = 'T';
+  const char AdvSide_BUY = 'B';
+  const char AdvSide_SELL = 'S';
+  const int CoveredOrUncovered_COVERED = 0;
+  const int CoveredOrUncovered_UNCOVERED = 1;
+  const int AcctIDSource_TFMGSPTA = 3;
+  const int AcctIDSource_TFM = 3;
+  const int AcctIDSource_DTCCCODE = 5;
+  const int AcctIDSource_SIDCODE = 2;
+  const int AcctIDSource_OMGEOALERTID = 4;
+  const int AcctIDSource_BIC = 1;
+  const int AcctIDSource_OTHER = 99;
+  const int AcctIDSource_OMGEO = 4;
+  const int AcctIDSource_SID_CODE = 2;
+  const int AcctIDSource_DTCC_CODE = 5;
+  const int TradeRequestType_UNMATCHED_TRADES_THAT_MATCH_CRITERIA = 2;
+  const int TradeRequestType_ALL_TRADES = 0;
+  const int TradeRequestType_MATCHED_TRADES_MATCHING_CRITERIA_PROVIDED_ON_REQUEST = 1;
+  const int TradeRequestType_UNREPORTEDTRADES = 3;
+  const int TradeRequestType_ALLTRADES = 0;
+  const int TradeRequestType_ADVISORIESMATCH = 4;
+  const int TradeRequestType_MATCHEDTRADES = 1;
+  const int TradeRequestType_UNMATCHEDTRADES = 2;
+  const int TradeRequestType_UNREPORTED_TRADES_THAT_MATCH_CRITERIA = 3;
+  const int TradeRequestType_ADVISORIES_THAT_MATCH_CRITERIA = 4;
+  const int TradSesStatus_PRECLOSE = 5;
+  const int TradSesStatus_HALTED = 1;
+  const int TradSesStatus_REQREJ = 6;
+  const int TradSesStatus_REQUEST_REJECTED = 6;
+  const int TradSesStatus_OPEN = 2;
+  const int TradSesStatus_PREOPEN = 4;
+  const int TradSesStatus_PRE_OPEN = 4;
+  const int TradSesStatus_UNKNOWN = 0;
+  const int TradSesStatus_PRE_CLOSE = 5;
+  const int TradSesStatus_CLOSED = 3;
+  const int PegPriceType_LAST_PEG = 1;
+  const int PegPriceType_PRIMARY_PEG = 5;
+  const int PegPriceType_OPENING_PEG = 3;
+  const int PegPriceType_FIXED_PEG_TO_LOCAL_BEST_BID_OR_OFFER_AT_TIME_OF_ORDER = 6;
+  const int PegPriceType_TRAILING_STOP_PEG = 8;
+  const int PegPriceType_PEG_TO_LIMIT_PRICE = 9;
+  const int PegPriceType_MID_PRICE_PEG = 2;
+  const int PegPriceType_MARKET_PEG = 4;
+  const int PegPriceType_PEG_TO_VWAP = 7;
+  const int StreamAsgnRejReason_NO_AVAILABLE_STREAM = 3;
+  const int StreamAsgnRejReason_EXCEEDS_MAXIMUM_SIZE = 1;
+  const int StreamAsgnRejReason_UNKNOWN_CLIENT = 0;
+  const int StreamAsgnRejReason_UNKNOWN_OR_INVALID_CURRENCY_PAIR = 2;
+  const int StreamAsgnRejReason_OTHER = 99;
+  const char ValuationMethod_FUTURES_STYLE_WITH_AN_ATTACHED_CASH_ADJUSTMENT[] = "FUTDA";
+  const char ValuationMethod_PREMIUM_STYLE[] = "EQTY";
+  const char ValuationMethod_CDS_IN_DELIVERY[] = "CDSD";
+  const char ValuationMethod_CDS_STYLE_COLLATERALIZATION_OF_MARKET_TO_MARKET_AND_COUPON[] = "CDS";
+  const char ValuationMethod_FUTURES_STYLE_MARK_TO_MARKET[] = "FUT";
+  const char TriggerType_SPECIFIED_TRADING_SESSION = '2';
+  const char TriggerType_NEXT_AUCTION = '3';
+  const char TriggerType_PRICE_MOVEMENT = '4';
+  const char TriggerType_PARTIAL_EXECUTION = '1';
+  const char PriceProtectionScope_LOCAL = '1';
+  const char PriceProtectionScope_NONE = '0';
+  const char PriceProtectionScope_GLOBAL = '3';
+  const char PriceProtectionScope_NATIONAL = '2';
+  const int TradeReportRejectReason_SUCCESSFULDEFAULT = 0;
+  const int TradeReportRejectReason_UNAUTHORIZED_TO_REPORT_TRADES = 3;
+  const int TradeReportRejectReason_SUCCESSFUL = 0;
+  const int TradeReportRejectReason_INVALID_PARTY_ONFORMATION = 1;
+  const int TradeReportRejectReason_UNKNOWN_INSTRUMENT = 2;
+  const int TradeReportRejectReason_OTHER = 99;
+  const int TradeReportRejectReason_INVALIDTRADETYPE = 4;
+  const int TradeReportRejectReason_UNKNOWNINSTRUMENT = 2;
+  const int TradeReportRejectReason_INVALID_TRADE_TYPE = 4;
+  const int TradeReportRejectReason_UNAUTHORIZEDTOREPORTTRADES = 3;
+  const int TradeReportRejectReason_INVALIDPARTYINFORMATION = 1;
+  const int SecurityListType_NEWSPAPER_LIST = 4;
+  const int SecurityListType_TRADING_LIST = 2;
+  const int SecurityListType_INDUSTRY_CLASSIFICATION = 1;
+  const int SecurityListType_MARKET = 3;
+  const int QuoteRejectReason_QUOTE_LOCKED = 11;
+  const int QuoteRejectReason_UNKNSYM = 1;
+  const int QuoteRejectReason_EXCHCLSD = 2;
+  const int QuoteRejectReason_DUPORD = 6;
+  const int QuoteRejectReason_INVALID_OR_UNKNOWN_ISSUER_OF_UNDERLYING_SECURITY = 13;
+  const int QuoteRejectReason_INVALID_PRICE = 8;
+  const int QuoteRejectReason_TOOLATE = 4;
+  const int QuoteRejectReason_NOT_AUTHORIZED_TO_QUOTE_SECURITY = 9;
+  const int QuoteRejectReason_TOO_LATE_TO_ENTER = 4;
+  const int QuoteRejectReason_UNKNORD = 5;
+  const int QuoteRejectReason_INVPX = 8;
+  const int QuoteRejectReason_EXCHANGE = 2;
+  const int QuoteRejectReason_INVSPREAD = 7;
+  const int QuoteRejectReason_UNKNOWN_SYMBOL = 1;
+  const int QuoteRejectReason_NOTAUTH = 9;
+  const int QuoteRejectReason_OTHER = 99;
+  const int QuoteRejectReason_INVALID_BID_ASK_SPREAD = 7;
+  const int QuoteRejectReason_UNKNOWN_QUOTE = 5;
+  const int QuoteRejectReason_INVALID_OR_UNKNOWN_SECURITY_ISSUER = 12;
+  const int QuoteRejectReason_ORDEXLIM = 3;
+  const int QuoteRejectReason_DUPLICATE_QUOTE = 6;
+  const int QuoteRejectReason_PRICE_EXCEEDS_CURRENT_PRICE_BAND = 10;
+  const int QuoteRejectReason_QUOTE_REQUEST_EXCEEDS_LIMIT = 3;
+  const char PossResend_NO = 'N';
+  const char PossResend_YES = 'Y';
+  const int QuantityType_SHARES = 1;
+  const int QuantityType_CURRENTFACE = 3;
+  const int QuantityType_PAR = 8;
+  const int QuantityType_BONDS = 2;
+  const int QuantityType_ORIGINALFACE = 4;
+  const int QuantityType_CONTRACTS = 6;
+  const int QuantityType_OTHER = 7;
+  const int QuantityType_CURRENCY = 5;
+  const int ComplexEventPriceBoundaryMethod_GREATER_THAN_OR_EQUAL_TO_COMPLEXEVENTPRICE = 4;
+  const int ComplexEventPriceBoundaryMethod_EQUAL_TO_COMPLEXEVENTPRICE = 3;
+  const int ComplexEventPriceBoundaryMethod_LESS_THAN_COMPLEXEVENTPRICE = 1;
+  const int ComplexEventPriceBoundaryMethod_GREATER_THAN_COMPLEXEVENTPRICE = 5;
+  const int ComplexEventPriceBoundaryMethod_LESS_THAN_OR_EQUAL_TO_COMPLEXEVENTPRICE = 2;
+  const int ImpliedMarketIndicator_BOTH_IMPLIED_IN_AND_IMPLIED_OUT = 3;
+  const int ImpliedMarketIndicator_NOT_IMPLIED = 0;
+  const int ImpliedMarketIndicator_IMPLIED_OUT = 2;
+  const int ImpliedMarketIndicator_IMPLIED_IN = 1;
+  const int QuoteRequestType_AUTOMATIC = 2;
+  const int QuoteRequestType_MAN = 1;
+  const int QuoteRequestType_AUTO = 2;
+  const int QuoteRequestType_MANUAL = 1;
+  const int SecurityRequestResult_INSTRUMENTUNAVAILABLE = 4;
+  const int SecurityRequestResult_NO_INSTRUMENTS_FOUND_THAT_MATCH_SELECTION_CRITERIA = 2;
+  const int SecurityRequestResult_NOT_AUTHORIZED_TO_RETRIEVE_INSTRUMENT_DATA = 3;
+  const int SecurityRequestResult_INSTRUMENT_DATA_TEMPORARILY_UNAVAILABLE = 4;
+  const int SecurityRequestResult_VALID_REQUEST = 0;
+  const int SecurityRequestResult_VALIDREQ = 0;
+  const int SecurityRequestResult_NOINSTRUMENTSFOUND = 2;
+  const int SecurityRequestResult_INVALID_OR_UNSUPPORTED_REQUEST = 1;
+  const int SecurityRequestResult_NOTAUTHORIZED = 3;
+  const int SecurityRequestResult_NOTSUPPORTED = 5;
+  const int SecurityRequestResult_INVALIDREQ = 1;
+  const int SecurityRequestResult_REQUEST_FOR_INSTRUMENT_DATA_NOT_SUPPORTED = 5;
+  const char OrderRestrictions_ISSUER_HOLDING = 'B';
+  const char OrderRestrictions_NON_INDEXARBITRAGE = '3';
+  const char OrderRestrictions_EXMRKTPART = '8';
+  const char OrderRestrictions_ACTING_AS_MARKET_MAKER_OR_SPECIALIST_IN_THE_SECURITY = '5';
+  const char OrderRestrictions_NON_ALGORITHMIC = 'D';
+  const char OrderRestrictions_EXTNERAL_INTER_CONNECTED_MARKET_LINKAGE = '9';
+  const char OrderRestrictions_NON_INDEX_ARBITRAGE = '3';
+  const char OrderRestrictions_ACTING_AS_MARKET_MAKER_OF_SPECIALIST_IN_THE_UNDERLYING_SECURITY_OF_A_DERIVATIVE_SEUCIRTY = '6';
+  const char OrderRestrictions_PROGRAM_TRADE = '1';
+  const char OrderRestrictions_ISSUE_PRICE_STABILIZATION = 'C';
+  const char OrderRestrictions_INDEXARBITRAGE = '2';
+  const char OrderRestrictions_ACTMMDERIV = '6';
+  const char OrderRestrictions_FORENTITY = '7';
+  const char OrderRestrictions_CROSS = 'F';
+  const char OrderRestrictions_PROGRAMTRADE = '1';
+  const char OrderRestrictions_RISKARB = 'A';
+  const char OrderRestrictions_EXTERNAL_INTER_CONNECTED_MARKET_LINKAGE = '9';
+  const char OrderRestrictions_FOREIGN_ENTITY = '7';
+  const char OrderRestrictions_COMPETINGMARKETMAKER = '4';
+  const char OrderRestrictions_EXINTMRKTLINK = '9';
+  const char OrderRestrictions_INDEX_ARBITRAGE = '2';
+  const char OrderRestrictions_EXTERNAL_MARKET_PARTICIPANT = '8';
+  const char OrderRestrictions_ALGORITHMIC = 'E';
+  const char OrderRestrictions_ACTMM = '5';
+  const char OrderRestrictions_ACTING_AS_MARKET_MAKER_OR_SPECIALIST_IN_THE_UNDERLYING_SECURITY_OF_A_DERIVATIVE_SECURITY = '6';
+  const char OrderRestrictions_RISKLESS_ARBITRAGE = 'A';
+  const char OrderRestrictions_COMPETING_MARKET_MAKER = '4';
+  const char ListExecInstType_WAIT_FOR_EXECUT_INSTRUCTION = '2';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_SELL_DRIVEN = '3';
+  const char ListExecInstType_IMMED = '1';
+  const char ListExecInstType_WAIT = '2';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_BUY_DRIVEN_CASH_WITHDRAW = '5';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_3 = '3';
+  const char ListExecInstType_IMMEDIATE = '1';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_4 = '4';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_5 = '5';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_BUY_DRIVEN_CASH_TOP_UP = '4';
+  const char ListExecInstType_EXCHCIVBUYTOP = '4';
+  const char ListExecInstType_EXCHCIVBUYWD = '5';
+  const char ListExecInstType_EXCHCIVSELL = '3';
+  const char ListExecInstType_WAIT_FOR_EXECUTE_INSTRUCTION = '2';
+  const int DistribPaymentMethod_FED_WIRE = 7;
+  const int DistribPaymentMethod_ACH_CREDIT = 9;
+  const int DistribPaymentMethod_EUROCLEAR = 3;
+  const int DistribPaymentMethod_TELEGRAPHICTRANSFER = 6;
+  const int DistribPaymentMethod_ACHCREDIT = 9;
+  const int DistribPaymentMethod_TELEGRAPHIC_TRANSFER = 6;
+  const int DistribPaymentMethod_FEDWIRE = 7;
+  const int DistribPaymentMethod_CHEQUE = 5;
+  const int DistribPaymentMethod_DIRECT_CREDIT = 8;
+  const int DistribPaymentMethod_CREST = 1;
+  const int DistribPaymentMethod_BPAY = 10;
+  const int DistribPaymentMethod_CLEARSTREAM = 4;
+  const int DistribPaymentMethod_DIRECTCREDITBECSBACS = 8;
+  const int DistribPaymentMethod_HIGHVALUECLEARINGSYSTEMHVACS = 11;
+  const int DistribPaymentMethod_NSCC = 2;
+  const int DistribPaymentMethod_HIGH_VALUE_CLEARING_SYSTEM_HVACS = 11;
+  const int DistribPaymentMethod_REINVESTINFUND = 12;
+  const int DistribPaymentMethod_REINVEST_IN_FUND = 12;
+  const int OrderHandlingInstSource_NASD_OATS = 1;
+  const int AffirmStatus_CONFIRMREJECTED = 2;
+  const int AffirmStatus_CONFIRM_REJECTED_IE_NOT_AFFIRMED = 2;
+  const int AffirmStatus_AFFIRMED = 3;
+  const int AffirmStatus_RECEIVED = 1;
+  const int OrigCustOrderCapacity_CLEARING_FIRM_TRADING_FOR_ITS_PROPRIETARY_ACCOUNT = 2;
+  const int OrigCustOrderCapacity_MEMBER_TRADING_FOR_THEIR_OWN_ACCOUNT = 1;
+  const int OrigCustOrderCapacity_MEMBER_TRADING_FOR_ANOTHER_MEMBER = 3;
+  const int OrigCustOrderCapacity_ALL_OTHER = 4;
+  const int AllocMethod_GUARANTOR = 2;
+  const int AllocMethod_AUTOMATIC = 1;
+  const int AllocMethod_MANUAL = 3;
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_SECURITY = '1';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_ISSUER_OF_UNDERLYING_SECURITY = 'C';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_SECURITY_GROUP = 'A';
+  const char MassCancelResponse_CXLORDERSSECURITYTYPE = '5';
+  const char MassCancelResponse_CXLORDERSUNDERLYINGSECURITY = '2';
+  const char MassCancelResponse_CXLORDERSTRDSESSION = '6';
+  const char MassCancelResponse_CXLALLORDERS = '7';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_MARKET = '8';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_MARKET_SEGMENT = '9';
+  const char MassCancelResponse_CXLREQREJ = '0';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_SECURITYTYPE = '5';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_TRADING_SESSION = '6';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_AN_UNDERLYING_SECURITY = '2';
+  const char MassCancelResponse_CXLORDERSSECURITY = '1';
+  const char MassCancelResponse_CXLORDERSPRODUCT = '3';
+  const char MassCancelResponse_CANCEL_ALL_ORDERS = '7';
+  const char MassCancelResponse_CANCEL_REQUEST_REJECTED = '0';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_SECURITIES_ISSUER = 'B';
+  const char MassCancelResponse_CXLORDERSCFICODE = '4';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_CFICODE = '4';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_PRODUCT = '3';
+  const int StreamAsgnReqType_STREAM_ASSIGNMENT_FOR_NEW_CUSTOMER = 1;
+  const int StreamAsgnReqType_STREAM_ASSIGNMENT_FOR_EXISTING_CUSTOMER = 2;
+  const char SymbolSfx_EUCP_WITH_LUMP_SUM_INTEREST_RATHER_THAN_DISCOUNT_PRICE[] = "CD";
+  const char SymbolSfx_EUCPLUMPSUMINTEREST[] = "CD";
+  const char SymbolSfx_WHENISSUED[] = "WI";
+  const char SymbolSfx_WHEN_ISSUED_FOR_A_SECURITY_TO_BE_REISSUED_UNDER_AN_OLD_CUSIP_OR_ISIN[] = "WI";
+  const char ExDestinationIDSource_PROPRIETARY = 'D';
+  const char ExDestinationIDSource_GENERALLY_ACCEPTED_MARKET_PARTICIPANT_IDENTIFIER = 'C';
+  const char ExDestinationIDSource_BIC = 'B';
+  const char ExDestinationIDSource_MIC = 'G';
+  const char ExDestinationIDSource_ISO_COUNTRY_CODE = 'E';
+  const int SecurityListRequestType_ALLSECURITIES = 4;
+  const int SecurityListRequestType_MARKETID_OR_MARKETID_PLUS_MARKETSEGMENTID = 5;
+  const int SecurityListRequestType_SECURITYTYPECFICODE = 1;
+  const int SecurityListRequestType_SYMBOL = 0;
+  const int SecurityListRequestType_SECURITYTYPE_AND_OR_CFICODE = 1;
+  const int SecurityListRequestType_TRADINGSESSIONID = 3;
+  const int SecurityListRequestType_ALL_SECURITIES = 4;
+  const int SecurityListRequestType_PRODUCT = 2;
+  const int CollAsgnReason_FORWARDCOLLATERALDEMAND = 5;
+  const int CollAsgnReason_ADVERSETAXEVENT = 7;
+  const int CollAsgnReason_MARGINDEFICIENCY = 3;
+  const int CollAsgnReason_TIME_WARNING = 2;
+  const int CollAsgnReason_TIMEWARNING = 2;
+  const int CollAsgnReason_ADVERSE_TAX_EVENT = 7;
+  const int CollAsgnReason_MARGINEXCESS = 4;
+  const int CollAsgnReason_MARGIN_DEFICIENCY = 3;
+  const int CollAsgnReason_SCHEDULED = 1;
+  const int CollAsgnReason_INITIAL = 0;
+  const int CollAsgnReason_FORWARD_COLLATERAL_DEMAND = 5;
+  const int CollAsgnReason_EVENTOFDEFAULT = 6;
+  const int CollAsgnReason_MARGIN_EXCESS = 4;
+  const int CollAsgnReason_EVENT_OF_DEFAULT = 6;
+  const int SettlPriceType_FINAL = 1;
+  const int SettlPriceType_THEORETICAL = 2;
+  const char DealingCapacity_RISKLESS_PRINCIPAL = 'R';
+  const char DealingCapacity_PRINCIPAL = 'P';
+  const char DealingCapacity_AGENT = 'A';
+  const int RateSourceType_SECONDARY = 1;
+  const int RateSourceType_PRIMARY = 0;
+  const char AggregatedBook_NO = 'N';
+  const char AggregatedBook_YES = 'Y';
+  const int PosQtyStatus_SUBMITTED = 0;
+  const int PosQtyStatus_REJECTED = 2;
+  const int PosQtyStatus_ACCEPTED = 1;
+  const char MsgType_TradingSessionStatusRequest[] = "g";
+  const char MsgType_ListStatus[] = "N";
+  const char MsgType_Email[] = "C";
+  const char MsgType_ListExecute[] = "L";
+  const char MsgType_Confirmation[] = "AK";
+  const char MsgType_NewOrderMultileg[] = "AB";
+  const char MsgType_IndicationofInterest[] = "6";
+  const char MsgType_MarketDataIncrementalRefresh[] = "X";
+  const char MsgType_TradeCaptureReport[] = "AE";
+  const char MsgType_RequestForPositionsAck[] = "AO";
+  const char MsgType_StreamAssignmentRequest[] = "CC";
+  const char MsgType_SecurityListRequest[] = "x";
+  const char MsgType_CollateralReport[] = "BA";
+  const char MsgType_PositionMaintenanceReport[] = "AM";
+  const char MsgType_PositionReport[] = "AP";
+  const char MsgType_StreamAssignmentReportACK[] = "CE";
+  const char MsgType_UserRequest[] = "BE";
+  const char MsgType_PositionMaintenanceRequest[] = "AL";
+  const char MsgType_NetworkCounterpartySystemStatusResponse[] = "BD";
+  const char MsgType_NewOrderCross[] = "s";
+  const char MsgType_AdjustedPositionReport[] = "BL";
+  const char MsgType_Logon[] = "A";
+  const char MsgType_IOI[] = "6";
+  const char MsgType_ListStrikePrice[] = "m";
+  const char MsgType_BidRequest[] = "k";
+  const char MsgType_TradingSessionStatus[] = "h";
+  const char MsgType_RegistrationInstructionsResponse[] = "p";
+  const char MsgType_Advertisement[] = "7";
+  const char MsgType_MassQuote[] = "i";
+  const char MsgType_Logout[] = "5";
+  const char MsgType_AllocationReport[] = "AS";
+  const char MsgType_SecurityDefinitionUpdateReport[] = "BP";
+  const char MsgType_ListStatusRequest[] = "M";
+  const char MsgType_BusinessMessageReject[] = "j";
+  const char MsgType_ConfirmationAck[] = "AU";
+  const char MsgType_TestRequest[] = "1";
+  const char MsgType_SecurityList[] = "y";
+  const char MsgType_ListCancelRequest[] = "K";
+  const char MsgType_News[] = "B";
+  const char MsgType_TradingSessionListUpdateReport[] = "BS";
+  const char MsgType_Heartbeat[] = "0";
+  const char MsgType_QuoteAcknowledgement[] = "b";
+  const char MsgType_AllocationReportAck[] = "AT";
+  const char MsgType_ConfirmationRequest[] = "BH";
+  const char MsgType_OrderMassActionReport[] = "BZ";
+  const char MsgType_CollateralInquiry[] = "BB";
+  const char MsgType_SecurityTypeRequest[] = "v";
+  const char MsgType_NewOrderList[] = "E";
+  const char MsgType_ExecutionAcknowledgement[] = "BN";
+  const char MsgType_TradingSessionListRequest[] = "BI";
+  const char MsgType_SecurityTypes[] = "w";
+  const char MsgType_MarketDefinition[] = "BU";
+  const char MsgType_SequenceReset[] = "4";
+  const char MsgType_CollateralResponse[] = "AZ";
+  const char MsgType_MassQuoteAcknowledgement[] = "b";
+  const char MsgType_QuoteResponse[] = "AJ";
+  const char MsgType_QuoteStatusRequest[] = "a";
+  const char MsgType_QuoteCancel[] = "Z";
+  const char MsgType_ContraryIntentionReport[] = "BO";
+  const char MsgType_PartyDetailsListReport[] = "CG";
+  const char MsgType_PartyDetailsListRequest[] = "CF";
+  const char MsgType_CrossOrderCancelRequest[] = "u";
+  const char MsgType_NewOrderSingle[] = "D";
+  const char MsgType_DerivativeSecurityListRequest[] = "z";
+  const char MsgType_CollateralRequest[] = "AX";
+  const char MsgType_UserNotification[] = "CB";
+  const char MsgType_UserResponse[] = "BF";
+  const char MsgType_DontKnowTrade[] = "Q";
+  const char MsgType_TradeCaptureReportAck[] = "AR";
+  const char MsgType_ApplicationMessageRequest[] = "BW";
+  const char MsgType_MultilegOrderCancelReplace[] = "AC";
+  const char MsgType_OrderCancelReject[] = "9";
+  const char MsgType_ExecutionReport[] = "8";
+  const char MsgType_QuoteStatusReport[] = "AI";
+  const char MsgType_ResendRequest[] = "2";
+  const char MsgType_Quote[] = "S";
+  const char MsgType_SettlementInstructionRequest[] = "AV";
+  const char MsgType_SecurityListUpdateReport[] = "BK";
+  const char MsgType_AllocationInstructionAlert[] = "BM";
+  const char MsgType_TradeCaptureReportRequestAck[] = "AQ";
+  const char MsgType_AllocationInstruction[] = "J";
+  const char MsgType_Allocation[] = "J";
+  const char MsgType_ApplicationMessageReport[] = "BY";
+  const char MsgType_RegistrationInstructions[] = "o";
+  const char MsgType_SecurityDefinition[] = "d";
+  const char MsgType_SecurityDefinitionRequest[] = "c";
+  const char MsgType_SecurityStatus[] = "f";
+  const char MsgType_DerivativeSecurityList[] = "AA";
+  const char MsgType_NetworkCounterpartySystemStatusRequest[] = "BC";
+  const char MsgType_MarketDefinitionRequest[] = "BT";
+  const char MsgType_Reject[] = "3";
+  const char MsgType_DerivativeSecurityListUpdateReport[] = "BR";
+  const char MsgType_QuoteRequestReject[] = "AG";
+  const char MsgType_OrderMassStatusRequest[] = "AF";
+  const char MsgType_ApplicationMessageRequestAck[] = "BX";
+  const char MsgType_SecurityStatusRequest[] = "e";
+  const char MsgType_AllocationACK[] = "P";
+  const char MsgType_MarketDefinitionUpdateReport[] = "BV";
+  const char MsgType_CrossOrderCancelReplaceRequest[] = "t";
+  const char MsgType_OrderMassCancelReport[] = "r";
+  const char MsgType_AssignmentReport[] = "AW";
+  const char MsgType_BidResponse[] = "l";
+  const char MsgType_RequestForPositions[] = "AN";
+  const char MsgType_SettlementObligationReport[] = "BQ";
+  const char MsgType_OrderMassCancelRequest[] = "q";
+  const char MsgType_TradingSessionList[] = "BJ";
+  const char MsgType_OrderStatusRequest[] = "H";
+  const char MsgType_CollateralAssignment[] = "AY";
+  const char MsgType_StreamAssignmentReport[] = "CD";
+  const char MsgType_OrderMassActionRequest[] = "CA";
+  const char MsgType_AllocationAck[] = "P";
+  const char MsgType_QuoteRequest[] = "R";
+  const char MsgType_CollateralInquiryAck[] = "BG";
+  const char MsgType_MarketDataSnapshotFullRefresh[] = "W";
+  const char MsgType_SettlementInstructions[] = "T";
+  const char MsgType_OrderCancelReplaceRequest[] = "G";
+  const char MsgType_TradeCaptureReportRequest[] = "AD";
+  const char MsgType_RFQRequest[] = "AH";
+  const char MsgType_OrderCancelRequest[] = "F";
+  const char MsgType_MultilegOrderCancelReplaceRequest[] = "AC";
+  const char MsgType_AllocationInstructionAck[] = "P";
+  const char MsgType_MarketDataRequest[] = "V";
+  const char MsgType_MarketDataRequestReject[] = "Y";
+  const char MultiLegReportingType_SINGLE = '1';
+  const char MultiLegReportingType_MULTILEG = '3';
+  const char MultiLegReportingType_SINGLE_SECURITY = '1';
+  const char MultiLegReportingType_MULTI_LEG_SECURITY = '3';
+  const char MultiLegReportingType_INDIVLEG = '2';
+  const char MultiLegReportingType_INDIVIDUAL_LEG_OF_A_MULTI_LEG_SECURITY = '2';
+  const char MultiLegReportingType_INDIVIDUAL_LEG_OF_A_MULTILEG_SECURITY = '2';
+  const char IDSource_EXCHANGE_SYMBOL[] = "8";
+  const char IDSource_RIC_CODE[] = "5";
+  const char IDSource_ISO_CURRENCY_CODE[] = "6";
+  const char IDSource_ISIN_NUMBER[] = "4";
+  const char IDSource_SEDOL[] = "2";
+  const char IDSource_ISO_COUNTRY_CODE[] = "7";
+  const char IDSource_CONSOLIDATED_TAPE_ASSOCIATION[] = "9";
+  const char IDSource_QUIK[] = "3";
+  const char IDSource_CUSIP[] = "1";
+  const char OrdStatus_NEW = '0';
+  const char OrdStatus_CALCULATED = 'B';
+  const char OrdStatus_PENDINGNEW = 'A';
+  const char OrdStatus_PENDING_CANCEL = '6';
+  const char OrdStatus_PARTIAL = '1';
+  const char OrdStatus_PENDING_CANCEL_REPLACE = '6';
+  const char OrdStatus_PENDING_NEW = 'A';
+  const char OrdStatus_STOPPED = '7';
+  const char OrdStatus_FILLED = '2';
+  const char OrdStatus_PENDING_REPLACE = 'E';
+  const char OrdStatus_CANCELED = '4';
+  const char OrdStatus_ACCEPTED_FOR_BIDDING = 'D';
+  const char OrdStatus_SUSPENDED = '9';
+  const char OrdStatus_DONE = '3';
+  const char OrdStatus_REJECTED = '8';
+  const char OrdStatus_PARTIALLY_FILLED = '1';
+  const char OrdStatus_EXPIRED = 'C';
+  const char OrdStatus_REPLACED = '5';
+  const char OrdStatus_DONE_FOR_DAY = '3';
+  const char OrdStatus_ACCEPTBIDDING = 'D';
+  const char OrdStatus_PENDINGREP = 'E';
+  const int CustomerOrFirm_FIRM = 1;
+  const int CustomerOrFirm_CUSTOMER = 0;
+  const int AdjustmentType_DELTA_MINUS = 2;
+  const int AdjustmentType_DELTAPLUS = 1;
+  const int AdjustmentType_DELTA_PLUS = 1;
+  const int AdjustmentType_DELTAMINUS = 2;
+  const int AdjustmentType_FINAL = 3;
+  const int AdjustmentType_PROCESSREQUESTASMARGINDISPOSITION = 0;
+  const int AdjustmentType_PROCESS_REQUEST_AS_MARGIN_DISPOSITION = 0;
+  const char AsOfIndicator_TRUE = '1';
+  const char AsOfIndicator_FALSE = '0';
+  const int MassActionScope_ALL_ORDERS_FOR_A_MARKET_SEGMENT = 9;
+  const int MassActionScope_ALL_ORDERS_FOR_A_MARKET = 8;
+  const int MassActionScope_ALL_ORDERS_FOR_AN_UNDERLYING_SECURITY = 2;
+  const int MassActionScope_ALL_ORDERS = 7;
+  const int MassActionScope_ALL_ORDERS_FOR_A_CFICODE = 4;
+  const int MassActionScope_CANCEL_FOR_ISSUER_OF_UNDERLYING_SECURITY = 12;
+  const int MassActionScope_ALL_ORDERS_FOR_A_SECURITY = 1;
+  const int MassActionScope_ALL_ORDERS_FOR_A_TRADING_SESSION = 6;
+  const int MassActionScope_CANCEL_FOR_SECURITY_ISSUER = 11;
+  const int MassActionScope_ALL_ORDERS_FOR_A_SECURITY_GROUP = 10;
+  const int MassActionScope_ALL_ORDERS_FOR_A_PRODUCT = 3;
+  const int MassActionScope_ALL_ORDERS_FOR_A_SECURITYTYPE = 5;
+  const char VenueType_PIT = 'P';
+  const char VenueType_EX_PIT = 'X';
+  const char VenueType_ELECTRONIC = 'E';
+  const int MassActionType_CANCEL_ORDERS = 3;
+  const int MassActionType_RELEASE_ORDERS_FROM_SUSPENSION = 2;
+  const int MassActionType_SUSPEND_ORDERS = 1;
+  const int PosMaintResult_SUCCESSFULCOMPLETION = 0;
+  const int PosMaintResult_SUCCESSFUL_COMPLETION = 0;
+  const int PosMaintResult_OTHER = 99;
+  const int PosMaintResult_REJECTED = 1;
+  const char IOIShares_MEDIUM[] = "M";
+  const char IOIShares_LARGE[] = "L";
+  const char IOIShares_SMALL[] = "S";
+  const int PegOffsetType_PRICE = 0;
+  const int PegOffsetType_BASISPOINTS = 1;
+  const int PegOffsetType_PRICE_TIER = 3;
+  const int PegOffsetType_TICKS = 2;
+  const int PegOffsetType_PRICETIERLEVEL = 3;
+  const int PegOffsetType_BASIS_POINTS = 1;
+  const int MassCancelRejectReason_INVALID_OR_UNKOWN_MARKET_SEGMENT = 8;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITY = 1;
+  const int MassCancelRejectReason_INVALIDSECURITY = 1;
+  const int MassCancelRejectReason_MASS_CANCEL_NOT_SUPPORTED = 0;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITY_GROUP = 9;
+  const int MassCancelRejectReason_INVALID_OR_UNKOWN_UNDERLYING_SECURITY = 2;
+  const int MassCancelRejectReason_INVALIDPRODUCT = 3;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_ISSUER_OF_UNDERLYING_SECURITY = 11;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITYTYPE = 5;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_CFICODE = 4;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_TRADING_SESSION = 6;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_MARKET = 7;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITY_TYPE = 5;
+  const int MassCancelRejectReason_INVALIDUNDERLYING = 2;
+  const int MassCancelRejectReason_OTHER = 99;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITY_ISSUER = 10;
+  const int MassCancelRejectReason_INVALIDCFICODE = 4;
+  const int MassCancelRejectReason_INVALIDSECURITYTYPE = 5;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_PRODUCT = 3;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_UNDERLYING = 2;
+  const int MassCancelRejectReason_INVALIDTRDSESSION = 6;
+  const int MassCancelRejectReason_MASSCXLNOTSUPPORTED = 0;
+  const int ResponseTransportType_OUTOFBAND = 1;
+  const int ResponseTransportType_INBAND = 0;
+  const int ResponseTransportType_OUT_OF_BAND = 1;
+  const int TradSesStatusRejReason_UNKNOWN_OR_INVALID_TRADINGSESSIONID = 1;
+  const int TradSesStatusRejReason_UNKNOWNTRADINGSESSIONID = 1;
+  const int TradSesStatusRejReason_OTHER = 99;
+  const int TrdRegTimestampType_EXECUTION_TIME = 1;
+  const int TrdRegTimestampType_BROKEREXECUTION = 5;
+  const int TrdRegTimestampType_BROKERRECEIPT = 4;
+  const int TrdRegTimestampType_TIMEIN = 2;
+  const int TrdRegTimestampType_TIME_IN = 2;
+  const int TrdRegTimestampType_TIMEOUT = 3;
+  const int TrdRegTimestampType_SUBMISSION_TO_CLEARING = 7;
+  const int TrdRegTimestampType_BROKER_RECEIPT = 4;
+  const int TrdRegTimestampType_DESK_RECEIPT = 6;
+  const int TrdRegTimestampType_EXECUTIONTIME = 1;
+  const int TrdRegTimestampType_BROKER_EXECUTION = 5;
+  const int TrdRegTimestampType_TIME_OUT = 3;
+  const char ApplVerID_FIX50SP1[] = "8";
+  const char ApplVerID_FIX27[] = "0";
+  const char ApplVerID_FIX50SP2[] = "9";
+  const char ApplVerID_FIX50[] = "7";
+  const char ApplVerID_FIX40[] = "2";
+  const char ApplVerID_FIX41[] = "3";
+  const char ApplVerID_FIX30[] = "1";
+  const char ApplVerID_FIX42[] = "4";
+  const char ApplVerID_FIX43[] = "5";
+  const char ApplVerID_FIX44[] = "6";
+  const char HandlInst_MANUAL_ORDER_BEST_EXECUTION = '3';
+  const char HandlInst_AUTOEXECPUB = '2';
+  const char HandlInst_AUTOMATED_EXECUTION_ORDER_PRIVATE_NO_BROKER_INTERVENTION = '1';
+  const char HandlInst_AUTOEXECPRIV = '1';
+  const char HandlInst_AUTOMATED_EXECUTION_ORDER_PUBLIC_BROKER_INTERVENTION_OK = '2';
+  const char HandlInst_MANUAL = '3';
+  const char TradingSessionSubID_POST_TRADING[] = "5";
+  const char TradingSessionSubID_INTRADAY_AUCTION[] = "6";
+  const char TradingSessionSubID_PRE_TRADING[] = "1";
+  const char TradingSessionSubID_QUIESCENT[] = "7";
+  const char TradingSessionSubID_3[] = "3";
+  const char TradingSessionSubID_OPENING_OR_OPENING_AUCTION[] = "2";
+  const char TradingSessionSubID_CLOSING_OR_CLOSING_AUCTION[] = "4";
+  const char MDEntryType_SWAP_VALUE_FACTOR = 'S';
+  const char MDEntryType_OPEN_INTEREST = 'C';
+  const char MDEntryType_COMPOSITE_UNDERLYING_PRICE = 'D';
+  const char MDEntryType_SESSION_HIGH_BID = 'N';
+  const char MDEntryType_INDEXVALUE = '3';
+  const char MDEntryType_OPENINTEREST = 'C';
+  const char MDEntryType_CLOSING_PRICE = '5';
+  const char MDEntryType_PRIOR_SETTLE_PRICE = 'M';
+  const char MDEntryType_TRADING_SESSION_VWAP_PRICE = '9';
+  const char MDEntryType_TRADING_SESSION_LOW_PRICE = '8';
+  const char MDEntryType_SETTLE_HIGH_PRICE = 'K';
+  const char MDEntryType_IMBALANCE = 'A';
+  const char MDEntryType_FIXING_PRICE = 'W';
+  const char MDEntryType_CASH_RATE = 'X';
+  const char MDEntryType_CLOSING = '5';
+  const char MDEntryType_OPENING = '4';
+  const char MDEntryType_OPENING_PRICE = '4';
+  const char MDEntryType_TRADINGHIGH = '7';
+  const char MDEntryType_TRADEVOLUME = 'B';
+  const char MDEntryType_TRADE = '2';
+  const char MDEntryType_CUMULATIVE_VALUE_ADJUSTMENT_FOR_SHORT_POSITIONS = 'V';
+  const char MDEntryType_SIMULATED_SELL_PRICE = 'E';
+  const char MDEntryType_EMPTY_BOOK = 'J';
+  const char MDEntryType_AUCTION_CLEARING_PRICE = 'Q';
+  const char MDEntryType_BID = '0';
+  const char MDEntryType_RECOVERY_RATE_FOR_SHORT = 'a';
+  const char MDEntryType_SIMULATED_BUY_PRICE = 'F';
+  const char MDEntryType_EARLY_PRICES = 'P';
+  const char MDEntryType_TRADINGLOW = '8';
+  const char MDEntryType_TRADING_SESSION_HIGH_PRICE = '7';
+  const char MDEntryType_INDEX_VALUE = '3';
+  const char MDEntryType_RECOVERY_RATE_FOR_LONG = 'Z';
+  const char MDEntryType_DAILY_VALUE_ADJUSTMENT_FOR_LONG_POSITIONS = 'R';
+  const char MDEntryType_MID_PRICE = 'H';
+  const char MDEntryType_SETTLEMENT = '6';
+  const char MDEntryType_RECOVERY_RATE = 'Y';
+  const char MDEntryType_CUMULATIVE_VALUE_ADJUSTMENT_FOR_LONG_POSITIONS = 'T';
+  const char MDEntryType_DAILY_VALUE_ADJUSTMENT_FOR_SHORT_POSITIONS = 'U';
+  const char MDEntryType_TRADE_VOLUME = 'B';
+  const char MDEntryType_MARGIN_RATE = 'G';
+  const char MDEntryType_SETTLE_LOW_PRICE = 'L';
+  const char MDEntryType_SESSION_LOW_OFFER = 'O';
+  const char MDEntryType_TRADINGVWAP = '9';
+  const char MDEntryType_SETTLEMENT_PRICE = '6';
+  const char MDEntryType_OFFER = '1';
+  const int PegMoveType_FLOATING = 0;
+  const int PegMoveType_FIXED = 1;
+  const int AvgPxIndicator_NOAVERAGEPRICING = 0;
+  const int AvgPxIndicator_NO_AVERAGE_PRICING = 0;
+  const int AvgPxIndicator_LASTTRADEAVERAGEPRICEGROUP = 2;
+  const int AvgPxIndicator_TRADE_IS_PART_OF_AN_AVERAGE_PRICE_GROUP_IDENTIFIED_BY_THE_TRADELINKID = 1;
+  const int AvgPxIndicator_TRADEAVERAGEPRICEGROUP = 1;
+  const int AvgPxIndicator_LAST_TRADE_IS_THE_AVERAGE_PRICE_GROUP_IDENTIFIED_BY_THE_TRADELINKID = 2;
+  const char CancellationRights_NO_WAIVER_AGREEMENT = 'M';
+  const char CancellationRights_NO_M = 'M';
+  const char CancellationRights_NO_N = 'N';
+  const char CancellationRights_NOINSTIT = 'O';
+  const char CancellationRights_NO_INSTITUTIONAL = 'O';
+  const char CancellationRights_YES = 'Y';
+  const char CancellationRights_NO_O = 'O';
+  const char CancellationRights_NOEXECONLY = 'N';
+  const char CancellationRights_NO_EXECUTION_ONLY = 'N';
+  const char CancellationRights_NOWAIVER = 'M';
+  const char ExecPriceType_CREATIONPRICEADJAMT = 'E';
+  const char ExecPriceType_CREATION_PRICE = 'C';
+  const char ExecPriceType_CREATIONPRICE = 'C';
+  const char ExecPriceType_SINGLEPRICE = 'S';
+  const char ExecPriceType_CREATION_PRICE_PLUS_ADJUSTMENT_PERCENT = 'D';
+  const char ExecPriceType_OFFERPRICE = 'O';
+  const char ExecPriceType_BIDPRICE = 'B';
+  const char ExecPriceType_OFFER_PRICE_MINUS_ADJUSTMENT = 'P';
+  const char ExecPriceType_CREATIONPRICEADJPCT = 'D';
+  const char ExecPriceType_OFFER_PRICE_MINUS_ADJUSTMENT_AMOUNT = 'Q';
+  const char ExecPriceType_OFFERPRICEMINUSADJAMT = 'Q';
+  const char ExecPriceType_CREATION_PRICE_PLUS_ADJUSTMENT_AMOUNT = 'E';
+  const char ExecPriceType_OFFER_PRICE_MINUS_ADJUSTMENT_PERCENT = 'P';
+  const char ExecPriceType_OFFERPRICEMINUSADJPCT = 'P';
+  const char ExecPriceType_BID_PRICE = 'B';
+  const char ExecPriceType_SINGLE_PRICE = 'S';
+  const char ExecPriceType_CREATION_PRICE_PLUS_ADJUSTMENT = 'D';
+  const char ExecPriceType_OFFER_PRICE = 'O';
+  const int AllocSettlInstType_PHONEFORINSTRUCTIONS = 4;
+  const int AllocSettlInstType_SSIDBIDSPROVIDED = 3;
+  const int AllocSettlInstType_FULLDETAILSPROVIDED = 2;
+  const int AllocSettlInstType_USEDEFAULTINSTRUCTIONS = 0;
+  const int AllocSettlInstType_SSI_DB_IDS_PROVIDED = 3;
+  const int AllocSettlInstType_PHONE_FOR_INSTRUCTIONS = 4;
+  const int AllocSettlInstType_DERIVE_FROM_PARAMETERS_PROVIDED = 1;
+  const int AllocSettlInstType_FULL_DETAILS_PROVIDED = 2;
+  const int AllocSettlInstType_USE_DEFAULT_INSTRUCTIONS = 0;
+  const int AllocSettlInstType_DERIVEFROMPARAMETERSPROVIDED = 1;
+  const int StatsType_AVERAGE_PRICE = 3;
+  const int StatsType_HIGH = 2;
+  const int StatsType_EXCHANGE_LAST = 1;
+  const int StatsType_TURNOVER = 4;
+  const int TradSesMode_SIMULATED = 2;
+  const int TradSesMode_PRODUCTION = 3;
+  const int TradSesMode_TESTING = 1;
+  const char SettlInstSource_INSTITUTIONS_INSTRUCTIONS = '2';
+  const char SettlInstSource_BROKERS_INSTRUCTIONS = '1';
+  const char SettlInstSource_INVESTORCIV = '3';
+  const char SettlInstSource_INVESTOR = '3';
+  const char SettlInstSource_INSTINSTR = '2';
+  const char SettlInstSource_BROKERINSTR = '1';
+  const int ExpType_DIFFERENCE = 5;
+  const int ExpType_FINAL_WILL_BE_EXERCISED = 3;
+  const int ExpType_NON_AUTO_EXERCISE = 2;
+  const int ExpType_CONTRARY_INTENTION = 4;
+  const int ExpType_AUTO_EXERCISE = 1;
+  const char SettlInstTransType_REPLACE = 'R';
+  const char SettlInstTransType_NEW = 'N';
+  const char SettlInstTransType_RESTATE = 'T';
+  const char SettlInstTransType_CANCEL = 'C';
+  const int TradeRequestResult_TRADEREQUESTTYPENOTSUPPORTED = 8;
+  const int TradeRequestResult_INVALIDORUNKNOWNINSTRUMENT = 1;
+  const int TradeRequestResult_INVALID_DESTINATION_REQUESTED = 5;
+  const int TradeRequestResult_UNAUTHORIZED_ROR_TRADE_CAPTURE_REPORT_REQUEST = 9;
+  const int TradeRequestResult_INVALIDTRANSPORTTYPEREQUESTED = 4;
+  const int TradeRequestResult_INVALIDPARTIES = 3;
+  const int TradeRequestResult_INVALIDDESTINATIONREQUESTED = 5;
+  const int TradeRequestResult_SUCCESSFUL = 0;
+  const int TradeRequestResult_INVALID_OR_UNKNOWN_INSTRUMENT = 1;
+  const int TradeRequestResult_OTHER = 99;
+  const int TradeRequestResult_INVALID_TYPE_OF_TRADE_REQUESTED = 2;
+  const int TradeRequestResult_INVALID_PARTIES = 3;
+  const int TradeRequestResult_UNAUTHORIZEDFORTRADECAPTUREREPORTREQUEST = 9;
+  const int TradeRequestResult_NOT_AUTHORIZED = 9;
+  const int TradeRequestResult_INVALID_TRANSPORT_TYPE_REQUESTED = 4;
+  const int TradeRequestResult_INVALIDTYPEOFTRADEREQUESTED = 2;
+  const int TradeRequestResult_TRADEREQUESTTYPE_NOT_SUPPORTED = 8;
+  const char TestMessageIndicator_NO = 'N';
+  const char TestMessageIndicator_YES = 'Y';
+  const int ExpirationCycle_TRADING_ELIGIBILITY_EXPIRATION_SPECIFIED_IN_THE_DATE_AND_TIME_FIELDS_EVENTDATE = 2;
+  const int ExpirationCycle_EXPIREONTRADINGSESSIONOPEN = 1;
+  const int ExpirationCycle_EXPIRE_ON_TRADING_SESSION_CLOSE = 0;
+  const int ExpirationCycle_EXPIRE_ON_TRADING_SESSION_OPEN = 1;
+  const int ExpirationCycle_EXPIREONTRADINGSESSIONCLOSE = 0;
+  const int AllocCancReplaceReason_ORIGINALDETAILSINCORRECT = 1;
+  const int AllocCancReplaceReason_CHANGE_IN_UNDERLYING_ORDER_DETAILS = 2;
+  const int AllocCancReplaceReason_OTHER = 99;
+  const int AllocCancReplaceReason_ORIGINAL_DETAILS_INCOMPLETE_INCORRECT = 1;
+  const int AllocCancReplaceReason_CHANGEINUNDERLYINGORDERDETAILS = 2;
+  const int CxlRejReason_DUPLICATE_CLORDID = 6;
+  const int CxlRejReason_UNABLETOPROCESS = 4;
+  const int CxlRejReason_PRICE_EXCEEDS_CURRENT_PRICE = 7;
+  const int CxlRejReason_DUPCLORDID = 6;
+  const int CxlRejReason_DUPLICATE_CLORDID_RECEIVED = 6;
+  const int CxlRejReason_UNKNOWN_ORDER = 1;
+  const int CxlRejReason_TOO_LATE_TO_CANCEL = 0;
+  const int CxlRejReason_TOOLATE = 0;
+  const int CxlRejReason_ORIGORDMODTIME = 5;
+  const int CxlRejReason_INVALID_PRICE_INCREMENT = 18;
+  const int CxlRejReason_BROKEROPT = 2;
+  const int CxlRejReason_ALREADYPENDINGCXL = 3;
+  const int CxlRejReason_OTHER = 99;
+  const int CxlRejReason_BROKER = 2;
+  const int CxlRejReason_BROKER_OPTION = 2;
+  const int CxlRejReason_UNABLE_TO_PROCESS_ORDER_MASS_CANCEL_REQUEST = 4;
+  const int CxlRejReason_ORDER_ALREADY_IN_PENDING_CANCEL_OR_PENDING_REPLACE_STATUS = 3;
+  const int CxlRejReason_PRICE_EXCEEDS_CURRENT_PRICE_BAND = 8;
+  const int CxlRejReason_ORIGORDMODTIMEMISMATCH = 5;
+  const int CxlRejReason_ORIGORDMODTIME_DID_NOT_MATCH_LAST_TRANSACTTIME_OF_ORDER = 5;
+  const int CxlRejReason_UNKNOWN = 1;
+  const int RespondentType_SPECIFIED_MARKET_PARTICIPANTS = 2;
+  const int RespondentType_ALL_MARKET_MAKERS = 3;
+  const int RespondentType_ALL_MARKET_PARTICIPANTS = 1;
+  const int RespondentType_PRIMARY_MARKET_MAKER = 4;
+  const char DKReason_NO_MATCHING_ORDER = 'D';
+  const char DKReason_UNKNOWNSYMBOL = 'A';
+  const char DKReason_PRICE_EXCEEDS_LIMIT = 'E';
+  const char DKReason_QUANTITYEXCEEDSORDER = 'C';
+  const char DKReason_QUANTITY_EXCEEDS_ORDER = 'C';
+  const char DKReason_UNKNOWN_SYMBOL = 'A';
+  const char DKReason_OTHER = 'Z';
+  const char DKReason_WRONGSIDE = 'B';
+  const char DKReason_CALCULATIONDIFFERENCE = 'F';
+  const char DKReason_PRICEEXCEEDSLIMIT = 'E';
+  const char DKReason_WRONG_SIDE = 'B';
+  const char DKReason_CALCULATION_DIFFERENCE = 'F';
+  const char DKReason_NOMATCH = 'D';
+  const char PositionEffect_DEFAULT = 'D';
+  const char PositionEffect_CLOSE = 'C';
+  const char PositionEffect_CLOSE_BUT_NOTIFY_ON_OPEN = 'N';
+  const char PositionEffect_OPEN = 'O';
+  const char PositionEffect_FIFO = 'F';
+  const char PositionEffect_ROLLED = 'R';
+  const char TriggerAction_ACTIVATE = '1';
+  const char TriggerAction_MODIFY = '2';
+  const char TriggerAction_CANCEL = '3';
+  const int ClearingInstruction_BILATERALNETTINGONLY = 2;
+  const int ClearingInstruction_SPECIALTRADE = 4;
+  const int ClearingInstruction_EXCLUDE_FROM_ALL_NETTING = 1;
+  const int ClearingInstruction_AUTOMATIC_POSTING_MODE = 9;
+  const int ClearingInstruction_EXCLEARING = 3;
+  const int ClearingInstruction_MULTILATERAL_NETTING = 5;
+  const int ClearingInstruction_CLEARAGAINSTCENTRALCOUNTERPARTY = 6;
+  const int ClearingInstruction_EXCLUDE_FROM_CENTRAL_COUNTERPARTY = 7;
+  const int ClearingInstruction_AUTOMATIC_GIVE_UP_MODE = 10;
+  const int ClearingInstruction_CUSTOMER_TRADE = 12;
+  const int ClearingInstruction_AUTOMATICPOSTINGMODETRADEPOSTINGTOTHEPOSITIONACCOUNTNUMBERSPECIFIED = 9;
+  const int ClearingInstruction_EX_CLEARING = 3;
+  const int ClearingInstruction_QUALIFIEDSERVICEREPRESENTATIVEQSR = 11;
+  const int ClearingInstruction_MULTILATERALNETTING = 5;
+  const int ClearingInstruction_PROCESSNORMALLY = 0;
+  const int ClearingInstruction_EXCLUDEFROMALLNETTING = 1;
+  const int ClearingInstruction_SELFCLEARING = 13;
+  const int ClearingInstruction_CLEAR_AGAINST_CENTRAL_COUNTERPARTY = 6;
+  const int ClearingInstruction_BILATERAL_NETTING_ONLY = 2;
+  const int ClearingInstruction_EXCLUDEFROMCENTRALCOUNTERPARTY = 7;
+  const int ClearingInstruction_MANUALMODEPREPOSTINGANDORPREGIVEUP = 8;
+  const int ClearingInstruction_CUSTOMERTRADE = 12;
+  const int ClearingInstruction_PROCESS_NORMALLY = 0;
+  const int ClearingInstruction_SPECIAL_TRADE = 4;
+  const int ClearingInstruction_MANUAL_MODE = 8;
+  const int ClearingInstruction_QUALIFIED_SERVICE_REPRESENTATIVE_QSR = 11;
+  const int ClearingInstruction_AUTOMATICGIVEUPMODETRADEGIVEUPTOTHEGIVEUPDESTINATIONNUMBERSPECIFIED = 10;
+  const int ClearingInstruction_SELF_CLEARING = 13;
+  const char OpenCloseSettlFlag_SESSION_OPEN = '1';
+  const char OpenCloseSettlFlag_EXPECTED_ENTRY = '3';
+  const char OpenCloseSettlFlag_THEORETICALPRICE = '5';
+  const char OpenCloseSettlFlag_ENTRYFROMPREVBUSINESSDAY = '4';
+  const char OpenCloseSettlFlag_DAILY_OPEN = '0';
+  const char OpenCloseSettlFlag_DAILYOPEN = '0';
+  const char OpenCloseSettlFlag_THEORETICAL_PRICE_VALUE = '5';
+  const char OpenCloseSettlFlag_DELIVERY_SETTLEMENT_ENTRY = '2';
+  const char OpenCloseSettlFlag_ENTRY_FROM_PREVIOUS_BUSINESS_DAY = '4';
+  const char OpenCloseSettlFlag_DELIVERYSETTLEMENT = '2';
+  const char OpenCloseSettlFlag_SESSIONOPEN = '1';
+  const char OpenCloseSettlFlag_EXPECTEDENTRY = '3';
+  const int DiscretionMoveType_FLOATING = 0;
+  const int DiscretionMoveType_FIXED = 1;
+  const int MDUpdateType_INCREMENTAL_REFRESH = 1;
+  const int MDUpdateType_FULL_REFRESH = 0;
+  const int MDUpdateType_FULL = 0;
+  const int MDUpdateType_INCREMENTAL = 1;
+  const char TickDirection_MINUS_TICK = '2';
+  const char TickDirection_ZERO_PLUS_TICK = '1';
+  const char TickDirection_ZERO_MINUS_TICK = '3';
+  const char TickDirection_PLUS_TICK = '0';
+  const char TickDirection_PLUS = '0';
+  const char TickDirection_ZEROPLUS = '1';
+  const char TickDirection_MINUS = '2';
+  const char TickDirection_ZEROMINUS = '3';
+  const char YieldType_MARK_TO_MARKET_YIELD[] = "MARK";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_QUARTER[] = "LASTQUARTER";
+  const char YieldType_YIELD_TO_MATURITY[] = "MATURITY";
+  const char YieldType_YIELDTOTENDERDATE[] = "TENDER";
+  const char YieldType_PREVIOUS_CLOSE_YIELD[] = "PREVCLOSE";
+  const char YieldType_COMPOUND_YIELD_THE_YIELD_OF_CERTAIN_JAPANESE_BONDS_BASED_ON_ITS_PRICE_CERTAIN_JAPANESE_BONDS_HAVE_IRREGULAR_FIRST_OR_LAST_COUPONS_AND_THE_YIELD_IS_CALCULATED_COMPOUND_FOR_THESE_IRREGULAR_PERIODS[] = "COMPOUND";
+  const char YieldType_YIELDTOSHORTESTAVERAGELIFE[] = "SHORTAVGLIFE";
+  const char YieldType_YIELD_AT_ISSUE[] = "ATISSUE";
+  const char YieldType_YIELD_TO_NEXT_REFUND[] = "NEXTREFUND";
+  const char YieldType_YIELDATISSUE[] = "ATISSUE";
+  const char YieldType_CLOSINGYIELD[] = "CLOSE";
+  const char YieldType_GVNTEQUIVALENTYIELD[] = "GOVTEQUIV";
+  const char YieldType_ANNUALYIELD[] = "ANNUAL";
+  const char YieldType_AFTER_TAX_YIELD[] = "AFTERTAX";
+  const char YieldType_GVNT_EQUIVALENT_YIELD[] = "GOVTEQUIV";
+  const char YieldType_YIELDCHANGESINCECLOSE[] = "CHANGE";
+  const char YieldType_YIELDTOMATURITY[] = "MATURITY";
+  const char YieldType_YIELD_TO_SHORTEST_AVERAGE_LIFE_SAME_AS_AVGLIFE_ABOVE[] = "SHORTAVGLIFE";
+  const char YieldType_YIELD_CHANGE_SINCE_CLOSE_THE_CHANGE_IN_THE_YIELD_SINCE_THE_PREVIOUS_DAYS_CLOSING_YIELD[] = "CHANGE";
+  const char YieldType_SEMI[] = "SEMIANNUAL";
+  const char YieldType_CURRENT_YIELD_ANNUAL_INTEREST_ON_A_BOND_DIVIDED_BY_THE_MARKET_VALUE_THE_ACTUAL_INCOME_RATE_OF_RETURN_AS_OPPOSED_TO_THE_COUPON_RATE_EXPRESSED_AS_A_PERCENTAGE[] = "CURRENT";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_YEAR[] = "LASTYEAR";
+  const char YieldType_YIELD_TO_NEXT_CALL[] = "CALL";
+  const char YieldType_YIELD_CHANGE_SINCE_CLOSE[] = "CHANGE";
+  const char YieldType_PROCEEDS_YIELD[] = "PROCEEDS";
+  const char YieldType_YIELD_TO_MATURITY_THE_YIELD_OF_A_BOND_TO_ITS_MATURITY_DATE[] = "MATURITY";
+  const char YieldType_TAX_EQUIVALENT_YIELD_THE_AFTER_TAX_YIELD_GROSSED_UP_BY_THE_MAXIMUM_FEDERAL_TAX_RATE_OF_396_FOR_COMPARISON_TO_TAXABLE_YIELDS[] = "TAXEQUIV";
+  const char YieldType_INVERSE_FLOATER_BOND_YIELD_INVERSE_FLOATER_SEMI_ANNUAL_BOND_EQUIVALENT_RATE[] = "INVERSEFLOATER";
+  const char YieldType_CURRENT_YIELD[] = "CURRENT";
+  const char YieldType_SIMPLEYIELD[] = "SIMPLE";
+  const char YieldType_TRUEGROSSYIELD[] = "GROSS";
+  const char YieldType_COMPOUND_YIELD[] = "COMPOUND";
+  const char YieldType_CLOSINGYIELDMOSTRECENTYEAR[] = "LASTYEAR";
+  const char YieldType_BOOK_YIELD_THE_YIELD_OF_A_SECURITY_CALCULATED_BY_USING_ITS_BOOK_VALUE_INSTEAD_OF_THE_CURRENT_MARKET_PRICE_THIS_TERM_IS_TYPICALLY_USED_IN_THE_US_DOMESTIC_MARKET[] = "BOOK";
+  const char YieldType_YIELD_TO_NEXT_PUT_THE_YIELD_TO_THE_DATE_AT_WHICH_THE_BOND_HOLDER_CAN_NEXT_PUT_THE_BOND_TO_THE_ISSUER[] = "PUT";
+  const char YieldType_GOVERNMENT_EQUIVALENT_YIELD_ASK_YIELD_BASED_ON_SEMI_ANNUAL_COUPONS_COMPOUNDING_IN_ALL_PERIODS_AND_ACTUAL_ACTUAL_CALENDAR[] = "GOVTEQUIV";
+  const char YieldType_YIELD_TO_TENDER_DATE_THE_YIELD_ON_A_MUNICIPAL_BOND_TO_ITS_MANDATORY_TENDER_DATE[] = "TENDER";
+  const char YieldType_YIELD_TO_AVG_MATURITY[] = "AVGMATURITY";
+  const char YieldType_YIELD_TO_TENDER_DATE[] = "TENDER";
+  const char YieldType_PROCEEDSYIELD[] = "PROCEEDS";
+  const char YieldType_OPEN_AVERAGE_YIELD_THE_AVERAGE_YIELD_OF_THE_RESPECTIVE_SECURITIES_IN_THE_PORTFOLIO[] = "OPENAVG";
+  const char YieldType_ANNUAL_YIELD[] = "ANNUAL";
+  const char YieldType_YIELD_TO_WORST[] = "WORST";
+  const char YieldType_BOOK_YIELD[] = "BOOK";
+  const char YieldType_YIELD_TO_NEXT_PUT[] = "PUT";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_MONTH_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE_AS_OF_THE_MOST_RECENT_MONTHS_END[] = "LASTMONTH";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_YEAR_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE_AS_OF_THE_MOST_RECENT_YEARS_END[] = "LASTYEAR";
+  const char YieldType_OPENAVERAGEYIELD[] = "OPENAVG";
+  const char YieldType_TRUE_YIELD[] = "TRUE";
+  const char YieldType_TAX_EQUIVALENT_YIELD[] = "TAXEQUIV";
+  const char YieldType_TRUE_GROSS_YIELD[] = "GROSS";
+  const char YieldType_INVERSE_FLOATER_BOND_YIELD[] = "INVERSEFLOATER";
+  const char YieldType_TRUE_YIELD_THE_YIELD_CALCULATED_WITH_COUPON_DATES_MOVED_FROM_A_WEEKEND_OR_HOLIDAY_TO_THE_NEXT_VALID_SETTLEMENT_DATE[] = "TRUE";
+  const char YieldType_SEMI_ANNUAL_YIELD_THE_YIELD_OF_A_BOND_WHOSE_COUPON_PAYMENTS_ARE_REINVESTED_SEMI_ANNUALLY[] = "SEMIANNUAL";
+  const char YieldType_AFTERTAXYIELD[] = "AFTERTAX";
+  const char YieldType_CLOSING_YIELD_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE[] = "CLOSE";
+  const char YieldType_YIELDTOWORSTCONVENTION[] = "WORST";
+  const char YieldType_PREVIOUS_CLOSE_YIELD_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE_1_DAY_AGO[] = "PREVCLOSE";
+  const char YieldType_COMPOUNDYIELD[] = "COMPOUND";
+  const char YieldType_YIELD_VALUE_OF_1_32_THE_AMOUNT_THAT_THE_YIELD_WILL_CHANGE_FOR_A_1_32ND_CHANGE_IN_PRICE[] = "VALUE1/32";
+  const char YieldType_YIELD_TO_LONGEST_AVERAGE[] = "LONGEST";
+  const char YieldType_PREVIOUSCLOSEYIELD[] = "PREVCLOSE";
+  const char YieldType_CLOSINGYIELDMOSTRECENTMONTH[] = "LASTMONTH";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_MONTH[] = "LASTMONTH";
+  const char YieldType_YIELD_TO_AVERAGE_LIFE_THE_YIELD_ASSUMING_THAT_ALL_SINKS[] = "AVGLIFE";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_QUARTER_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE_AS_OF_THE_MOST_RECENT_QUARTERS_END[] = "LASTQUARTER";
+  const char YieldType_YIELD_TO_SHORTEST_AVERAGE[] = "SHORTEST";
+  const char YieldType_TAXEQUIVALENTYIELD[] = "TAXEQUIV";
+  const char YieldType_MOSTRECENTCLOSINGYIELD[] = "LASTCLOSE";
+  const char YieldType_MARKTOMARKETYIELD[] = "MARK";
+  const char YieldType_CURRENTYIELD[] = "CURRENT";
+  const char YieldType_OPEN_AVERAGE_YIELD[] = "OPENAVG";
+  const char YieldType_TRUE_GROSS_YIELD_YIELD_CALCULATED_USING_THE_PRICE_INCLUDING_ACCRUED_INTEREST_WHERE_COUPON_DATES_ARE_MOVED_FROM_HOLIDAYS_AND_WEEKENDS_TO_THE_NEXT_TRADING_DAY[] = "GROSS";
+  const char YieldType_YIELD_WITH_INFLATION_ASSUMPTION[] = "INFLATION";
+  const char YieldType_YIELDTONEXTREFUNDSINKING[] = "NEXTREFUND";
+  const char YieldType_PROCEEDS_YIELD_THE_CD_EQUIVALENT_YIELD_WHEN_THE_REMAINING_TIME_TO_MATURITY_IS_LESS_THAN_TWO_YEARS[] = "PROCEEDS";
+  const char YieldType_YIELD_TO_LONGEST_AVERAGE_LIFE_THE_YIELD_ASSUMING_ONLY_MANDATORY_SINKS_ARE_TAKEN_THIS_RESULTS_IN_A_LOWER_PAYDOWN_OF_DEBT_THE_YIELD_IS_THEN_CALCULATED_TO_THE_FINAL_PAYMENT_DATE[] = "LONGAVGLIFE";
+  const char YieldType_MARK_TO_MARKET_YIELD_AN_ADJUSTMENT_IN_THE_VALUATION_OF_A_SECURITIES_PORTFOLIO_TO_REFLECT_THE_CURRENT_MARKET_VALUES_OF_THE_RESPECTIVE_SECURITIES_IN_THE_PORTFOLIO[] = "MARK";
+  const char YieldType_SIMPLE_YIELD[] = "SIMPLE";
+  const char YieldType_YIELD_TO_AVERAGE_MATURITY[] = "AVGMATURITY";
+  const char YieldType_YIELD_TO_WORST_CONVENTION_THE_LOWEST_YIELD_TO_ALL_POSSIBLE_REDEMPTION_DATE_SCENARIOS[] = "WORST";
+  const char YieldType_YIELD_TO_NEXT_CALL_THE_YIELD_OF_A_BOND_TO_THE_NEXT_POSSIBLE_CALL_DATE[] = "CALL";
+  const char YieldType_YIELDTOAVGMATURITY[] = "AVGMATURITY";
+  const char YieldType_YIELDTOLONGESTAVERAGELIFE[] = "LONGAVGLIFE";
+  const char YieldType_ANNUAL_YIELD_THE_ANNUAL_INTEREST_OR_DIVIDEND_INCOME_AN_INVESTMENT_EARNS_EXPRESSED_AS_A_PERCENTAGE_OF_THE_INVESTMENTS_TOTAL_VALUE[] = "ANNUAL";
+  const char YieldType_SEMI_ANNUAL_YIELD[] = "SEMIANNUAL";
+  const char YieldType_MOST_RECENT_CLOSING_YIELD[] = "LASTCLOSE";
+  const char YieldType_YIELD_TO_SHORTEST_AVERAGE_LIFE[] = "SHORTAVGLIFE";
+  const char YieldType_CLOSING_YIELD[] = "CLOSE";
+  const char YieldType_YIELDINFLATIONASSUMPTION[] = "INFLATION";
+  const char YieldType_YIELD_WITH_INFLATION_ASSUMPTION_BASED_ON_PRICE_THE_RETURN_AN_INVESTOR_WOULD_REQUIRE_ON_A_NORMAL_BOND_THAT_WOULD_MAKE_THE_REAL_RETURN_EQUAL_TO_THAT_OF_THE_INFLATION_INDEXED_BOND_ASSUMING_A_CONSTANT_INFLATION_RATE[] = "INFLATION";
+  const char YieldType_TRUEYIELD[] = "TRUE";
+  const char YieldType_CLOSINGYIELDMOSTRECENTQUARTER[] = "LASTQUARTER";
+  const char YieldType_YIELD_VALUE_OF_1_32[] = "VALUE1_32";
+  const char YieldType_YIELD_TO_LONGEST_AVERAGE_LIFE[] = "LONGAVGLIFE";
+  const char YieldType_INVFLOATERBONDYIELD[] = "INVERSEFLOATER";
+  const char YieldType_MOST_RECENT_CLOSING_YIELD_THE_LAST_AVAILABLE_YIELD_STORED_IN_HISTORY_COMPUTED_USING_PRICE[] = "LASTCLOSE";
+  const char YieldType_YIELDTONEXTPUT[] = "PUT";
+  const char YieldType_YIELDTONEXTCALL[] = "CALL";
+  const char YieldType_SIMPLE_YIELD_THE_YIELD_OF_A_BOND_ASSUMING_NO_REINVESTMENT_OF_COUPON_PAYMENTS[] = "SIMPLE";
+  const char YieldType_BOOKYIELD[] = "BOOK";
+  const char YieldType_YIELDVALUEOF132[] = "VALUE1_32";
+  const int PegScope_NATIONAL_XXCLUDING_LOCAL = 4;
+  const int PegScope_NATIONAL_EXCLUDING_LOCAL = 4;
+  const int PegScope_LOCAL = 1;
+  const int PegScope_NATIONALEXCLUDINGLOCAL = 4;
+  const int PegScope_GLOBAL = 3;
+  const int PegScope_NATIONAL = 2;
+  const int PegScope_LOCALEXCHANGEECNATS = 1;
+  const int SettlDeliveryType_TRI_PARTY = 2;
+  const int SettlDeliveryType_HOLD_IN_CUSTODY = 3;
+  const int SettlDeliveryType_FREE = 1;
+  const int SettlDeliveryType_VERSUS_PAYMENT_DELIVER = 0;
+  const int SettlDeliveryType_FREE_DELIVER = 1;
+  const int SettlDeliveryType_VERSUS_PAYMENT = 0;
+  const int DiscretionLimitType_STRICT = 1;
+  const int DiscretionLimitType_ORWORSE = 2;
+  const int DiscretionLimitType_OR_BETTER = 0;
+  const int DiscretionLimitType_OR_WORSE = 2;
+  const int DiscretionLimitType_ORBETTER = 0;
+  const int PartyDetailsRequestResult_UNSUPPORTED_PARTYLISTRESPONSETYPE = 3;
+  const int PartyDetailsRequestResult_PARTIES_OR_PARTY_DETAILS_DATA_TEMPORARILY_UNAVAILABLE = 5;
+  const int PartyDetailsRequestResult_VALID_REQUEST = 0;
+  const int PartyDetailsRequestResult_REQUEST_FOR_PARTIES_DATA_NOT_SUPPORTED = 6;
+  const int PartyDetailsRequestResult_NO_PARTIES_OR_PARTY_DETAILS_FOUND_THAT_MATCH_SELECTION_CRITERIA = 2;
+  const int PartyDetailsRequestResult_INVALID_OR_UNSUPPORTED_REQUEST = 1;
+  const int PartyDetailsRequestResult_OTHER = 99;
+  const int PartyDetailsRequestResult_NOT_AUTHORIZED_TO_RETRIEVE_PARTIES_OR_PARTY_DETAILS_DATA = 4;
+  const char ExerciseMethod_AUTOMATIC = 'A';
+  const char ExerciseMethod_MANUAL = 'M';
+  const char WorkingIndicator_NO = 'N';
+  const char WorkingIndicator_YES = 'Y';
+  const int SideMultiLegReportingType_INDIVIDUALLEGOFAMULTILEGSECURITY = 2;
+  const int SideMultiLegReportingType_SINGLE_SECURITY = 1;
+  const int SideMultiLegReportingType_MULTILEG_SECURITY = 3;
+  const int SideMultiLegReportingType_INDIVIDUAL_LEG_OF_A_MULTILEG_SECURITY = 2;
+  const int SideMultiLegReportingType_MULTILEGSECURITY = 3;
+  const int SideMultiLegReportingType_SINGLESECURITY = 1;
+  const int ConfirmRejReason_MISSINGSETTLEMENTINSTRUCTIONS = 2;
+  const int ConfirmRejReason_MISSING_SETTLEMENT_INSTRUCTIONS = 2;
+  const int ConfirmRejReason_MISMATCHEDACCOUNT = 1;
+  const int ConfirmRejReason_MISMATCHED_ACCOUNT = 1;
+  const int ConfirmRejReason_OTHER = 99;
+  const char BidRequestTransType_NEW = 'N';
+  const char BidRequestTransType_NO = 'N';
+  const char BidRequestTransType_CANCEL = 'C';
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_SECURITY = 1;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_SECURITY_GROUP = 9;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_ISSUER_OF_UNDERLYING_SECURITY = 11;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_SECURITYTYPE = 5;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_CFICODE = 4;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_UNDERLYING_SECURITY = 2;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_TRADING_SESSION = 6;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_MARKET_SEGMENT = 8;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_MARKET = 7;
+  const int MassActionRejectReason_MASS_ACTION_NOT_SUPPORTED = 0;
+  const int MassActionRejectReason_OTHER = 99;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_SECURITY_ISSUER = 10;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_PRODUCT = 3;
+  const int CollApplType_GENERAL = 1;
+  const int CollApplType_SPECIFIC_DEPOSIT = 0;
+  const int ConfirmType_CONFIRMATION = 2;
+  const int ConfirmType_CONFIRMATION_REQUEST_REJECTED = 3;
+  const int ConfirmType_CONFIRMATIONREQUESTREJECTED = 3;
+  const int ConfirmType_STATUS = 1;
+  const int MDQuoteType_INDICATIVE = 0;
+  const int MDQuoteType_RESTRICTED_TRADEABLE = 2;
+  const int MDQuoteType_INDICATIVE_AND_TRADEABLE = 4;
+  const int MDQuoteType_TRADEABLE = 1;
+  const int MDQuoteType_COUNTER = 3;
+  const int QtyType_CONTRACTS = 1;
+  const int QtyType_UNITS_OF_MEASURE_PER_TIME_UNIT = 2;
+  const int QtyType_UNITS = 0;
+  const int QuoteRespType_END_TRADE = 7;
+  const int QuoteRespType_HITLIFT = 1;
+  const int QuoteRespType_HIT_LIFT = 1;
+  const int QuoteRespType_COVER = 4;
+  const int QuoteRespType_DONE_AWAY = 5;
+  const int QuoteRespType_DONEAWAY = 5;
+  const int QuoteRespType_TIMED_OUT = 8;
+  const int QuoteRespType_PASS = 6;
+  const int QuoteRespType_EXPIRED = 3;
+  const int QuoteRespType_COUNTER = 2;
+  const char IOINaturalFlag_NO = 'N';
+  const char IOINaturalFlag_YES = 'Y';
+  const char SettlObligSource_INSTRUCTIONS_OF_BROKER = '1';
+  const char SettlObligSource_INVESTOR = '3';
+  const char SettlObligSource_INSTRUCTIONS_FOR_INSTITUTION = '2';
+  const int TrdSubType_ON_HOURS_TRADE = 34;
+  const int TrdSubType_INTERIM_PROTECTED_TRADE = 38;
+  const int TrdSubType_K = 16;
+  const int TrdSubType_LC = 17;
+  const int TrdSubType_WN = 31;
+  const int TrdSubType_CONVERTED_SWAP = 36;
+  const int TrdSubType_B = 15;
+  const int TrdSubType_M = 18;
+  const int TrdSubType_RT = 28;
+  const int TrdSubType_ONSET_DUE_TO_AN_ALLOCATION = 6;
+  const int TrdSubType_CMTA = 0;
+  const int TrdSubType_INTERNAL_TRANSFER_OR_ADJUSTMENT = 1;
+  const int TrdSubType_DIFFERENTIAL_SPREAD = 7;
+  const int TrdSubType_TRANSACTION_FROM_EXERCISE = 9;
+  const int TrdSubType_TRANSACTION_FROM_ASSIGNMENT = 10;
+  const int TrdSubType_N = 19;
+  const int TrdSubType_IMPLIED_SPREAD_LEG_EXECUTED_AGAINST_AN_OUTRIGHT = 8;
+  const int TrdSubType_NR = 21;
+  const int TrdSubType_SW = 29;
+  const int TrdSubType_OTC_QUOTE = 35;
+  const int TrdSubType_ADVISORY_FOR_CONTRA_SIDE = 4;
+  const int TrdSubType_OFFSET_DUE_TO_AN_ALLOCATION = 5;
+  const int TrdSubType_P = 22;
+  const int TrdSubType_CROSSED_TRADE = 37;
+  const int TrdSubType_PA = 23;
+  const int TrdSubType_EXTERNAL_TRANSFER_OR_TRANSFER_OF_ACCOUNT = 2;
+  const int TrdSubType_R = 26;
+  const int TrdSubType_RO = 27;
+  const int TrdSubType_WT = 32;
+  const int TrdSubType_OFF_HOURS_TRADE = 33;
+  const int TrdSubType_REJECT_FOR_SUBMITTING_SIDE = 3;
+  const int TrdSubType_ONSET_DUT_TO_AN_ALLOCATION = 6;
+  const int TrdSubType_AI = 14;
+  const int TrdSubType_PC = 24;
+  const int TrdSubType_PN = 25;
+  const int TrdSubType_LARGE_IN_SCALE = 39;
+  const int TrdSubType_NM = 20;
+  const int TrdSubType_T = 30;
+  const int TrdSubType_ACATS = 11;
+  const char ExecTransType_NEW = '0';
+  const char ExecTransType_CORRECT = '2';
+  const char ExecTransType_CANCEL = '1';
+  const char ExecTransType_STATUS = '3';
+  const char DayBookingInst_CAN_TRIGGER_BOOKING_WITHOUT_REFERENCE_TO_THE_ORDER_INITIATOR = '0';
+  const char DayBookingInst_ACCUMULATE = '2';
+  const char DayBookingInst_SPEAK_WITH_ORDER_INITIATOR_BEFORE_BOOKING_SPEAK_FIRST = '1';
+  const char DayBookingInst_CAN_TRIGGER_BOOKING_WITHOUT_REFERENCE_TO_THE_ORDER_INITIATOR_AUTO = '0';
+  const char DayBookingInst_SPEAK_WITH_ORDER_INITIATOR_BEFORE_BOOKING = '1';
+  const int FlowScheduleType_NERC_EASTERN_OFF_PEAK = 0;
+  const int FlowScheduleType_NERC_WESTERN_PEAK = 4;
+  const int FlowScheduleType_NERC_EASTERN_PEAK = 3;
+  const int FlowScheduleType_NERC_CALENDAR_ALL_DAYS_IN_MONTH = 2;
+  const int FlowScheduleType_NERC_WESTERN_OFF_PEAK = 1;
+  const int MDOriginType_CROSS = 2;
+  const int MDOriginType_OFF_BOOK = 1;
+  const int MDOriginType_BOOK = 0;
+  const int CollInquiryStatus_ACCEPTED_WITH_WARNINGS = 1;
+  const int CollInquiryStatus_COMPLETED = 2;
+  const int CollInquiryStatus_ACCEPTEDWITHWARNINGS = 1;
+  const int CollInquiryStatus_REJECTED = 4;
+  const int CollInquiryStatus_COMPLETEDWITHWARNINGS = 3;
+  const int CollInquiryStatus_ACCEPTED = 0;
+  const int CollInquiryStatus_COMPLETED_WITH_WARNINGS = 3;
+  const int CPProgram_3A3 = 1;
+  const int CPProgram_OTHER = 99;
+  const int CPProgram_3 = 1;
+  const int CPProgram_42 = 2;
+  const int CPProgram_4 = 2;
+  const int PosReqType_POSITIONS = 0;
+  const int PosReqType_BACKOUT_MESSAGE = 5;
+  const int PosReqType_DELTA_POSITIONS = 6;
+  const int PosReqType_SETTLEMENT_ACTIVITY = 4;
+  const int PosReqType_TRADES = 1;
+  const int PosReqType_EXERCISES = 2;
+  const int PosReqType_ASSIGNMENTS = 3;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_AN_UNDERLYING_SECURITY = 2;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_SECURITY = 1;
+  const int MassStatusReqType_STATUSSECURITYTYPE = 5;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_CFICODE = 4;
+  const int MassStatusReqType_STATUSTRDSESSION = 6;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_PARTYID = 8;
+  const int MassStatusReqType_STATUS_FOR_SECURITY_ISSUER = 9;
+  const int MassStatusReqType_STATUSCFICODE = 4;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_TRADING_SESSION = 6;
+  const int MassStatusReqType_STATUSUNDERLYINGSECURITY = 2;
+  const int MassStatusReqType_STATUSPARTYID = 8;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_PRODUCT = 3;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_SECURITYTYPE = 5;
+  const int MassStatusReqType_STATUS_FOR_ALL_ORDERS = 7;
+  const int MassStatusReqType_STATUS_FOR_ISSUER_OF_UNDERLYING_SECURITY = 10;
+  const int MassStatusReqType_STATUSSECURITY = 1;
+  const int MassStatusReqType_STATUSPRODUCT = 3;
+  const int MassStatusReqType_STATUSALLORDERS = 7;
+  const char SubscriptionRequestType_DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST = '2';
+  const char SubscriptionRequestType_SNAPSHOT_PLUS_UPDATES = '1';
+  const char SubscriptionRequestType_SNAPSHOTUPDATE = '1';
+  const char SubscriptionRequestType_SNAPSHOT = '0';
+  const char SubscriptionRequestType_UNSUBSCRIBE = '2';
+  const int NewsCategory_MARKETPLACE_NEWS = 1;
+  const int NewsCategory_TECHNICAL_NEWS = 3;
+  const int NewsCategory_COMPANY_NEWS = 0;
+  const int NewsCategory_OTHER_NEWS = 99;
+  const int NewsCategory_FINANCIAL_MARKET_NEWS = 2;
+  const char IOIQty_MEDIUM[] = "M";
+  const char IOIQty_1000000000[] = "0";
+  const char IOIQty_LARGE[] = "L";
+  const char IOIQty_SMALL[] = "S";
+  const char IOIQty_UNDISCLOSED_QUANTITY[] = "U";
+  const int ApplResponseError_USER_NOT_AUTHORIZED_FOR_APPLICATION = 2;
+  const int ApplResponseError_APPLICATION_DOES_NOT_EXIST = 0;
+  const int ApplResponseError_MESSAGES_REQUESTED_ARE_NOT_AVAILABLE = 1;
+  const char TriggerPriceDirection_TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_DOWN_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE = 'D';
+  const char TriggerPriceDirection_TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_UP_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE = 'U';
+  const int LastLiquidityInd_ADDEDLIQUIDITY = 1;
+  const int LastLiquidityInd_LIQUIDITY_ROUTED_OUT = 3;
+  const int LastLiquidityInd_LIQUIDITYROUTEDOUT = 3;
+  const int LastLiquidityInd_AUCTION = 4;
+  const int LastLiquidityInd_REMOVEDLIQUIDITY = 2;
+  const int LastLiquidityInd_ADDED_LIQUIDITY = 1;
+  const int LastLiquidityInd_REMOVED_LIQUIDITY = 2;
+  const int StrikePriceDeterminationMethod_STRIKE_SET_TO_AVERAGE_OF_UNDERLYING_SETTLEMENT_PRICE_ACROSS_THE_LIFE_OF_THE_OPTION = 3;
+  const int StrikePriceDeterminationMethod_STRIKE_SET_AT_EXPIRATION_TO_UNDERLYING_OR_OTHER_VALUE = 2;
+  const int StrikePriceDeterminationMethod_FIXED_STRIKE = 1;
+  const int StrikePriceDeterminationMethod_STRIKE_SET_TO_OPTIMAL_VALUE = 4;
+  const int TargetStrategy_MININIZEMARKETIMPACT = 3;
+  const int TargetStrategy_RESERVEDANDAVAILABLEFORBILATERALLYAGREEDUPONUSERDEFINEDVALUES = 1000;
+  const int TargetStrategy_PARTICIPATE = 2;
+  const int TargetStrategy_MININIZE_MARKET_IMPACT = 3;
+  const int TargetStrategy_VWAP = 1;
+  const char DueToRelated_NO = 'N';
+  const char DueToRelated_YES = 'Y';
+  const char UnderlyingCashType_DIFF[] = "DIFF";
+  const char UnderlyingCashType_FIXED[] = "FIXED";
+  const int CustOrderCapacity_CLEARING_FIRM_TRADING_FOR_ITS_PROPRIETARY_ACCOUNT = 2;
+  const int CustOrderCapacity_MEMBER_TRADING_FOR_THEIR_OWN_ACCOUNT = 1;
+  const int CustOrderCapacity_MEMBER_TRADING_FOR_ANOTHER_MEMBER = 3;
+  const int CustOrderCapacity_ALL_OTHER = 4;
+  const char OwnershipType_JOINT_TRUSTEES = '2';
+  const char OwnershipType_JOINT_INVESTORS = 'J';
+  const char OwnershipType_TENANTS_IN_COMMON = 'T';
+  const char UnitOfMeasure_US_DOLLARS[] = "USD";
+  const char UnitOfMeasure_TROY_OUNCES[] = "oz_tr";
+  const char UnitOfMeasure_TONS[] = "tn";
+  const char UnitOfMeasure_BILLION_CUBIC_FEET[] = "Bcf";
+  const char UnitOfMeasure_ONE_MILLION_BTU[] = "MMBtu";
+  const char UnitOfMeasure_MEGAWATT_HOURS[] = "MWh";
+  const char UnitOfMeasure_MILLION_BARRELS[] = "MMbbl";
+  const char UnitOfMeasure_GALLONS[] = "Gal";
+  const char UnitOfMeasure_BARRELS[] = "Bbl";
+  const char UnitOfMeasure_POUNDS[] = "lbs";
+  const char UnitOfMeasure_METRIC_TONS[] = "t";
+  const char UnitOfMeasure_ALLOWANCES[] = "Alw";
+  const char UnitOfMeasure_BUSHELS[] = "Bu";
+  const int SecDefStatus_INVALID_DEFINITION_REQUEST = 4;
+  const int SecDefStatus_PENDING_APPROVAL = 0;
+  const int SecDefStatus_APPROVED = 1;
+  const int SecDefStatus_UNAUTHORIZEDREQUEST = 3;
+  const int SecDefStatus_PENDINGAPPROVAL = 0;
+  const int SecDefStatus_UNAUTHORIZED_REQUEST = 3;
+  const int SecDefStatus_INVALIDDEFINITIONREQUEST = 4;
+  const int SecDefStatus_APPROVEDACCEPTED = 1;
+  const int SecDefStatus_REJECTED = 2;
+  const char SettlmntTyp_WHEN_AND_IF_ISSUED = '7';
+  const char SettlmntTyp_T_PLUS_1 = 'A';
+  const char SettlmntTyp_FUTURE = '6';
+  const char SettlmntTyp_SELLERS_OPTION = '8';
+  const char SettlmntTyp_T_PLUS_2 = '3';
+  const char SettlmntTyp_T_PLUS_3 = '4';
+  const char SettlmntTyp_T_PLUS_4 = '5';
+  const char SettlmntTyp_REGULAR = '0';
+  const char SettlmntTyp_T_PLUS_5 = '9';
+  const char SettlmntTyp_WHEN_ISSUED = '7';
+  const char SettlmntTyp_NEXT_DAY = '2';
+  const char SettlmntTyp_CASH = '1';
+  const int TradePublishIndicator_DO_NOT_PUBLISH_TRADE = 0;
+  const int TradePublishIndicator_DEFERRED_PUBLICATION = 2;
+  const int TradePublishIndicator_PUBLISH_TRADE = 1;
+  const int ApplResponseType_MESSAGES_NOT_AVAILABLE = 2;
+  const int ApplResponseType_APPLICATION_DOES_NOT_EXIST = 1;
+  const int ApplResponseType_REQUEST_SUCCESSFULLY_PROCESSED = 0;
+  const int StandInstDbType_SID = 1;
+  const int StandInstDbType_DTC_SID = 1;
+  const int StandInstDbType_CUSTODIAN = 3;
+  const int StandInstDbType_ALERT = 2;
+  const int StandInstDbType_ACCOUNTNET = 4;
+  const int StandInstDbType_A_GLOBAL_CUSTODIAN = 3;
+  const int StandInstDbType_THOMSON_ALERT = 2;
+  const int StandInstDbType_OTHER = 0;
+  const int QuoteEntryStatus_CROSS_MARKET_WARNING = 13;
+  const int QuoteEntryStatus_LOCKED_MARKET_WARNING = 12;
+  const int QuoteEntryStatus_CANCELED_DUE_TO_CROSS_MARKET = 15;
+  const int QuoteEntryStatus_CANCELED_DUE_TO_LOCK_MARKET = 14;
+  const int QuoteEntryStatus_REJECTED = 5;
+  const int QuoteEntryStatus_EXPIRED = 7;
+  const int QuoteEntryStatus_REMOVED_FROM_MARKET = 6;
+  const int QuoteEntryStatus_ACCEPTED = 0;
+  const int QuoteEntryStatus_ACTIVE = 16;
+  const char TriggerPriceType_BEST_MID = '6';
+  const char TriggerPriceType_BEST_BID_OR_LAST_TRADE = '4';
+  const char TriggerPriceType_BEST_BID = '3';
+  const char TriggerPriceType_BEST_OFFER_OR_LAST_TRADE = '5';
+  const char TriggerPriceType_BEST_OFFER = '1';
+  const char TriggerPriceType_LAST_TRADE = '2';
+  const int SideTrdSubTyp_EXTERNAL_TRANSFER = 2;
+  const int SideTrdSubTyp_TRANSACTION_FROM_ASSIGNMENT = 10;
+  const int SideTrdSubTyp_TRANSACTION_FROM_EXERCISE = 9;
+  const int SideTrdSubTyp_DIFFERENTIAL_SPREAD = 7;
+  const int SideTrdSubTyp_ONSET_DUE_TO_AN_ALLOCATION = 6;
+  const int SideTrdSubTyp_REJECT_FOR_SUBMITTING_TRADE = 3;
+  const int SideTrdSubTyp_CMTA = 0;
+  const int SideTrdSubTyp_IMPLIED_SPREAD_LEG_EXECUTED_AGAINST_AN_OUTRIGHT = 8;
+  const int SideTrdSubTyp_INTERNAL_TRANSFER = 1;
+  const int SideTrdSubTyp_OFFSET_DUE_TO_AN_ALLOCATION = 5;
+  const int SideTrdSubTyp_ADVISORY_FOR_CONTRA_SIDE = 4;
+  const int SettlInstReqRejCode_UNABLE_TO_PROCESS_REQUEST = 0;
+  const int SettlInstReqRejCode_NOMATCHINGSETTLEMENTINSTRUCTIONSFOUND = 2;
+  const int SettlInstReqRejCode_UNKNOWNACCOUNT = 1;
+  const int SettlInstReqRejCode_UNABLETOPROCESSREQUEST = 0;
+  const int SettlInstReqRejCode_UNKNOWN_ACCOUNT = 1;
+  const int SettlInstReqRejCode_NO_MATCHING_SETTLEMENT_INSTRUCTIONS_FOUND = 2;
+  const int SettlInstReqRejCode_OTHER = 99;
+  const char Urgency_FLASH = '1';
+  const char Urgency_NORMAL = '0';
+  const char Urgency_BACKGROUND = '2';
+  const int CollAsgnTransType_REPLACE = 1;
+  const int CollAsgnTransType_NEW = 0;
+  const int CollAsgnTransType_REVERSE = 4;
+  const int CollAsgnTransType_CANCEL = 2;
+  const int CollAsgnTransType_RELEASE = 3;
+  const int PaymentMethod_FED_WIRE = 7;
+  const int PaymentMethod_ACHCREDIT = 13;
+  const int PaymentMethod_TELEGRAPHICTRANSFER = 6;
+  const int PaymentMethod_DIRECTDEBITBECS = 9;
+  const int PaymentMethod_EUROCLEAR = 3;
+  const int PaymentMethod_ACH_CREDIT = 13;
+  const int PaymentMethod_TELEGRAPHIC_TRANSFER = 6;
+  const int PaymentMethod_FEDWIRE = 7;
+  const int PaymentMethod_CREDITCARD = 11;
+  const int PaymentMethod_DIRECT_DEBIT = 9;
+  const int PaymentMethod_CREDIT_CARD = 11;
+  const int PaymentMethod_CHEQUE = 5;
+  const int PaymentMethod_DIRECT_CREDIT = 10;
+  const int PaymentMethod_CREST = 1;
+  const int PaymentMethod_HIGH_VALUE_CLEARING_SYSTEM = 15;
+  const int PaymentMethod_DEBITCARD = 8;
+  const int PaymentMethod_CLEARSTREAM = 4;
+  const int PaymentMethod_BPAY = 14;
+  const int PaymentMethod_HIGHVALUECLEARINGSYSTEMHVACS = 15;
+  const int PaymentMethod_NSCC = 2;
+  const int PaymentMethod_DEBIT_CARD = 8;
+  const int PaymentMethod_ACHDEBIT = 12;
+  const int PaymentMethod_DIRECTCREDITBECS = 10;
+  const int PaymentMethod_ACH_DEBIT = 12;
+  const char TriggerPriceTypeScope_LOCAL = '1';
+  const char TriggerPriceTypeScope_NONE = '0';
+  const char TriggerPriceTypeScope_GLOBAL = '3';
+  const char TriggerPriceTypeScope_NATIONAL = '2';
+  const int PegLimitType_STRICT = 1;
+  const int PegLimitType_ORWORSE = 2;
+  const int PegLimitType_OR_BETTER = 0;
+  const int PegLimitType_OR_WORSE = 2;
+  const int PegLimitType_ORBETTER = 0;
+  const char Side_BORROW = 'G';
+  const char Side_SELLPLUS = '4';
+  const char Side_BUY_MINUS = '3';
+  const char Side_BUYMIN = '3';
+  const char Side_ASDEFINED = 'B';
+  const char Side_SUBSCRIBE = 'D';
+  const char Side_CROSS_SHORT_EXEMPT = 'A';
+  const char Side_UNDISCLOSED = '7';
+  const char Side_SELLSHT = '5';
+  const char Side_SELLSHTEX = '6';
+  const char Side_CROSSSHORTEX = 'A';
+  const char Side_CROSS = '8';
+  const char Side_SELL_SHORT_EXEMPT = '6';
+  const char Side_UNDISC = '7';
+  const char Side_CROSSSHORT = '9';
+  const char Side_BORROWFINANCING = 'G';
+  const char Side_BUY = '1';
+  const char Side_CROSS_SHORT_EXXMPT = 'A';
+  const char Side_SELL = '2';
+  const char Side_LEND = 'F';
+  const char Side_SELL_SHORT = '5';
+  const char Side_OPPOSITE = 'C';
+  const char Side_CROSS_SHORT = '9';
+  const char Side_SELL_PLUS = '4';
+  const char Side_REDEEM = 'E';
+  const char Side_LENDFINANCING = 'F';
+  const char Side_AS_DEFINED = 'B';
+  const int ContAmtType_COMMISSIONAMT = 1;
+  const int ContAmtType_FUNDBASEDRENEWALCOMM = 11;
+  const int ContAmtType_INITIALCHARGEPCT = 4;
+  const int ContAmtType_EXITCHARGEAMT = 9;
+  const int ContAmtType_EXIT_CHARGE = 10;
+  const int ContAmtType_DILUTION_LEVY_AMOUNT = 7;
+  const int ContAmtType_DILUTION_LEVY_PERCENT = 8;
+  const int ContAmtType_DISCOUNT_AMOUNT = 5;
+  const int ContAmtType_COMMISSION = 2;
+  const int ContAmtType_INITIAL_CHARGE_PERCENT = 4;
+  const int ContAmtType_DILUTIONLEVYAMT = 7;
+  const int ContAmtType_DILUTION_LEVY = 8;
+  const int ContAmtType_COMMISSION_AMOUNT = 1;
+  const int ContAmtType_NET_SETTLEMENT_AMOUNT = 15;
+  const int ContAmtType_EXITCHARGEPCT = 10;
+  const int ContAmtType_COMMISSIONPCT = 2;
+  const int ContAmtType_FUND_BASED_RENEWAL_COMMISSION = 11;
+  const int ContAmtType_DISCOUNT = 6;
+  const int ContAmtType_FUNDBASEDRENEWALCOMMAMTORD = 13;
+  const int ContAmtType_DISCOUNTPCT = 6;
+  const int ContAmtType_FUND_BASED_RENEWAL_COMMISSION_AMOUNT_13 = 13;
+  const int ContAmtType_EXIT_CHARGE_AMOUNT = 9;
+  const int ContAmtType_INITIAL_CHARGE = 4;
+  const int ContAmtType_EXIT_CHARGE_PERCENT = 10;
+  const int ContAmtType_DISCOUNT_PERCENT = 6;
+  const int ContAmtType_INITIALCHARGEAMT = 3;
+  const int ContAmtType_DILUTIONLEVYPCT = 8;
+  const int ContAmtType_FUND_BASED_RENEWAL_COMMISSION_AMOUNT_14 = 14;
+  const int ContAmtType_FUNDBASEDRENEWALCOMMAMTPROJ = 14;
+  const int ContAmtType_NETSETTLEMENTAMOUNT = 15;
+  const int ContAmtType_PROJECTEDFUNDVALUE = 12;
+  const int ContAmtType_DISCOUNTAMT = 5;
+  const int ContAmtType_FUND_BASED_RENEWAL_COMMISSION_PERCENT = 11;
+  const int ContAmtType_COMMISSION_PERCENT = 2;
+  const int ContAmtType_PROJECTED_FUND_VALUE = 12;
+  const int ContAmtType_INITIAL_CHARGE_AMOUNT = 3;
+  const char OrderCategory_IMPLIED_ORDER = '7';
+  const char OrderCategory_STREAMING_PRICE = '9';
+  const char OrderCategory_QUOTE_REQUEST = '6';
+  const char OrderCategory_CROSS_ORDER = '8';
+  const char OrderCategory_MULTILEG_ORDER = '4';
+  const char OrderCategory_PRIVATELY_NEGOTIATED_TRADE = '3';
+  const char OrderCategory_QUOTE = '2';
+  const char OrderCategory_ORDER = '1';
+  const char OrderCategory_LINKED_ORDER = '5';
+  const char AdvTransType_REPLACE[] = "R";
+  const char AdvTransType_NEW[] = "N";
+  const char AdvTransType_ADVCANCEL[] = "C";
+  const char AdvTransType_ADVREPLACE[] = "R";
+  const char AdvTransType_ADVNEW[] = "N";
+  const char AdvTransType_CANCEL[] = "C";
+  const char PublishTrdIndicator_NO = 'N';
+  const char PublishTrdIndicator_YES = 'Y';
+  const int SecurityResponseType_ACCPTSECPROPREV = 2;
+  const int SecurityResponseType_SECLISTTYPESRET = 3;
+  const int SecurityResponseType_LIST_OF_SECURITIES_RETURNED_PER_REQUEST = 4;
+  const int SecurityResponseType_LIST_OF_SECURITY_TYPES_RETURNED_PER_REQUEST = 3;
+  const int SecurityResponseType_ACCEPT_SECURITY_PROPOSAL_WITH_REVISIONS_AS_INDICATED_IN_THE_MESSAGE = 2;
+  const int SecurityResponseType_ACCEPT_SECURITY_PROPOSAL_AS_IS = 1;
+  const int SecurityResponseType_ACCPTSECPROP = 1;
+  const int SecurityResponseType_REJECT_SECURITY_PROPOSAL = 5;
+  const int SecurityResponseType_SECLISTRET = 4;
+  const int SecurityResponseType_REJSECPROP = 5;
+  const int SecurityResponseType_CAN_NOT_MATCH_SELECTION_CRITERIA = 6;
+  const int SecurityResponseType_CANNOT_MATCH_SELECTION_CRITERIA = 6;
+  const int SecurityResponseType_NOMATCH = 6;
+  const int SessionStatus_PASSWORD_EXPIRED = 8;
+  const int SessionStatus_SESSION_LOGOUT_COMPLETE = 4;
+  const int SessionStatus_INVALID_USERNAME_OR_PASSWORD = 5;
+  const int SessionStatus_SESSION_ACTIVE = 0;
+  const int SessionStatus_SESSION_PASSWORD_CHANGED = 1;
+  const int SessionStatus_ACCOUNT_LOCKED = 6;
+  const int SessionStatus_LOGONS_ARE_NOT_ALLOWED_AT_THIS_TIME = 7;
+  const int SessionStatus_SESSION_PASSWORD_DUE_TO_EXPIRE = 2;
+  const int SessionStatus_NEW_SESSION_PASSWORD_DOES_NOT_COMPLY_WITH_POLICY = 3;
+  const int AllocAccountType_JBO = 8;
+  const int AllocAccountType_HOUSE_TRADER = 3;
+  const int AllocAccountType_ACCOUNT_IS_CARRIED_ON_NON_CUSTOMER_SIDE_OF_BOOKS = 2;
+  const int AllocAccountType_FLOOR_TRADER = 4;
+  const int AllocAccountType_ACCOUNTISHOUSETRADERANDISCROSSMARGINED = 7;
+  const int AllocAccountType_ACCOUNTISCARRIEDONCUSTOMERSIDEOFBOOKS = 1;
+  const int AllocAccountType_JOINT_BACK_OFFICE_ACCOUNT = 8;
+  const int AllocAccountType_ACCOUNTISCARRIEDONNONCUSTOMERSIDEOFBOOKSANDISCROSSMARGINED = 6;
+  const int AllocAccountType_HOUSETRADER = 3;
+  const int AllocAccountType_FLOORTRADER = 4;
+  const int AllocAccountType_ACCOUNT_IS_CARRIED_ON_NON_CUSTOMER_SIDE_OF_BOOKS_AND_IS_CROSS_MARGINED = 6;
+  const int AllocAccountType_ACCOUNT_IS_CARRIED_PN_CUSTOMER_SIDE_OF_BOOKS = 1;
+  const int AllocAccountType_ACCOUNTISCARRIEDONNONCUSTOMERSIDEOFBOOKS = 2;
+  const int AllocAccountType_ACCOUNT_IS_HOUSE_TRADER_AND_IS_CROSS_MARGINED = 7;
+  const char AllocTransType_REPLACE = '1';
+  const char AllocTransType_NEW = '0';
+  const char AllocTransType_CALCULATED = '4';
+  const char AllocTransType_PRELIMINARY = '3';
+  const char AllocTransType_CALCULATEDWITHOUTPRELIMINARY = '5';
+  const char AllocTransType_CANCEL = '2';
+  const char AllocTransType_REVERSAL = '6';
+  const char AllocTransType_CALCULATED_WITHOUT_PRELIMINARY = '5';
+  const int ExpirationQtyType_DIFFERENCE = 5;
+  const int ExpirationQtyType_FINAL_WILL_BE_EXERCISED = 3;
+  const int ExpirationQtyType_NON_AUTO_EXERCISE = 2;
+  const int ExpirationQtyType_CONTRARY_INTENTION = 4;
+  const int ExpirationQtyType_AUTO_EXERCISE = 1;
+  const int AllocHandlInst_FORWARDMATCH = 3;
+  const int AllocHandlInst_FORWARD_AND_MATCH = 3;
+  const int AllocHandlInst_FORWARD = 2;
+  const int AllocHandlInst_MATCH = 1;
+  const int TradeRequestStatus_COMPLETED = 1;
+  const int TradeRequestStatus_REJECTED = 2;
+  const int TradeRequestStatus_ACCEPTED = 0;
+  const char PreallocMethod_DO_NOT_PRO_RATA_DISCUSS_FIRST = '1';
+  const char PreallocMethod_PRO_RATA = '0';
+  const char PreallocMethod_DO_NOT_PRORATA_DISCUSS_FIRST = '1';
+  const char PreallocMethod_DO_NOT_PRO_RATA = '1';
+  const char PreallocMethod_PRORATA = '0';
+  const int TaxAdvantageType_ROTHIRANONPROTOTYPEUS = 25;
+  const int TaxAdvantageType_INDIVIDUALRETIREMENTACCOUNTROLLOVERUS = 17;
+  const int TaxAdvantageType_PROFITSHARINGPLANUS = 19;
+  const int TaxAdvantageType_SELF_DIRECTED_IRA = 21;
+  const int TaxAdvantageType_401 = 20;
+  const int TaxAdvantageType_EMPLOYER_11 = 11;
+  const int TaxAdvantageType_457US = 23;
+  const int TaxAdvantageType_EMPLOYER_12 = 12;
+  const int TaxAdvantageType_MINI_CASH_ISA = 3;
+  const int TaxAdvantageType_MINI_STOCKS_AND_SHARES_ISA = 4;
+  const int TaxAdvantageType_ROTH_CONVERSION_IRA_26 = 26;
+  const int TaxAdvantageType_EMPLOYEE = 9;
+  const int TaxAdvantageType_SELFDIRECTEDIRAUS = 21;
+  const int TaxAdvantageType_403 = 22;
+  const int TaxAdvantageType_NON_FUND_PROTOTYPE_IRA = 13;
+  const int TaxAdvantageType_NONFUNDPROTOTYPEIRAUS = 13;
+  const int TaxAdvantageType_ROTH_CONVERSION_IRA_27 = 27;
+  const int TaxAdvantageType_ROTHCONVERSIONIRANONPROTOTYPEUS = 27;
+  const int TaxAdvantageType_MINI_INSURANCE_ISA = 5;
+  const int TaxAdvantageType_ROTHCONVERSIONIRAFUNDPROTOTYPEUS = 26;
+  const int TaxAdvantageType_EDUCATIONIRAFUNDPROTOTYPEUS = 28;
+  const int TaxAdvantageType_MAXIISAUK = 1;
+  const int TaxAdvantageType_INDIVIDUAL_RETIREMENT_ACCOUNT_ROLLOVER = 17;
+  const int TaxAdvantageType_NONFUNDQUALIFIEDPLANUS = 14;
+  const int TaxAdvantageType_EMPLOYER_CURRENT_YEAR = 12;
+  const int TaxAdvantageType_PRIORYEARPAYMENTUS = 7;
+  const int TaxAdvantageType_TESSAUK = 2;
+  const int TaxAdvantageType_CURRENTYEARPAYMENTUS = 6;
+  const int TaxAdvantageType_EDUCATIONIRANONPROTOTYPEUS = 29;
+  const int TaxAdvantageType_INDIVIDUALRETIREMENTACCOUNTUS = 16;
+  const int TaxAdvantageType_KEOGHUS = 18;
+  const int TaxAdvantageType_EDUCATION_IRA_28 = 28;
+  const int TaxAdvantageType_PROFIT_SHARING_PLAN = 19;
+  const int TaxAdvantageType_NON_FUND_QUALIFIED_PLAN = 14;
+  const int TaxAdvantageType_ROTHIRAFUNDPROTOTYPEUS = 24;
+  const int TaxAdvantageType_EDUCATION_IRA_29 = 29;
+  const int TaxAdvantageType_EMPLOYEE_10 = 10;
+  const int TaxAdvantageType_EMPLOYEE_9 = 9;
+  const int TaxAdvantageType_EMPLOYEE_CURRENT_YEAR = 10;
+  const int TaxAdvantageType_MAXI_ISA = 1;
+  const int TaxAdvantageType_MINIINSURANCEISAUK = 5;
+  const int TaxAdvantageType_PRIOR_YEAR_PAYMENT = 7;
+  const int TaxAdvantageType_DEFINED_CONTRIBUTION_PLAN = 15;
+  const int TaxAdvantageType_401K = 20;
+  const int TaxAdvantageType_403BUS = 22;
+  const int TaxAdvantageType_MINICASHISAUK = 3;
+  const int TaxAdvantageType_ROTH_IRA_24 = 24;
+  const int TaxAdvantageType_MINISTOCKSANDSHARESISAUK = 4;
+  const int TaxAdvantageType_OTHER = 999;
+  const int TaxAdvantageType_EMPLOYERCURRENTYEARUS = 12;
+  const int TaxAdvantageType_ASSET_TRANSFER = 8;
+  const int TaxAdvantageType_ROTH_IRA_25 = 25;
+  const int TaxAdvantageType_KEOGH = 18;
+  const int TaxAdvantageType_DEFINEDCONTRIBUTIONPLANUS = 15;
+  const int TaxAdvantageType_401KUS = 20;
+  const int TaxAdvantageType_TESSA = 2;
+  const int TaxAdvantageType_NONE_NOT_APPLICABLE = 0;
+  const int TaxAdvantageType_NONE = 0;
+  const int TaxAdvantageType_457 = 23;
+  const int TaxAdvantageType_EMPLOYEEPRIORYEARUS = 9;
+  const int TaxAdvantageType_EMPLOYERPRIORYEARUS = 11;
+  const int TaxAdvantageType_EMPLOYER = 11;
+  const int TaxAdvantageType_EMPLOYEECURRENTYEARUS = 10;
+  const int TaxAdvantageType_INDIVIDUAL_RETIREMENT_ACCOUNT_16 = 16;
+  const int TaxAdvantageType_INDIVIDUAL_RETIREMENT_ACCOUNT = 16;
+  const int TaxAdvantageType_INDIVIDUAL_RETIREMENT_ACCOUNT_17 = 17;
+  const int TaxAdvantageType_CURRENT_YEAR_PAYMENT = 6;
+  const int TaxAdvantageType_ASSETTRANSFERUS = 8;
+  const char MessageEncoding_EUC_JP[] = "EUC-JP";
+  const char MessageEncoding_SHIFT_JIS[] = "SHIFT_JIS";
+  const char MessageEncoding_UTF_8[] = "UTF-8";
+  const char MessageEncoding_ISO_2022_JP[] = "ISO-2022-JP";
+  const char TimeInForce_GOOD_TILL_CROSSING = '5';
+  const char TimeInForce_FILL_OR_KILL = '4';
+  const char TimeInForce_GOOD_TILL_DATE = '6';
+  const char TimeInForce_ATTHEOPENING = '2';
+  const char TimeInForce_FILLORKILL = '4';
+  const char TimeInForce_GOODTILLDATE = '6';
+  const char TimeInForce_GOODTILLCANCEL = '1';
+  const char TimeInForce_ATTHECLOSE = '7';
+  const char TimeInForce_GOOD_TILL_CANCEL = '1';
+  const char TimeInForce_DAY = '0';
+  const char TimeInForce_AT_CROSSING = '9';
+  const char TimeInForce_IMMEDIATEORCANCEL = '3';
+  const char TimeInForce_IMMEDIATE_OR_CANCEL = '3';
+  const char TimeInForce_GOODTILLCROSSING = '5';
+  const char TimeInForce_GOOD_THROUGH_CROSSING = '8';
+  const char TimeInForce_AT_THE_CLOSE = '7';
+  const char TimeInForce_AT_THE_OPENING = '2';
+  const char IOIQualifier_AON = 'A';
+  const char IOIQualifier_THROUGH_THE_DAY = 'T';
+  const char IOIQualifier_INDIDCATION = 'W';
+  const char IOIQualifier_MOC = 'B';
+  const char IOIQualifier_READYTRADE = 'R';
+  const char IOIQualifier_ATMID = 'Y';
+  const char IOIQualifier_INDWRKAWAY = 'W';
+  const char IOIQualifier_AT_THE_MARKET = 'Q';
+  const char IOIQualifier_AT_THE_MIDPOINT = 'Y';
+  const char IOIQualifier_CROSSING_OPPORTUNITY = 'X';
+  const char IOIQualifier_CURRENT_QUOTE = 'Q';
+  const char IOIQualifier_IN_TOUCH_WITH = 'I';
+  const char IOIQualifier_ALL_OR_NONE = 'A';
+  const char IOIQualifier_THROUGHDAY = 'T';
+  const char IOIQualifier_TAKING_A_POSITION = 'P';
+  const char IOIQualifier_AT_THE_OPEN = 'O';
+  const char IOIQualifier_TAKEPOSITION = 'P';
+  const char IOIQualifier_PORTFOLIO_SHOW_N = 'S';
+  const char IOIQualifier_INTOUCH = 'I';
+  const char IOIQualifier_MOREBEHIND = 'M';
+  const char IOIQualifier_ATMARKET = 'Q';
+  const char IOIQualifier_CROSSOPP = 'X';
+  const char IOIQualifier_PREOPEN = 'Z';
+  const char IOIQualifier_ATCLOSE = 'C';
+  const char IOIQualifier_MARKET_ON_CLOSE = 'B';
+  const char IOIQualifier_VERSUS = 'V';
+  const char IOIQualifier_LIMIT = 'L';
+  const char IOIQualifier_PORTFOLIO_SHOWN = 'S';
+  const char IOIQualifier_READY_TO_TRADE = 'R';
+  const char IOIQualifier_PRE_OPEN = 'Z';
+  const char IOIQualifier_INDICATION = 'W';
+  const char IOIQualifier_MORE_BEHIND = 'M';
+  const char IOIQualifier_ATOPEN = 'O';
+  const char IOIQualifier_VWAP = 'D';
+  const char IOIQualifier_PORTSHOW = 'S';
+  const char IOIQualifier_AT_THE_CLOSE = 'C';
+  const int StrikePriceBoundaryMethod_GREATER_THAN_OR_EQUAL_TO_UNDERLYING_PRICE_IS_IN_THE_MONEY = 4;
+  const int StrikePriceBoundaryMethod_GREATER_THAN_UNDERLYING_IS_IN_THE_MONEY = 5;
+  const int StrikePriceBoundaryMethod_LESS_THAN_OR_EQUAL_TO_THE_UNDERLYING_PRICE_IS_IN_THE_MONEY = 2;
+  const int StrikePriceBoundaryMethod_LESS_THAN_UNDERLYING_PRICE_IS_IN_THE_MONEY = 1;
+  const int StrikePriceBoundaryMethod_EQUAL_TO_THE_UNDERLYING_PRICE_IS_IN_THE_MONEY = 3;
+  const char MiscFeeType_CONVERSION[] = "11";
+  const char MiscFeeType_CONSUMPTION_TAX[] = "9";
+  const char MiscFeeType_LOCAL_COMMISSION[] = "3";
+  const char MiscFeeType_TAX[] = "2";
+  const char MiscFeeType_LOCALCOMM[] = "3";
+  const char MiscFeeType_MARKUP[] = "8";
+  const char MiscFeeType_SECURITY_LENDING[] = "14";
+  const char MiscFeeType_PER_TRANSACTION[] = "10";
+  const char MiscFeeType_REGULATORY[] = "1";
+  const char MiscFeeType_EXCHFEE[] = "4";
+  const char MiscFeeType_CONSUMPTION[] = "9";
+  const char MiscFeeType_STAMP[] = "5";
+  const char MiscFeeType_TRANSFER_FEE[] = "13";
+  const char MiscFeeType_AGENT[] = "12";
+  const char MiscFeeType_OTHER[] = "7";
+  const char MiscFeeType_TRANSACTION[] = "10";
+  const char MiscFeeType_REG[] = "1";
+  const char MiscFeeType_EXCHANGE_FEES[] = "4";
+  const char MiscFeeType_LEVY[] = "6";
+  const char SecurityIDSource_CLEARING_HOUSE[] = "H";
+  const char SecurityIDSource_OPTION_PRICE_REPORTING_AUTHORITY[] = "J";
+  const char SecurityIDSource_EXCHANGE_SYMBOL[] = "8";
+  const char SecurityIDSource_SICOVAM[] = "E";
+  const char SecurityIDSource_ISDA_FPML_PRODUCT_SPECIFICATION[] = "I";
+  const char SecurityIDSource_ISDA_FPML_PRODUCT_URL[] = "K";
+  const char SecurityIDSource_RIC[] = "5";
+  const char SecurityIDSource_CLEARINGHOUSE[] = "H";
+  const char SecurityIDSource_FPML[] = "I";
+  const char SecurityIDSource_RIC_CODE[] = "5";
+  const char SecurityIDSource_ISOCURR[] = "6";
+  const char SecurityIDSource_ISO_CURRENCY_CODE[] = "6";
+  const char SecurityIDSource_COMMON[] = "G";
+  const char SecurityIDSource_VALOREN[] = "D";
+  const char SecurityIDSource_BELGIAN[] = "F";
+  const char SecurityIDSource_CTA[] = "9";
+  const char SecurityIDSource_ISIN_NUMBER[] = "4";
+  const char SecurityIDSource_ISIN[] = "4";
+  const char SecurityIDSource_ISOCOUNTRY[] = "7";
+  const char SecurityIDSource_SEDOL[] = "2";
+  const char SecurityIDSource_ISO_COUNTRY_CODE[] = "7";
+  const char SecurityIDSource_LETTER_OF_CREDIT[] = "L";
+  const char SecurityIDSource_BLOOMBERG_SYMBOL[] = "A";
+  const char SecurityIDSource_BLMBRG[] = "A";
+  const char SecurityIDSource_OPTIONPRICEREPORTINGAUTHORITY[] = "J";
+  const char SecurityIDSource_WERTPAPIER[] = "B";
+  const char SecurityIDSource_MARKETPLACE_ASSIGNED_IDENTIFIER[] = "M";
+  const char SecurityIDSource_EXCHSYMB[] = "8";
+  const char SecurityIDSource_CONSOLIDATED_TAPE_ASSOCIATION[] = "9";
+  const char SecurityIDSource_DUTCH[] = "C";
+  const char SecurityIDSource_QUIK[] = "3";
+  const char SecurityIDSource_CUSIP[] = "1";
+  const int NewsRefType_OTHER_LANGUAGE = 1;
+  const int NewsRefType_COMPLIMENTARY = 2;
+  const int NewsRefType_REPLACEMENT = 0;
+  const char TriggerOrderType_LIMIT = '2';
+  const char TriggerOrderType_MARKET = '1';
+  const int CrossType_CROSS_AON = 1;
+  const int CrossType_CROSS_TRADE_WHICH_IS_PARTIALLY_EXECUTED_WITH_THE_UNFILLED_PORTIONS_REMAINING_ACTIVE_ONE_SIDE_OF_THE_CROSS_IS_FULLY_EXECUTED = 3;
+  const int CrossType_CROSS_TRADE_WHICH_IS_EXECUTED_COMPLETELY_OR_NOT_BOTH_SIDES_ARE_TREATED_IN_THE_SAME_MANNER_THIS_IS_EQUIVALENT_TO_AN_ALL_OR_NONE = 1;
+  const int CrossType_CROSSAON = 1;
+  const int CrossType_CROSS_TRADE_IS_EXECUTED_WITH_EXISTING_ORDERS_WITH_THE_SAME_PRICE = 4;
+  const int CrossType_CROSS_ONE_SIDE = 3;
+  const int CrossType_CROSS_SAME_PRICE = 4;
+  const int CrossType_CROSSSAMEPRICE = 4;
+  const int CrossType_CROSS_IOC = 2;
+  const int CrossType_CROSSIOC = 2;
+  const int CrossType_CROSSONESIDE = 3;
+  const int CrossType_CROSS_TRADE_WHICH_IS_EXECUTED_PARTIALLY_AND_THE_REST_IS_CANCELLED_ONE_SIDE_IS_FULLY_EXECUTED_THE_OTHER_SIDE_IS_PARTIALLY_EXECUTED_WITH_THE_REMAINDER_BEING_CANCELLED_THIS_IS_EQUIVALENT_TO_AN_IMMEDIATE_OR_CANCEL_ON_THE_OTHER_SIDE = 2;
+  const char OpenCloseSettleFlag_SESSION_OPEN = '1';
+  const char OpenCloseSettleFlag_DAILY_OPEN = '0';
+  const char OpenCloseSettleFlag_EXPECTED_PRICE = '3';
+  const char OpenCloseSettleFlag_PRICE_FROM_PREVIOUS_BUSINESS_DAY = '4';
+  const char OpenCloseSettleFlag_DELIVERY_SETTLEMENT_PRICE = '2';
+  const int MDBookType_PRICE_DEPTH = 2;
+  const int MDBookType_ORDER_DEPTH = 3;
+  const int MDBookType_TOP_OF_BOOK = 1;
+  const char BasisPxType_VWAPAFT = '8';
+  const char BasisPxType_VWAP_THROUGH_A_DAY_EXCEPT_YORI = '9';
+  const char BasisPxType_VWAP_THROUGH_A_MORNING_SESSION = '7';
+  const char BasisPxType_CLOSING_PRICE = '3';
+  const char BasisPxType_VWAP_THROUGH_A_DAY = '6';
+  const char BasisPxType_CLOSING_PRICE_AT_MORNINGN_SESSION = '2';
+  const char BasisPxType_VWAPDAY = '6';
+  const char BasisPxType_VWAPMORNXYORI = 'A';
+  const char BasisPxType_VWAPMORN = '7';
+  const char BasisPxType_VWAPDAYXYORI = '9';
+  const char BasisPxType_OTHERS = 'Z';
+  const char BasisPxType_OPEN = 'D';
+  const char BasisPxType_CURRPX = '4';
+  const char BasisPxType_VWAPAFTXYORI = 'B';
+  const char BasisPxType_CLOSING_PRICE_AT_MORNING_SESSION = '2';
+  const char BasisPxType_CLSPXMORN = '2';
+  const char BasisPxType_CURRENT_PRICE = '4';
+  const char BasisPxType_SQ = '5';
+  const char BasisPxType_CLSPX = '3';
+  const char BasisPxType_STRIKE = 'C';
+  const char BasisPxType_VWAP_THROUGH_AN_AFTERNOON_SESSION_EXCEPT_YORI = 'B';
+  const char BasisPxType_VWAP_THROUGH_A_MORNING_SESSION_EXCEPT_YORI = 'A';
+  const char BasisPxType_VWAP_THROUGH_AN_AFTERNOON_SESSION = '8';
+  const int ComplexEventType_ROLLING_BARRIER = 9;
+  const int ComplexEventType_UNDERLYING = 7;
+  const int ComplexEventType_KNOCK_OUT_UP = 5;
+  const int ComplexEventType_KNOCK_IN_UP = 3;
+  const int ComplexEventType_KOCK_IN_DOWN = 4;
+  const int ComplexEventType_TRIGGER = 2;
+  const int ComplexEventType_RESET_BARRIER = 8;
+  const int ComplexEventType_CAPPED = 1;
+  const int ComplexEventType_KNOCK_OUT_DOWN = 6;
+  const int MassActionResponse_REJECTED = 0;
+  const int MassActionResponse_ACCEPTED = 1;
+  const int SecurityRequestType_MARKETID_OR_MARKETID_PLUS_MARKETSEGMENTID = 9;
+  const int SecurityRequestType_REQUEST_LIST_SECURITY_TYPES = 2;
+  const int SecurityRequestType_REQSECIDPROV = 1;
+  const int SecurityRequestType_REQUEST_LIST_SECURITIES = 3;
+  const int SecurityRequestType_REQSECID = 0;
+  const int SecurityRequestType_SYMBOL = 4;
+  const int SecurityRequestType_SECURITYTYPE_AND_OR_CFICODE = 5;
+  const int SecurityRequestType_REQUEST_SECURITY_IDENTITY_FOR_THE_SPECIFICATIONS_PROVIDED = 1;
+  const int SecurityRequestType_REQSECLIST = 3;
+  const int SecurityRequestType_TRADINGSESSIONID = 7;
+  const int SecurityRequestType_PRODUCT = 6;
+  const int SecurityRequestType_ALL_SECURITIES = 8;
+  const int SecurityRequestType_REQSECLISTTYPES = 2;
+  const int SecurityRequestType_REQUEST_SECURITY_IDENTITY_AND_SPECIFICATIONS = 0;
+  const int ListRejectReason_EXCHANGE_CLOSED = 2;
+  const int ListRejectReason_UNKNOWN_ORDER = 5;
+  const int ListRejectReason_UNSUPPORTED_ORDER_CHARACTERISTIC = 11;
+  const int ListRejectReason_DUPLICATE_ORDER = 6;
+  const int ListRejectReason_TOO_LATE_TO_ENTER = 4;
+  const int ListRejectReason_OTHER = 99;
+  const int ListRejectReason_BROKER = 0;
+  const char DeskType_PROPRIETARY[] = "PR";
+  const char DeskType_ARBITRAGE[] = "AR";
+  const char DeskType_TRADING[] = "T";
+  const char DeskType_DERIVATIVES[] = "D";
+  const char DeskType_SALES[] = "S";
+  const char DeskType_INSTITUTIONAL[] = "IS";
+  const char DeskType_INTERNATIONAL[] = "IN";
+  const char DeskType_AGENCY[] = "A";
+  const char DeskType_PREFERRED_TRADING[] = "PF";
+  const char DeskType_OTHER[] = "O";
+  const char DeskType_PROGRAM_TRADING[] = "PT";
+  const char SettlType_T4[] = "5";
+  const char SettlType_T5[] = "8";
+  const char SettlType_WHEN_AND_IF_ISSUED[] = "7";
+  const char SettlType_NEXTDAY[] = "2";
+  const char SettlType_FUTURE[] = "6";
+  const char SettlType_T_PLUS_2[] = "3";
+  const char SettlType_SELLERS_OPTION[] = "8";
+  const char SettlType_BROKEN_DATE[] = "B";
+  const char SettlType_T_PLUS_3[] = "4";
+  const char SettlType_T_PLUS_4[] = "5";
+  const char SettlType_REGULAR[] = "0";
+  const char SettlType_NEXT_DAY[] = "2";
+  const char SettlType_T_PLUS_5[] = "9";
+  const char SettlType_FX_SPOT_NEXT_SETTLEMENT[] = "C";
+  const char SettlType_T1[] = "9";
+  const char SettlType_WHENISSUED[] = "7";
+  const char SettlType_T2[] = "3";
+  const char SettlType_T3[] = "4";
+  const char SettlType_CASH[] = "1";
+  const char OpenClose_CLOSE = 'C';
+  const char OpenClose_OPEN = 'O';
+  const int ContractMultiplierUnit_SHARES = 0;
+  const int ContractMultiplierUnit_HOURS = 1;
+  const int ContractMultiplierUnit_DAYS = 2;
+  const int TrdType_VOLUME_WEIGHTED_AVERAGE_TRADE = 51;
+  const int TrdType_LATE_TRADE = 4;
+  const int TrdType_FUTURES_LARGE_ORDER_EXECUTION = 17;
+  const int TrdType_EXCHANGE_OF_FUTURES_FOR_FUTURES = 18;
+  const int TrdType_SPECIAL_EX_CAPITAL_REPAYMENTS = 35;
+  const int TrdType_BLOCK_TRADE_38 = 38;
+  const int TrdType_DELTA_NEUTRAL_TRANSACTION = 46;
+  const int TrdType_CASH_SETTLEMENT = 29;
+  const int TrdType_SPECIAL_CUM_CAPITAL_REPAYMENTS = 34;
+  const int TrdType_SPECIAL_CUM_BONUS = 36;
+  const int TrdType_BLOCK_TRADES = 40;
+  const int TrdType_ALL_OR_NONE = 16;
+  const int TrdType_OPTION_EXERCISE = 45;
+  const int TrdType_FINANCING_TRANSACTION = 47;
+  const int TrdType_TRANSFER = 3;
+  const int TrdType_REGULAR_TRADE = 0;
+  const int TrdType_TRADING_AT_SETTLEMENT = 15;
+  const int TrdType_SPECIAL_EX_DIVIDEND = 26;
+  const int TrdType_SPECIAL_EX_COUPON = 28;
+  const int TrdType_SPECIAL_PRICE = 30;
+  const int TrdType_SPECIAL_CUM_RIGHTS = 32;
+  const int TrdType_SPECIAL_EX_BONUS = 37;
+  const int TrdType_BLOCKTRADE = 1;
+  const int TrdType_EXCHANGE_GRANTED_TRADE = 52;
+  const int TrdType_EXCHANGE_BASIS_FACILITY = 55;
+  const int TrdType_BLOCK_TRADE_1 = 1;
+  const int TrdType_LATE_BUNCHED_TRADE = 8;
+  const int TrdType_ERROR_TRADE = 24;
+  const int TrdType_NAME_CHANGE = 41;
+  const int TrdType_LATEBUNCHEDTRADE = 8;
+  const int TrdType_EFP = 2;
+  const int TrdType_NON_STANDARD_SETTLEMENT = 48;
+  const int TrdType_PRIOR_REFERENCE_PRICE_TRADE = 9;
+  const int TrdType_EXCHANGE_FOR_RISK = 11;
+  const int TrdType_EXCHANGE_FOR_SWAP = 12;
+  const int TrdType_EXCHANGE_OF_FUTURES_FOR = 13;
+  const int TrdType_OPTION_INTERIM_TRADE = 19;
+  const int TrdType_PRIVATELY_NEGOTIATED_TRADES = 22;
+  const int TrdType_SUBSTITUTION_OF_FUTURES_FOR_FORWARDS = 23;
+  const int TrdType_SPECIAL_CUM_DIVIDEND = 25;
+  const int TrdType_GUARANTEED_DELIVERY = 31;
+  const int TrdType_PROROGATION_SELL = 44;
+  const int TrdType_WEIGHTEDAVERAGEPRICETRADE = 6;
+  const int TrdType_PORTFOLIO_TRADE = 50;
+  const int TrdType_WEIGHTED_AVERAGE_PRICE_TRADE = 6;
+  const int TrdType_WORKED_PRINCIPAL_TRADE = 39;
+  const int TrdType_PORTFOLIO_TRANSFER = 42;
+  const int TrdType_T_TRADE = 5;
+  const int TrdType_EXCHANGE_OF_OPTIONS_FOR_OPTIONS = 14;
+  const int TrdType_SPECIAL_CUM_COUPON = 27;
+  const int TrdType_BUNCHEDTRADE = 7;
+  const int TrdType_TTRADE = 5;
+  const int TrdType_OTC = 54;
+  const int TrdType_AFTER_HOURS_TRADE = 10;
+  const int TrdType_PRIORREFERENCEPRICETRADE = 9;
+  const int TrdType_AFTERHOURSTRADE = 10;
+  const int TrdType_DERIVATIVE_RELATED_TRANSACTION = 49;
+  const int TrdType_REPURCHASE_AGREEMENT = 53;
+  const int TrdType_SPECIAL_EX_RIGHTS = 33;
+  const int TrdType_PROROGATION_BUY = 43;
+  const int TrdType_BUNCHED_TRADE = 7;
+  const int TrdType_OPTION_CABINET_TRADE = 20;
+  const int TrdType_LATETRADE = 4;
+  const int TrdType_REGULARTRADE = 0;
+  const char RestructuringType_MODIFIED_MOD_RESTRUCTURING[] = "MM";
+  const char RestructuringType_FULL_RESTRUCTURING[] = "FR";
+  const char RestructuringType_NO_RESTRUCTURING_SPECIFIED[] = "XR";
+  const char RestructuringType_MODIFIED_RESTRUCTURING[] = "MR";
+  const int ProgRptReqs_SELLSIDE = 2;
+  const int ProgRptReqs_REALTIME = 3;
+  const int ProgRptReqs_REAL_TIME_EXECUTION_REPORTS = 3;
+  const int ProgRptReqs_BUYSIDE_EXPLICITLY_REQUESTS_STATUS_USING_STATUSREQUEST = 1;
+  const int ProgRptReqs_SELL_SIDE_PERIODICALLY_SENDS_STATUS_USING_LIST_STATUS_PERIOD_OPTIONALLY_SPECIFIED_IN_PROGRESSPERIOD = 2;
+  const int ProgRptReqs_BUY_SIDE_EXPLICITLY_REQUESTS_STATUS_USING_STATUE_REQUEST = 1;
+  const int ProgRptReqs_BUYSIDE = 1;
+  const int ProgRptReqs_SELLSIDE_PERIODICALLY_SENDS_STATUS_USING_LISTSTATUS_PERIOD_OPTIONALLY_SPECIFIED_IN_PROGRESSPERIOD = 2;
+  const char TradingSessionID_EVENING[] = "5";
+  const char TradingSessionID_AFTER_HOURS[] = "6";
+  const char TradingSessionID_HALFDAY[] = "2";
+  const char TradingSessionID_DAY[] = "1";
+  const char TradingSessionID_MORNING[] = "3";
+  const char TradingSessionID_AFTERNOON[] = "4";
+  const int ListOrderStatus_RECVFOREXEC = 2;
+  const int ListOrderStatus_CXL = 4;
+  const int ListOrderStatus_REJ = 7;
+  const int ListOrderStatus_CANCELING = 4;
+  const int ListOrderStatus_REJECT = 7;
+  const int ListOrderStatus_ALL_DONE = 6;
+  const int ListOrderStatus_INBIDPROC = 1;
+  const int ListOrderStatus_ALLDONE = 6;
+  const int ListOrderStatus_IN_BIDDING_PROCESS = 1;
+  const int ListOrderStatus_RECEIVED_FOR_EXECUTION = 2;
+  const int ListOrderStatus_ALERT = 5;
+  const int ListOrderStatus_RECEIVEDFOREXECUTION = 2;
+  const int ListOrderStatus_INBIDDINGPROCESS = 1;
+  const int ListOrderStatus_EXEC = 3;
+  const int ListOrderStatus_CANCELLING = 4;
+  const int ListOrderStatus_EXECUTING = 3;
+  const char RegistStatus_REJECT = 'R';
+  const char RegistStatus_REMINDER_IE_REGISTRATION_INSTRUCTIONS_ARE_STILL_OUTSTANDING = 'N';
+  const char RegistStatus_REJECTED = 'R';
+  const char RegistStatus_ACCEPTED = 'A';
+  const char RegistStatus_REMINDER = 'N';
+  const char RegistStatus_HELD = 'H';
+  const char RegistStatus_ACCEPT = 'A';
+  const int UnderlyingPriceDeterminationMethod_OPTIMAL_VALUE = 3;
+  const int UnderlyingPriceDeterminationMethod_SPECIAL_REFERENCE = 2;
+  const int UnderlyingPriceDeterminationMethod_AVERAGE_VALUE = 4;
+  const int UnderlyingPriceDeterminationMethod_REGULAR = 1;
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_SECURITY = '1';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_SECURITY_GROUP = 'A';
+  const char MassCancelRequestType_CXLORDERSSECURITYTYPE = '5';
+  const char MassCancelRequestType_CXLORDERSUNDERLYINGSECURITY = '2';
+  const char MassCancelRequestType_CXLORDERSTRDSESSION = '6';
+  const char MassCancelRequestType_CXLALLORDERS = '7';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_MARKET = '8';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_MARKET_SEGMENT = '9';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_SECURITYTYPE = '5';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_TRADING_SESSION = '6';
+  const char MassCancelRequestType_CANCEL_FOR_ISSUER_OF_UNDERLYING_SECURITY = 'C';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_AN_UNDERLYING_SECURITY = '2';
+  const char MassCancelRequestType_CXLORDERSSECURITY = '1';
+  const char MassCancelRequestType_CXLORDERSPRODUCT = '3';
+  const char MassCancelRequestType_CANCEL_ALL_ORDERS = '7';
+  const char MassCancelRequestType_CANCEL_FOR_SECURITY_ISSUER = 'B';
+  const char MassCancelRequestType_CXLORDERSCFICODE = '4';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_PRODUCT = '3';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_CFICODE = '4';
+  const int DerivativeSecurityListRequestType_MARKETID_OR_MARKETID_PLUS_MARKETSEGMENTID = 8;
+  const int DerivativeSecurityListRequestType_UNDELYINGSYMBOL = 5;
+  const int DerivativeSecurityListRequestType_UNDERLYING_PRODUCT = 7;
+  const int DerivativeSecurityListRequestType_UNDERLYING_SECURITYTYPE_AND_OR_CFICODE = 6;
+  const int DerivativeSecurityListRequestType_SECURITYTYPE_AND_OR_CFICODE = 1;
+  const int DerivativeSecurityListRequestType_SYMBOL = 0;
+  const int DerivativeSecurityListRequestType_TRADINGSESSIONID = 3;
+  const int DerivativeSecurityListRequestType_ALL_SECURITIES = 4;
+  const int DerivativeSecurityListRequestType_PRODUCT = 2;
+  const char CxlRejResponseTo_ORDCXLREPREQ = '2';
+  const char CxlRejResponseTo_ORDER_CANCEL_REQUEST = '1';
+  const char CxlRejResponseTo_ORDER_CANCEL_REPLACE_REQUEST = '2';
+  const char CxlRejResponseTo_ORDCXLREQ = '1';
+  const int QuoteCancelType_CANCEL_BY_QUOTETYPE = 6;
+  const int QuoteCancelType_CANCEL_FOR_ONE_OR_MORE_SECURITIES = 1;
+  const int QuoteCancelType_CANCEL_QUOTE_SPECIFIED_IN_QUOTEID = 5;
+  const int QuoteCancelType_CANCEL_FOR_UNDERLYING_SYMBOL = 3;
+  const int QuoteCancelType_CXLUNDER = 3;
+  const int QuoteCancelType_CANCEL_ALL_QUOTES = 4;
+  const int QuoteCancelType_CXLSYM = 1;
+  const int QuoteCancelType_CANCEL_FOR_UNDERLYING_SECURITY = 3;
+  const int QuoteCancelType_CANCEL_FOR_ISSUER_OF_UNDERLYING_SECURITY = 8;
+  const int QuoteCancelType_CANCEL_FOR_SECURITY_ISSUER = 7;
+  const int QuoteCancelType_CXLSECTYPE = 2;
+  const int QuoteCancelType_CANCEL_FOR_ALL_QUOTES = 4;
+  const int QuoteCancelType_CXLALL = 4;
+  const int QuoteCancelType_CANCEL_FOR_SECURITY_TYPE = 2;
+  const int QuoteCancelType_CANCEL_FOR_SYMBOL = 1;
+  const char StipulationType_POOLS_PER_LOT[] = "PPL";
+  const char StipulationType_MAXIMUM_LOAN_BALANCE[] = "MAXBAL";
+  const char StipulationType_CONSTANTPREPAYMENTYIELD[] = "CPY";
+  const char StipulationType_CUSTOM_START_END_DATE[] = "CUSTOMDATE";
+  const char StipulationType_CALL_PROTECTION[] = "PROTECT";
+  const char StipulationType_MATURITYYEARANDMONTH[] = "MAT";
+  const char StipulationType_FINALCPROFHOMEEQUITYPREPAYMENTCURVE[] = "HEP";
+  const char StipulationType_MATURITYRANGE[] = "MATURITY";
+  const char StipulationType_COUPON_RANGE[] = "COUPON";
+  const char StipulationType_PERCENTOFBMAPREPAYMENTCURVE[] = "PSA";
+  const char StipulationType_SUBSTITUTIONSLEFTREPO[] = "SUBSLEFT";
+  const char StipulationType_LOOKBACKDAYS[] = "LOOKBACK";
+  const char StipulationType_CALLPROTECTION[] = "PROTECT";
+  const char StipulationType_MAXIMUMSUBSTITUTIONSREPO[] = "MAXSUBS";
+  const char StipulationType_YEARORYEARMONTHOFISSUE[] = "ISSUE";
+  const char StipulationType_CONSTANTPREPAYMENTRATE[] = "CPR";
+  const char StipulationType_ISSUE_SIZE_RANGE[] = "ISSUESIZE";
+  const char StipulationType_WEIGHTEDAVERAGEMATURITY[] = "WAM";
+  const char StipulationType_CONSTANT_PREPAYMENT_RATE[] = "CPR";
+  const char StipulationType_PERCENT_OF_MANUFACTURED_HOUSING_PREPAYMENT_CURVE[] = "MHP";
+  const char StipulationType_POOLSMINIMUM[] = "PMIN";
+  const char StipulationType_FINAL_CPR_OF_HOME_EQUITY_PREPAYMENT_CURVE[] = "HEP";
+  const char StipulationType_BROKERS_SALES_CREDIT[] = "BROKERCREDIT";
+  const char StipulationType_ORDER_QUANTITY_INCREMENT[] = "ORDRINCR";
+  const char StipulationType_REFERENCE_TO_ROLLING_OR_CLOSING_TRADE[] = "REFTRADE";
+  const char StipulationType_AVAILABLE_OFFER_QUANTITY_TO_BE_SHOWN_TO_THE_STREET[] = "AVAILQTY";
+  const char StipulationType_ISSUERS_TICKER[] = "ISSUER";
+  const char StipulationType_ISOCURRENCYCODE[] = "CURRENCY";
+  const char StipulationType_THE_MINIMUM_RESIDUAL_OFFER_QUANTITY[] = "LEAVEQTY";
+  const char StipulationType_DISCOUNT_RATE[] = "DISCOUNT";
+  const char StipulationType_VALUATIONDISCOUNT[] = "HAIRCUT";
+  const char StipulationType_SINGLE_MONTHLY_MORTALITY[] = "SMM";
+  const char StipulationType_LOT_VARIANCE[] = "LOTVAR";
+  const char StipulationType_PERCENTOFMANUFACTUREDHOUSINGPREPAYMENTCURVE[] = "MHP";
+  const char StipulationType_FREEFORMTEXT[] = "TEXT";
+  const char StipulationType_WHOLE_POOL[] = "WHOLE";
+  const char StipulationType_GEOGRAPHICS_AND_RANGE[] = "GEOG";
+  const char StipulationType_INTEREST_OF_ROLLING_OR_CLOSING_TRADE[] = "REFINT";
+  const char StipulationType_TRADEVARIANCEVALUEINPERCENTMAXIMUMOVERORUNDERALLOCATIONALLOWED[] = "TRDVAR";
+  const char StipulationType_FREEFORM_TEXT[] = "TEXT";
+  const char StipulationType_RATING_SOURCE_AND_RANGE[] = "RATING";
+  const char StipulationType_OFFER_QUANTITY_TO_BE_SHOWN_TO_INTERNAL_BROKERS[] = "INTERNALQTY";
+  const char StipulationType_OFFER_PRICE_TO_BE_SHOWN_TO_INTERNAL_BROKERS[] = "INTERNALPX";
+  const char StipulationType_NUMBER_OF_PIECES[] = "PIECES";
+  const char StipulationType_MINIMUM_INCREMENT[] = "MININCR";
+  const char StipulationType_PRODUCTIONYEAR[] = "PROD";
+  const char StipulationType_WEIGHTED_AVERAGE_MATURITY[] = "WAM";
+  const char StipulationType_GEOGRAPHICS[] = "GEOG";
+  const char StipulationType_MINIMUMQUANTITY[] = "MINQTY";
+  const char StipulationType_POOL_IDENTIFIER[] = "POOL";
+  const char StipulationType_MATURITY_YEAR_AND_MONTH[] = "MAT";
+  const char StipulationType_PRICINGFREQUENCY[] = "PRICEFREQ";
+  const char StipulationType_SECURITYTYPEINCLUDEDOREXCLUDED[] = "SECTYPE";
+  const char StipulationType_EXPLICITLOTIDENTIFIER[] = "LOT";
+  const char StipulationType_MAXIMUM_SUBSTITUTIONS[] = "MAXSUBS";
+  const char StipulationType_PRIMARY_OR_SECONDARY_MARKET_INDICATOR[] = "PRIMARY";
+  const char StipulationType_WEIGHTEDAVERAGELOANAGE[] = "WALA";
+  const char StipulationType_BENCHMARK_PRICE_SOURCE[] = "PXSOURCE";
+  const char StipulationType_MINIMUMDENOMINATION[] = "MINDNOM";
+  const char StipulationType_YEAR_OR_YEAR_MONTH_OF_ISSUE[] = "ISSUE";
+  const char StipulationType_PAYMENTFREQUENCYCALENDAR[] = "PAYFREQ";
+  const char StipulationType_POOLS_MAXIMUM[] = "PMAX";
+  const char StipulationType_SUBSTITUTIONS_FREQUENCY[] = "SUBSFREQ";
+  const char StipulationType_BENCHMARKPRICESOURCE[] = "PXSOURCE";
+  const char StipulationType_ABSOLUTEPREPAYMENTSPEED[] = "ABS";
+  const char StipulationType_BANKQUALIFIED[] = "BANKQUAL";
+  const char StipulationType_YIELDRANGE[] = "YIELD";
+  const char StipulationType_BARGAINCONDITIONS[] = "BGNCON";
+  const char StipulationType_MONTHLYPREPAYMENTRATE[] = "MPR";
+  const char StipulationType_POOLSPERLOT[] = "PPL";
+  const char StipulationType_CONSTANT_PREPAYMENT_YIELD[] = "CPY";
+  const char StipulationType_MINIMUM_DENOMINATION[] = "MINDNOM";
+  const char StipulationType_ALTERNATIVE_MINIMUM_TAX[] = "AMT";
+  const char StipulationType_CUSTOMSTARTENDDATE[] = "CUSTOMDATE";
+  const char StipulationType_TYPEOFREDEMPTIONVALUESARE[] = "REDEMPTION";
+  const char StipulationType_PERCENT_OF_BMA_PREPAYMENT_CURVE[] = "PSA";
+  const char StipulationType_NUMBEROFPIECES[] = "PIECES";
+  const char StipulationType_AMT[] = "AMT";
+  const char StipulationType_CONSTANTPREPAYMENTPENALTY[] = "CPP";
+  const char StipulationType_MAXIMUM_ORDER_SIZE[] = "MAXORDQTY";
+  const char StipulationType_AUTOREINVESTMENTATRATEORBETTER[] = "AUTOREINV";
+  const char StipulationType_BARGAIN_CONDITIONS[] = "BGNCON";
+  const char StipulationType_GEOGRAPHICSANDRANGE[] = "GEOG";
+  const char StipulationType_LOTVARIANCEVALUEINPERCENTMAXIMUMOVERORUNDERALLOCATIONALLOWED[] = "LOTVAR";
+  const char StipulationType_TYPE_OF_ROLL_TRADE[] = "ROLLTYPE";
+  const char StipulationType_PRINCIPAL_OF_ROLLING_OR_CLOSING_TRADE[] = "REFPRIN";
+  const char StipulationType_PERCENT_OF_PROSPECTUS_PREPAYMENT_CURVE[] = "PPC";
+  const char StipulationType_WEIGHTED_AVERAGE_COUPON[] = "WAC";
+  const char StipulationType_AUTO_REINVESTMENT_AT_RATE_OR_BETTER[] = "AUTOREINV";
+  const char StipulationType_STRUCTURE[] = "STRUCT";
+  const char StipulationType_WHOLEPOOL[] = "WHOLE";
+  const char StipulationType_MARKET_SECTOR[] = "SECTOR";
+  const char StipulationType_MATURITY_RANGE[] = "MATURITY";
+  const char StipulationType_SECURITY_TYPE_INCLUDED_OR_EXCLUDED[] = "SECTYPE";
+  const char StipulationType_POOLSPERMILLION[] = "PPM";
+  const char StipulationType_TRADE_VARIANCE[] = "TRDVAR";
+  const char StipulationType_ISSUERSTICKER[] = "ISSUER";
+  const char StipulationType_PRICERANGE[] = "PRICE";
+  const char StipulationType_LOOKBACK_DAYS[] = "LOOKBACK";
+  const char StipulationType_OF_MANUFACTURED_HOUSING_PREPAYMENT_CURVE[] = "MHP";
+  const char StipulationType_POOLS_PER_MILLION[] = "PPM";
+  const char StipulationType_MINIMUMINCREMENT[] = "MININCR";
+  const char StipulationType_MATURITY_YEAR[] = "MAT";
+  const char StipulationType_RATINGSOURCEANDRANGE[] = "RATING";
+  const char StipulationType_AVERAGE_LOAN_SIZE[] = "AVSIZE";
+  const char StipulationType_PURPOSE[] = "PURPOSE";
+  const char StipulationType_ISO_CURRENCY_CODE[] = "CURRENCY";
+  const char StipulationType_RESTRICTED[] = "RESTRICTED";
+  const char StipulationType_BROKER_SALES_CREDIT_OVERRIDE[] = "SALESCREDITOVR";
+  const char StipulationType_WEIGHTED_AVERAGE_LIFE_COUPON[] = "WAL";
+  const char StipulationType_WEIGHTEDAVERAGECOUPON[] = "WAC";
+  const char StipulationType_OF_PROSPECTUS_PREPAYMENT_CURVE[] = "PPC";
+  const char StipulationType_ISSUESIZERANGE[] = "ISSUESIZE";
+  const char StipulationType_YEAR_OF_ISSUE[] = "ISSUE";
+  const char StipulationType_WEIGHTEDAVERAGELIFECOUPON[] = "WAL";
+  const char StipulationType_PAYMENT_FREQUENCY_CALENDAR[] = "PAYFREQ";
+  const char StipulationType_TRADERS_CREDIT[] = "TRADERCREDIT";
+  const char StipulationType_MINIMUM_QUANTITY[] = "MINQTY";
+  const char StipulationType_SUBSTITUTIONS_LEFT[] = "SUBSLEFT";
+  const char StipulationType_POOLS_PER_TRADE[] = "PPT";
+  const char StipulationType_TYPE_OF_REDEMPTION[] = "REDEMPTION";
+  const char StipulationType_CONSTANT_PREPAYMENT_PENALTY[] = "CPP";
+  const char StipulationType_WEIGHTED_AVERAGE_LOAN_AGE[] = "WALA";
+  const char StipulationType_PRICE_RANGE[] = "PRICE";
+  const char StipulationType_SUBSTITUTIONSFREQUENCYREPO[] = "SUBSFREQ";
+  const char StipulationType_PRODUCTION_YEAR[] = "PROD";
+  const char StipulationType_SINGLEMONTHLYMORTALITY[] = "SMM";
+  const char StipulationType_OF_BMA_PREPAYMENT_CURVE[] = "PSA";
+  const char StipulationType_EXPLICIT_LOT_IDENTIFIER[] = "LOT";
+  const char StipulationType_ABSOLUTE_PREPAYMENT_SPEED[] = "ABS";
+  const char StipulationType_MAXIMUMDENOMINATION[] = "MAXDNOM";
+  const char StipulationType_PERCENTOFPROSPECTUSPREPAYMENTCURVE[] = "PPC";
+  const char StipulationType_VALUATION_DISCOUNT[] = "HAIRCUT";
+  const char StipulationType_YIELD_TO_MATURITY[] = "YTM";
+  const char StipulationType_WEIGHTED_AVERAGE_LIFE[] = "WAL";
+  const char StipulationType_POOLSMAXIMUM[] = "PMAX";
+  const char StipulationType_YIELD_RANGE[] = "YIELD";
+  const char StipulationType_PRICING_FREQUENCY[] = "PRICEFREQ";
+  const char StipulationType_POOLSPERTRADE[] = "PPT";
+  const char StipulationType_MONTHLY_PREPAYMENT_RATE[] = "MPR";
+  const char StipulationType_COUPONRANGE[] = "COUPON";
+  const char StipulationType_MARKETSECTOR[] = "SECTOR";
+  const char StipulationType_AVERAGE_FICO_SCORE[] = "AVFICO";
+  const char StipulationType_INSURED[] = "INSURED";
+  const char StipulationType_BANK_QUALIFIED[] = "BANKQUAL";
+  const char PriceQuoteMethod_STANDARD[] = "STD";
+  const char PriceQuoteMethod_PERCENT_OF_PAR[] = "PCTPAR";
+  const char PriceQuoteMethod_INDEX[] = "INX";
+  const char PriceQuoteMethod_INTEREST_RATE_INDEX[] = "INT";
+  const int SessionRejectReason_REQUIREDTAGMISSING = 1;
+  const int SessionRejectReason_TAGSPECIFIEDOUTOFREQUIREDORDER = 14;
+  const int SessionRejectReason_NON_DATA_VALUE_INCLUDES_FIELD_DELIMITER = 17;
+  const int SessionRejectReason_INVALIDTAGNUMBER = 0;
+  const int SessionRejectReason_VALUEISINCORRECTOUTOFRANGEFORTHISTAG = 5;
+  const int SessionRejectReason_COMPID_PROBLEM = 9;
+  const int SessionRejectReason_SENDINGTIMEACCURACYPROBLEM = 10;
+  const int SessionRejectReason_SIGNATURE_PROBLEM = 8;
+  const int SessionRejectReason_TAG_NOT_DEFINED_FOR_THIS_MESSAGE_TYPE = 2;
+  const int SessionRejectReason_UNDEFINEDTAG = 3;
+  const int SessionRejectReason_XML_VALIDATION_ERROR = 12;
+  const int SessionRejectReason_NONDATAVALUEINCLUDESFIELDDELIMITERSOHCHARACTER = 17;
+  const int SessionRejectReason_UNDEFINED_TAG = 3;
+  const int SessionRejectReason_TAGAPPEARSMORETHANONCE = 13;
+  const int SessionRejectReason_INCORRECT_DATA_FORMAT_FOR_VALUE = 6;
+  const int SessionRejectReason_REPEATING_GROUP_FIELDS_OUT_OF_ORDER = 15;
+  const int SessionRejectReason_REQUIRED_TAG_MISSING = 1;
+  const int SessionRejectReason_INVALIDMSGTYPE = 11;
+  const int SessionRejectReason_XMLVALIDATIONERROR = 12;
+  const int SessionRejectReason_REPEATINGGROUPFIELDSOUTOFORDER = 15;
+  const int SessionRejectReason_INCORRECTNUMINGROUPCOUNTFORREPEATINGGROUP = 16;
+  const int SessionRejectReason_TAGSPECIFIEDWITHOUTAVALUE = 4;
+  const int SessionRejectReason_DECRYPTIONPROBLEM = 7;
+  const int SessionRejectReason_INCORRECTDATAFORMATFORVALUE = 6;
+  const int SessionRejectReason_OTHER = 99;
+  const int SessionRejectReason_INCORRECT_NUMINGROUP_COUNT_FOR_REPEATING_GROUP = 16;
+  const int SessionRejectReason_TAG_APPEARS_MORE_THAN_ONCE = 13;
+  const int SessionRejectReason_COMPIDPROBLEM = 9;
+  const int SessionRejectReason_TAG_SPECIFIED_OUT_OF_REQUIRED_ORDER = 14;
+  const int SessionRejectReason_SIGNATUREPROBLEM = 8;
+  const int SessionRejectReason_DECRYPTION_PROBLEM = 7;
+  const int SessionRejectReason_INVALID_TAG_NUMBER = 0;
+  const int SessionRejectReason_TAGNOTDEFINEDFORTHISMESSAGETYPE = 2;
+  const int SessionRejectReason_VALUE_IS_INCORRECT = 5;
+  const int SessionRejectReason_TAG_SPECIFIED_WITHOUT_A_VALUE = 4;
+  const int SessionRejectReason_INVALID_MSGTYPE = 11;
+  const int SessionRejectReason_SENDINGTIME_ACCURACY_PROBLEM = 10;
+  const int DeliveryType_TRI_PARTY = 2;
+  const int DeliveryType_HOLD_IN_CUSTODY = 3;
+  const int DeliveryType_FREE = 1;
+  const int DeliveryType_HOLDINCUSTODY = 3;
+  const int DeliveryType_VERSUSPAYMENT = 0;
+  const int DeliveryType_VERSUS_PAYMENT_DELIVER = 0;
+  const int DeliveryType_FREE_DELIVER = 1;
+  const int DeliveryType_TRIPARTY = 2;
+  const char Scope_LOCAL = '1';
+  const char Scope_LOCAL_MARKET = '1';
+  const char Scope_GLOBAL = '3';
+  const char Scope_NATIONAL = '2';
+  const char Scope_LOCALMARKET = '1';
+  const char DeleteReason_CANCELLATION = '0';
+  const char DeleteReason_CANCELTRADEBUST = '0';
+  const char DeleteReason_CANCELATION = '0';
+  const char DeleteReason_ERROR = '1';
+  const char InViewOfCommon_NO = 'N';
+  const char InViewOfCommon_YES = 'Y';
+  const char NoSides_BOTHSIDES = '2';
+  const char NoSides_ONESIDE = '1';
+  const char NoSides_ONE_SIDE = '1';
+  const char NoSides_BOTH_SIDES = '2';
+  const char SecurityType_TERM_LIQUIDITY_NOTE[] = "TLQN";
+  const char SecurityType_TO_BE_ANNOUNCED[] = "TBA";
+  const char SecurityType_REVERSE_REPURCHASE_AGREEMENT[] = "RVRP";
+  const char SecurityType_BRADY_BOND[] = "BRADY";
+  const char SecurityType_TREASURYINFLATIONPROTECTEDSECURITIES[] = "TIPS";
+  const char SecurityType_CORP_MORTGAGE_BACKED_SECURITIES[] = "CMBS";
+  const char SecurityType_CERTIFICATE_OF_PARTICIPATION[] = "COFP";
+  const char SecurityType_BUY_SELLBACK[] = "BUYSELL";
+  const char SecurityType_OPTIONS_ON_COMBO[] = "OOC";
+  const char SecurityType_MULTILEG_INSTRUMENT[] = "MLEG";
+  const char SecurityType_TAX_ALLOCATION[] = "TAXA";
+  const char SecurityType_US_TREASURY_NOTE_BOND[] = "UST";
+  const char SecurityType_REVENUE_ANTICIPATION_NOTE[] = "RAN";
+  const char SecurityType_YANKEECERTIFICATEOFDEPOSIT[] = "YCD";
+  const char SecurityType_MEDIUMTERMNOTES[] = "MTN";
+  const char SecurityType_SPECIAL_TAX[] = "SPCLT";
+  const char SecurityType_PRIVATE_EXPORT_FUNDING[] = "PEF";
+  const char SecurityType_EUROCERTIFICATEOFDEPOSIT[] = "EUCD";
+  const char SecurityType_SPECIAL_OBLIGATION[] = "SPCLO";
+  const char SecurityType_FX_SWAP[] = "FXSWAP";
+  const char SecurityType_REVOLVER_TERM_LOAN[] = "RVLVTRM";
+  const char SecurityType_TAXEXEMPTCOMMERCIALPAPER[] = "TECP";
+  const char SecurityType_REVOLVER_LOAN[] = "RVLV";
+  const char SecurityType_CASH[] = "CASH";
+  const char SecurityType_USTREASURYNOTEDEPRECATEDVALUEUSETNOTE[] = "UST";
+  const char SecurityType_MISCELLANEOUS_PASS_THRU[] = "MPT";
+  const char SecurityType_CONVERTIBLEBOND[] = "CB";
+  const char SecurityType_VARIABLE_RATE_DEMAND_NOTE[] = "VRDN";
+  const char SecurityType_MULTILEGINSTRUMENT[] = "MLEG";
+  const char SecurityType_FEDERAL_AGENCY_DISCOUNT_NOTE[] = "FADN";
+  const char SecurityType_SPECIALOBLIGATION[] = "SPCLO";
+  const char SecurityType_CANADIAN_TREASURY_BILLS[] = "CTB";
+  const char SecurityType_REVENUEANTICIPATIONNOTE[] = "RAN";
+  const char SecurityType_CERTIFICATEOFOBLIGATION[] = "COFO";
+  const char SecurityType_INDEXEDLINKED[] = "XLINKD";
+  const char SecurityType_LETTER_OF_CREDIT[] = "LOFC";
+  const char SecurityType_MANDATORYTENDER[] = "MT";
+  const char SecurityType_USTREASURYBOND[] = "TBOND";
+  const char SecurityType_TERMLOAN[] = "TERM";
+  const char SecurityType_OPTIONS_ON_FUTURES[] = "OOF";
+  const char SecurityType_PROMISSORYNOTE[] = "PN";
+  const char SecurityType_DUAL_CURRENCY[] = "DUAL";
+  const char SecurityType_WILDCARD_ENTRY[] = "WLD";
+  const char SecurityType_BANK_DEPOSITORY_NOTE[] = "BDN";
+  const char SecurityType_REPLACED[] = "REPLACD";
+  const char SecurityType_MORTGAGE_PRINCIPAL_ONLY[] = "MPO";
+  const char SecurityType_CANADIAN_TREASURY_NOTES[] = "CAN";
+  const char SecurityType_USTREASURYBILLDEPRECATEDVALUEUSETBILL[] = "USTB";
+  const char SecurityType_TOBEANNOUNCED[] = "TBA";
+  const char SecurityType_SECURITIES_PLEDGE[] = "SECPLEDGE";
+  const char SecurityType_YANKEE_CORPORATE_BOND[] = "YANK";
+  const char SecurityType_FX_SPOT[] = "FXSPOT";
+  const char SecurityType_LIQUIDITYNOTE[] = "LQN";
+  const char SecurityType_OVERNIGHT[] = "ONITE";
+  const char SecurityType_MORTGAGE_INTEREST_ONLY[] = "MIO";
+  const char SecurityType_BRIDGELOAN[] = "BRIDGE";
+  const char SecurityType_OTHER_ANTICIPATION_NOTES_BAN_GAN_ETC[] = "AN";
+  const char SecurityType_EXTENDED_COMM_NOTE[] = "XCN";
+  const char SecurityType_CERTIFICATEOFPARTICIPATION[] = "COFP";
+  const char SecurityType_CATS_TIGERS_LIONS[] = "ZOO";
+  const char SecurityType_FORWARD[] = "FORWARD";
+  const char SecurityType_YANKEE_CERTIFICATE_OF_DEPOSIT[] = "YCD";
+  const char SecurityType_PREFERRED_STOCK[] = "PS";
+  const char SecurityType_US_TREASURY_BOND[] = "TBOND";
+  const char SecurityType_TREASURY_INFLATION_PROTECTED_SECURITIES[] = "TIPS";
+  const char SecurityType_BUYSELLBACK[] = "BUYSELL";
+  const char SecurityType_OPTIONS_ON_PHYSICAL[] = "OOP";
+  const char SecurityType_ASSETBACKEDSECURITIES[] = "ABS";
+  const char SecurityType_NON_DELIVERABLE_FORWARD[] = "FXNDF";
+  const char SecurityType_MORTGAGE_PRINCIPLE_ONLY[] = "MPO";
+  const char SecurityType_MORTGAGE_IOETTE[] = "IET";
+  const char SecurityType_USD_SUPRANATIONAL_COUPONS[] = "SUPRA";
+  const char SecurityType_WARRANT[] = "WAR";
+  const char SecurityType_FOREIGN_EXCHANGE_CONTRACT[] = "FOR";
+  const char SecurityType_FOREIGNEXCHANGECONTRACT[] = "FOR";
+  const char SecurityType_EURO_CORPORATE_FLOATING_RATE_NOTES[] = "EUFRN";
+  const char SecurityType_SPECIAL_ASSESSMENT[] = "SPCLA";
+  const char SecurityType_EUROSUPRANATIONALCOUPONS[] = "EUSUPRA";
+  const char SecurityType_DEBTOR_IN_POSSESSION[] = "DINP";
+  const char SecurityType_CANADIAN_MONEY_MARKETS[] = "CAMM";
+  const char SecurityType_MORTGAGEPRINCIPALONLY[] = "MPO";
+  const char SecurityType_USTREASURYNOTE[] = "TNOTE";
+  const char SecurityType_DEBTORINPOSSESSION[] = "DINP";
+  const char SecurityType_REVENUEBONDS[] = "REV";
+  const char SecurityType_MORTGAGEINTERESTONLY[] = "MIO";
+  const char SecurityType_DEPOSITNOTES[] = "DN";
+  const char SecurityType_PRINCIPAL_STRIP_OF_A_CALLABLE_BOND_OR_NOTE[] = "TCAL";
+  const char SecurityType_MORTGAGEPRIVATEPLACEMENT[] = "MPP";
+  const char SecurityType_NO_SECURITY_TYPE[] = "NONE";
+  const char SecurityType_SPECIALASSESSMENT[] = "SPCLA";
+  const char SecurityType_LETTEROFCREDIT[] = "LOFC";
+  const char SecurityType_TAXALLOCATION[] = "TAXA";
+  const char SecurityType_TAXABLE_MUNICIPAL_CP[] = "TMCP";
+  const char SecurityType_OPTION[] = "OPT";
+  const char SecurityType_NOSECURITYTYPE[] = "NONE";
+  const char SecurityType_PROMISSORY_NOTE[] = "PN";
+  const char SecurityType_COLLATERALIZEDMORTGAGEOBLIGATION[] = "CMO";
+  const char SecurityType_DUALCURRENCY[] = "DUAL";
+  const char SecurityType_CREDIT_DEFAULT_SWAP[] = "CDS";
+  const char SecurityType_TAXANTICIPATIONNOTE[] = "TAN";
+  const char SecurityType_MORTGAGE_PRIVATE_PLACEMENT[] = "MPP";
+  const char SecurityType_GENERAL_OBLIGATION_BONDS[] = "GO";
+  const char SecurityType_SHORTTERMLOANNOTE[] = "STN";
+  const char SecurityType_COMMERCIAL_PAPER[] = "CP";
+  const char SecurityType_MORTGAGE_BACKED_SECURITIES[] = "MBS";
+  const char SecurityType_EURO_SOVEREIGNS[] = "EUSOV";
+  const char SecurityType_TAX_REVENUE_ANTICIPATION_NOTE[] = "TRAN";
+  const char SecurityType_PFANDBRIEFE[] = "PFAND";
+  const char SecurityType_OTHER_ANTICIPATION_NOTES[] = "AN";
+  const char SecurityType_TAX_EXEMPT_COMMERCIAL_PAPER[] = "TECP";
+  const char SecurityType_PRIVATEEXPORTFUNDING[] = "PEF";
+  const char SecurityType_OTHERANTICIPATIONNOTESBANGANETC[] = "AN";
+  const char SecurityType_TAX_ANTICIPATION_NOTE[] = "TAN";
+  const char SecurityType_TREASURY_BILL[] = "TB";
+  const char SecurityType_PLAZOS_FIJOS[] = "PZFJ";
+  const char SecurityType_EURO_COMMERCIAL_PAPER[] = "EUCP";
+  const char SecurityType_MANDATORY_TENDER[] = "MT";
+  const char SecurityType_COLLATERALIZED_MORTGAGE_OBLIGATION[] = "CMO";
+  const char SecurityType_PREFERREDSTOCK[] = "PS";
+  const char SecurityType_VARIABLERATEDEMANDNOTE[] = "VRDN";
+  const char SecurityType_DEFAULTED[] = "DEFLTED";
+  const char SecurityType_INDEXED_LINKED[] = "XLINKD";
+  const char SecurityType_IOETTE_MORTGAGE[] = "IET";
+  const char SecurityType_CERTIFICATE_OF_DEPOSIT[] = "CD";
+  const char SecurityType_BILLOFEXCHANGES[] = "BOX";
+  const char SecurityType_PRINCIPALSTRIPOFACALLABLEBONDORNOTE[] = "TCAL";
+  const char SecurityType_EUROSOVEREIGNS[] = "EUSOV";
+  const char SecurityType_TIME_DEPOSIT[] = "TD";
+  const char SecurityType_CORPORATEBOND[] = "CORP";
+  const char SecurityType_FX_FORWARD[] = "FXFWD";
+  const char SecurityType_US_CORPORATE_FLOATING_RATE_NOTES[] = "FRN";
+  const char SecurityType_US_TREASURY_NOTE_TNOTE[] = "TNOTE";
+  const char SecurityType_MORTGAGEBACKEDSECURITIES[] = "MBS";
+  const char SecurityType_DEPOSIT_NOTES[] = "DN";
+  const char SecurityType_CORPORATEPRIVATEPLACEMENT[] = "CPP";
+  const char SecurityType_FEDERAL_HOUSING_AUTHORITY[] = "FHA";
+  const char SecurityType_MATURED[] = "MATURED";
+  const char SecurityType_SWINGLINEFACILITY[] = "SWING";
+  const char SecurityType_MULTI_LEG_INSTRUMENT[] = "MLEG";
+  const char SecurityType_CANADIAN_PROVINCIAL_BONDS[] = "PROV";
+  const char SecurityType_MEDIUM_TERM_NOTES[] = "MTN";
+  const char SecurityType_RETIRED[] = "RETIRED";
+  const char SecurityType_MUTUAL_FUND[] = "MF";
+  const char SecurityType_SECURITIESPLEDGE[] = "SECPLEDGE";
+  const char SecurityType_COMMERCIALPAPER[] = "CP";
+  const char SecurityType_REPURCHASE_AGREEMENT[] = "RP";
+  const char SecurityType_BILL_OF_EXCHANGES[] = "BOX";
+  const char SecurityType_MUTUALFUND[] = "MF";
+  const char SecurityType_COLLATERALIZE_MORTGAGE_OBLIGATION[] = "CMO";
+  const char SecurityType_EXTENDEDCOMMNOTE[] = "XCN";
+  const char SecurityType_FEDERAL_HOME_LOAN[] = "FHL";
+  const char SecurityType_REVOLVERLOAN[] = "RVLV";
+  const char SecurityType_PRINCIPAL_STRIP_FROM_A_NON_CALLABLE_BOND_OR_NOTE[] = "TPRN";
+  const char SecurityType_STRUCTURED_NOTES[] = "STRUCT";
+  const char SecurityType_INTERESTSTRIPFROMANYBONDORNOTE[] = "TINT";
+  const char SecurityType_CANADIAN_MORTGAGE_BONDS[] = "CMB";
+  const char SecurityType_REPURCHASE[] = "REPO";
+  const char SecurityType_AGENCY_POOLS[] = "POOL";
+  const char SecurityType_EURO_CORPORATE_BOND[] = "EUCORP";
+  const char SecurityType_SWING_LINE_FACILITY[] = "SWING";
+  const char SecurityType_USDSUPRANATIONALCOUPONS[] = "SUPRA";
+  const char SecurityType_REVOLVERTERMLOAN[] = "RVLVTRM";
+  const char SecurityType_LIQUIDITY_NOTE[] = "LQN";
+  const char SecurityType_MISCELLANEOUSPASSTHROUGH[] = "MPT";
+  const char SecurityType_CONVERTIBLE_BOND[] = "CB";
+  const char SecurityType_ASSET_BACKED_SECURITIES[] = "ABS";
+  const char SecurityType_WILDCARDENTRY[] = "WLD";
+  const char SecurityType_YANKEECORPORATEBOND[] = "YANK";
+  const char SecurityType_TAXREVENUEANTICIPATIONNOTE[] = "TRAN";
+  const char SecurityType_GOVERNMENT_NATIONAL_MORTGAGE_ASSOCIATION[] = "GN";
+  const char SecurityType_BRADYBOND[] = "BRADY";
+  const char SecurityType_USTREASURYBILL[] = "TBILL";
+  const char SecurityType_STUDENT_LOAN_MARKETING_ASSOCIATION[] = "SL";
+  const char SecurityType_EUROCORPORATEBOND[] = "EUCORP";
+  const char SecurityType_FUTURE[] = "FUT";
+  const char SecurityType_US_TREASURY_BILL_TBILL[] = "TBILL";
+  const char SecurityType_TREASURIES_PLUS_AGENCY_DEBENTURE[] = "GOVT";
+  const char SecurityType_EURO_CERTIFICATE_OF_DEPOSIT[] = "EUCD";
+  const char SecurityType_BANKERS_ACCEPTANCE[] = "BA";
+  const char SecurityType_AMENDEDRESTATED[] = "AMENDED";
+  const char SecurityType_TERM_LOAN[] = "TERM";
+  const char SecurityType_BANKNOTES[] = "BN";
+  const char SecurityType_SHORT_TERM_LOAN_NOTE[] = "STN";
+  const char SecurityType_AMENDED_RESTATED[] = "AMENDED";
+  const char SecurityType_INTEREST_RATE_SWAP[] = "IRS";
+  const char SecurityType_EUROCOMMERCIALPAPER[] = "EUCP";
+  const char SecurityType_US_TREASURY_NOTE_UST[] = "UST";
+  const char SecurityType_US_TREASURY_BILL_USTB[] = "USTB";
+  const char SecurityType_FEDERAL_NATIONAL_MORTGAGE_ASSOCIATION[] = "FN";
+  const char SecurityType_WITHDRAWN[] = "WITHDRN";
+  const char SecurityType_CORPORATE_PRIVATE_PLACEMENT[] = "CPP";
+  const char SecurityType_CERTIFICATE_OF_OBLIGATION[] = "COFO";
+  const char SecurityType_INTEREST_STRIP_FROM_ANY_BOND_OR_NOTE[] = "TINT";
+  const char SecurityType_STRUCTUREDNOTES[] = "STRUCT";
+  const char SecurityType_BANKERSACCEPTANCE[] = "BA";
+  const char SecurityType_NO_ISITC_SECURITY_TYPE[] = "NONE";
+  const char SecurityType_CALLLOANS[] = "CL";
+  const char SecurityType_MISCELLANEOUS_PASS_THROUGH[] = "MPT";
+  const char SecurityType_FEDERAL_AGENCY_COUPON[] = "FAC";
+  const char SecurityType_CORPORATE_BOND[] = "CORP";
+  const char SecurityType_WILDCARD_ENTRY_FOR_USE_ON_SECURITY_DEFINITION_REQUEST[] = "?";
+  const char SecurityType_CORPMORTGAGEBACKEDSECURITIES[] = "CMBS";
+  const char SecurityType_EURO_SUPRANATIONAL_COUPONS[] = "EUSUPRA";
+  const char SecurityType_CALL_LOANS[] = "CL";
+  const char SecurityType_CERTIFICATEOFDEPOSIT[] = "CD";
+  const char SecurityType_SECURED_LIQUIDITY_NOTE[] = "SLQN";
+  const char SecurityType_TIMEDEPOSIT[] = "TD";
+  const char SecurityType_BANK_NOTES[] = "BN";
+  const char SecurityType_US_TREASURY_BILL[] = "USTB";
+  const char SecurityType_GENERALOBLIGATIONBONDS[] = "GO";
+  const char SecurityType_COMMONSTOCK[] = "CS";
+  const char SecurityType_PLAZOSFIJOS[] = "PZFJ";
+  const char SecurityType_SECURITIES_LOAN[] = "SECLOAN";
+  const char SecurityType_SECURITIESLOAN[] = "SECLOAN";
+  const char SecurityType_MUNICIPAL_BOND[] = "MUNI";
+  const char SecurityType_REVENUE_BONDS[] = "REV";
+  const char SecurityType_SPECIALTAX[] = "SPCLT";
+  const char SecurityType_PRINCIPALSTRIPFROMANONCALLABLEBONDORNOTE[] = "TPRN";
+  const char SecurityType_BRIDGE_LOAN[] = "BRIDGE";
+  const char SecurityType_IOETTEMORTGAGE[] = "IET";
+  const char SecurityType_FEDERALAGENCYCOUPON[] = "FAC";
+  const char SecurityType_COMMON_STOCK[] = "CS";
+  const char SecurityType_FEDERALAGENCYDISCOUNTNOTE[] = "FADN";
+  const char RoundingDirection_ROUNDUP = '2';
+  const char RoundingDirection_ROUND_DOWN = '1';
+  const char RoundingDirection_ROUND_TO_NEAREST = '0';
+  const char RoundingDirection_ROUND_UP = '2';
+  const char RoundingDirection_ROUNDDOWN = '1';
+  const char RoundingDirection_ROUNDNEAREST = '0';
+  const char TimeUnit_MINUTE[] = "Min";
+  const char TimeUnit_WEEK[] = "Wk";
+  const char TimeUnit_SECOND[] = "S";
+  const char TimeUnit_MONTH[] = "Mo";
+  const char TimeUnit_HOUR[] = "H";
+  const char TimeUnit_DAY[] = "D";
+  const char TimeUnit_YEAR[] = "Yr";
+  const int LegSwapType_MODIFIED_DURATION = 2;
+  const int LegSwapType_PARFORPAR = 1;
+  const int LegSwapType_RISK = 4;
+  const int LegSwapType_PAR_FOR_PAR = 1;
+  const int LegSwapType_MODIFIEDDURATION = 2;
+  const int LegSwapType_PROCEEDS = 5;
+  const char IOITransType_REPLACE = 'R';
+  const char IOITransType_NEW = 'N';
+  const char IOITransType_CANCEL = 'C';
+  const int PosReqResult_REQUESTFORPOSITIONNOTSUPPORTED = 4;
+  const int PosReqResult_VALID_REQUEST = 0;
+  const int PosReqResult_NO_POSITIONS_FOUND_THAT_MATCH_CRITERIA = 2;
+  const int PosReqResult_NOT_AUTHORIZED_TO_REQUEST_POSITIONS = 3;
+  const int PosReqResult_INVALID_OR_UNSUPPORTED_REQUEST = 1;
+  const int PosReqResult_NOTAUTHORIZEDTOREQUESTPOSITIONS = 3;
+  const int PosReqResult_OTHER = 99;
+  const int PosReqResult_NOPOSITIONSFOUNDTHATMATCHCRITERIA = 2;
+  const int PosReqResult_REQUEST_FOR_POSITION_NOT_SUPPORTED = 4;
+  const int PosReqResult_INVALIDORUNSUPPORTEDREQUEST = 1;
+  const int PosReqResult_VALIDREQUEST = 0;
+  const char SettlInstMode_ACCOUNTOVERRIDING = '2';
+  const char SettlInstMode_REJECT = '5';
+  const char SettlInstMode_DEFAULT = '0';
+  const char SettlInstMode_REQUEST_REJECT = '5';
+  const char SettlInstMode_SPECIFIC_ALLOCATION_ACCOUNT_OVERRIDING = '2';
+  const char SettlInstMode_SIPROVIDED = '1';
+  const char SettlInstMode_ACCOUNTSTANDING = '3';
+  const char SettlInstMode_CIVORDERSINGLEACCT = '4';
+  const char SettlInstMode_SPECIFIC_ALLOCATION_ACCOUNT_STANDING = '3';
+  const char SettlInstMode_SPECIFIC_ORDER_FOR_A_SINGLE_ACCOUNT = '4';
+  const char SettlInstMode_STANDING_INSTRUCTIONS_PROVIDED = '1';
+  const char PreviouslyReported_NO = 'N';
+  const char PreviouslyReported_YES = 'Y';
+  const char CustOrderHandlingInst_PEGGED[] = "PEG";
+  const char CustOrderHandlingInst_MARKET_ON_OPEN[] = "MOO";
+  const char CustOrderHandlingInst_SCALE[] = "SCL";
+  const char CustOrderHandlingInst_FILL_OR_KILL[] = "FOK";
+  const char CustOrderHandlingInst_ALL_OR_NONE[] = "AON";
+  const char CustOrderHandlingInst_NOT_HELD[] = "NH";
+  const char CustOrderHandlingInst_DIRECTED_ORDER[] = "DIR";
+  const char CustOrderHandlingInst_STOP_STOCK_TRANSACTION[] = "S.W";
+  const char CustOrderHandlingInst_OVER_THE_DAY[] = "OVD";
+  const char CustOrderHandlingInst_ADD_ON_ORDER[] = "ADD";
+  const char CustOrderHandlingInst_MARKET_AT_CLOSE[] = "MAC";
+  const char CustOrderHandlingInst_LIMIT_ON_OPEN[] = "LOO";
+  const char CustOrderHandlingInst_CASH_NOT_HELD[] = "CNH";
+  const char CustOrderHandlingInst_MARKET_ON_CLOSE[] = "MOC";
+  const char CustOrderHandlingInst_TIME_ORDER[] = "TMO";
+  const char CustOrderHandlingInst_LIMIT_ON_CLOSE[] = "LOC";
+  const char CustOrderHandlingInst_IMMEDIATE_OR_CANCEL[] = "IOC";
+  const char CustOrderHandlingInst_TRAILING_STOP[] = "TS";
+  const char CustOrderHandlingInst_WORK[] = "WRK";
+  const char CustOrderHandlingInst_RESERVE_SIZE_ORDER[] = "RSV";
+  const char CustOrderHandlingInst_MINIMUM_QUANTITY[] = "MQT";
+  const char CustOrderHandlingInst_MARKET_AT_OPEN[] = "MAO";
+  const char CustOrderHandlingInst_IMBALANCE_ONLY[] = "IO";
+  const char CustOrderHandlingInst_EXCHANGE_FOR_PHYSICAL_TRANSACTION[] = "E.W";
+  const char SecurityStatus_INACTIVE[] = "2";
+  const char SecurityStatus_ACTIVE[] = "1";
+  const char ProcessCode_SOFT_DOLLAR = '1';
+  const char ProcessCode_STEPOUTSOFT = '5';
+  const char ProcessCode_STEPOUT = '3';
+  const char ProcessCode_PLAN_SPONSOR = '6';
+  const char ProcessCode_STEP_IN = '2';
+  const char ProcessCode_STEPIN = '2';
+  const char ProcessCode_REGULAR = '0';
+  const char ProcessCode_SOFTDOLLAR = '1';
+  const char ProcessCode_PLANSPONSOR = '6';
+  const char ProcessCode_STEPINSOFT = '4';
+  const char ProcessCode_SOFT_DOLLAR_STEP_OUT = '5';
+  const char ProcessCode_STEP_OUT = '3';
+  const char ProcessCode_SOFT_DOLLAR_STEP_IN = '4';
+  const char ExecInst_TRY_TO_STOP = 'Y';
+  const char ExecInst_PEG_TO_LIMIT_PRICE = 'd';
+  const char ExecInst_EXECUTE_AS_DURATION_NEUTRAL = 's';
+  const char ExecInst_PARTICIPANT_DONT_INITIATE = '6';
+  const char ExecInst_REINSTATE_ON_TRADING_HALT = 'J';
+  const char ExecInst_NO_CROSS = 'A';
+  const char ExecInst_PEGVWAP = 'W';
+  const char ExecInst_STRICT_SCALE = '7';
+  const char ExecInst_AON = 'G';
+  const char ExecInst_TRAILING_STOP_PEG = 'a';
+  const char ExecInst_TRAILSTOPPEG = 'a';
+  const char ExecInst_MARKPEG = 'P';
+  const char ExecInst_MIDPRCPEG = 'M';
+  const char ExecInst_OKCROSS = 'B';
+  const char ExecInst_EXECUTE_AS_FX_NEUTRAL = 't';
+  const char ExecInst_CUSTDISPINST = 'U';
+  const char ExecInst_IGNOREPRICECHK = 'c';
+  const char ExecInst_STRICTLIMIT = 'b';
+  const char ExecInst_WORKTOSTRATEGY = 'e';
+  const char ExecInst_OK_TO_CROSS = 'B';
+  const char ExecInst_SUSPEND_ON_SYSTEM_FAILURE = 'l';
+  const char ExecInst_REINSTATE_ON_SYSTEM_FAILURE = 'H';
+  const char ExecInst_GO_ALONG = '3';
+  const char ExecInst_INSTITONLY = 'I';
+  const char ExecInst_DO_NOT_INCREASE = 'E';
+  const char ExecInst_SUSPEND = 'S';
+  const char ExecInst_TRYTOSTOP = 'Y';
+  const char ExecInst_FIXED_PEG_TO_LOCAL_BEST_BID_OR_OFFER_AT_TIME_OF_ORDER = 'T';
+  const char ExecInst_SUSPEND_ON_TRADING_HALT = 'm';
+  const char ExecInst_INTERMARKET_SWEEP = 'f';
+  const char ExecInst_IGNORE_PRICE_VALIDITY_CHECKS = 'c';
+  const char ExecInst_PARTICIPATE_DONT_INITIATE = '6';
+  const char ExecInst_LASTPEG = 'L';
+  const char ExecInst_PEG_TO_VWAP = 'W';
+  const char ExecInst_PRIMARY_PEG = 'R';
+  const char ExecInst_NONNEGO = 'N';
+  const char ExecInst_BEST_EXECUTION = 'k';
+  const char ExecInst_STAY_ON_BID_SIDE = '9';
+  const char ExecInst_NOTHELD = '1';
+  const char ExecInst_STRICTSCALE = '7';
+  const char ExecInst_REINSTATE_ON_CONNECTION_LOSS = 'n';
+  const char ExecInst_DNI = 'E';
+  const char ExecInst_TRYTOSCALE = '8';
+  const char ExecInst_PERCENT_OF_VOLUME = 'D';
+  const char ExecInst_GOALONG = '3';
+  const char ExecInst_WORK = '2';
+  const char ExecInst_HELD = '5';
+  const char ExecInst_NOCROSS = 'A';
+  const char ExecInst_RELEASE_FROM_SUSPENSION = 'q';
+  const char ExecInst_STRICT_LIMIT = 'b';
+  const char ExecInst_OPENPEG = 'O';
+  const char ExecInst_STAY_ON_BIDSIDE = '9';
+  const char ExecInst_STAY_ON_OFFERSIDE = '0';
+  const char ExecInst_OVER_THE_DAY = '4';
+  const char ExecInst_RESTATEONTRADINGHALT = 'J';
+  const char ExecInst_INSTITUTIONS_ONLY = 'I';
+  const char ExecInst_NOT_HELD = '1';
+  const char ExecInst_CANCELONTRADINGHALT = 'K';
+  const char ExecInst_CANCELONSYSFAIL = 'Q';
+  const char ExecInst_CANCEL_ON_SYSTEM_FAILURE = 'Q';
+  const char ExecInst_MARKET_PEG = 'P';
+  const char ExecInst_TRADEALONG = 'X';
+  const char ExecInst_CALL_FIRST = 'C';
+  const char ExecInst_PEGTOLIMIT = 'd';
+  const char ExecInst_EXECUTE_AS_DELTA_NEUTRAL_USING_VOLATILITY_PROVIDED = 'r';
+  const char ExecInst_SINGLE_EXECUTION_REQUESTED_FOR_BLOCK_TRADE = 'j';
+  const char ExecInst_NON_NEGOTIABLE = 'N';
+  const char ExecInst_TRY_TO_SCALE = '8';
+  const char ExecInst_EXTERNAL_ROUTING_ALLOWED = 'g';
+  const char ExecInst_WORK_TO_TARGET_STRATEGY = 'e';
+  const char ExecInst_STAY_ON_OFFER_SIDE = '0';
+  const char ExecInst_CUSTOMER_DISPLAY_INSTRUCTION = 'U';
+  const char ExecInst_OVERDAY = '4';
+  const char ExecInst_LAST_PEG = 'L';
+  const char ExecInst_CALLFIRST = 'C';
+  const char ExecInst_REINSTATE_ON_SYSTEM_FAILUE = 'H';
+  const char ExecInst_DO_NOT_REDUCE = 'F';
+  const char ExecInst_MID_PRICE_PEG = 'M';
+  const char ExecInst_ALL_OR_NONE = 'G';
+  const char ExecInst_OPENING_PEG = 'O';
+  const char ExecInst_PERCVOL = 'D';
+  const char ExecInst_SUSPEND_ON_CONNECTION_LOSS = 'p';
+  const char ExecInst_CANCEL_ON_CONNECTION_LOSS = 'o';
+  const char ExecInst_EXTERNAL_ROUTING_NOT_ALLOWED = 'h';
+  const char ExecInst_CANCEL_IF_NOT_BEST = 'Z';
+  const char ExecInst_PARTNOTINIT = '6';
+  const char ExecInst_CXLIFNOTBEST = 'Z';
+  const char ExecInst_NETTING = 'V';
+  const char ExecInst_IMBALANCE_ONLY = 'i';
+  const char ExecInst_CANCEL_ON_TRADING_HALT = 'K';
+  const char ExecInst_TRADE_ALONG = 'X';
+  const char ExecInst_DNR = 'F';
+  const char ExecInst_STAYOFFER = '0';
+  const char ExecInst_STAYBID = '9';
+  const char ExecInst_RESTATEONSYSFAIL = 'H';
+  const char ExecInst_PRIMPEG = 'R';
+  const char ExecType_REPLACE = '5';
+  const char ExecType_NEW = '0';
+  const char ExecType_CALCULATED = 'B';
+  const char ExecType_PENDINGNEW = 'A';
+  const char ExecType_ORDERSTATUS = 'I';
+  const char ExecType_PENDING_CANCEL = '6';
+  const char ExecType_TRADE_IN_A_CLEARING_HOLD = 'J';
+  const char ExecType_TRADE_HAS_BEEN_RELEASED_TO_CLEARING = 'K';
+  const char ExecType_ORDER_STATUS = 'I';
+  const char ExecType_PENDING_CANCEL_REPLACE = '6';
+  const char ExecType_PARTIAL_FILL = '1';
+  const char ExecType_PENDINGCXL = '6';
+  const char ExecType_PENDING_NEW = 'A';
+  const char ExecType_STOPPED = '7';
+  const char ExecType_CANCELED = '4';
+  const char ExecType_PENDING_REPLACE = 'E';
+  const char ExecType_TRADE = 'F';
+  const char ExecType_TRADE_CORRECT = 'G';
+  const char ExecType_PENDINGREPLACE = 'E';
+  const char ExecType_SUSPENDED = '9';
+  const char ExecType_FILL = '2';
+  const char ExecType_DONE = '3';
+  const char ExecType_RESTATED = 'D';
+  const char ExecType_REJECTED = '8';
+  const char ExecType_REPLACED = '5';
+  const char ExecType_EXPIRED = 'C';
+  const char ExecType_DONE_FOR_DAY = '3';
+  const char ExecType_TRIGGERED_OR_ACTIVATED_BY_SYSTEM = 'L';
+  const char ExecType_TRADECORRECT = 'G';
+  const char ExecType_TRADECANCEL = 'H';
+  const char ExecType_TRADE_CANCEL = 'H';
+  const char ExecType_CANCELLED = '4';
+  const int MultilegModel_USER_DEFINED_MULTLEG_SECURITY = 1;
+  const int MultilegModel_PREDEFINED_MULTILEG_SECURITY = 0;
+  const int MultilegModel_USER_DEFINED_NON_SECURITIZED_MULTILEG = 2;
+  const int EventType_SWAP_NEXT_START_DATE = 11;
+  const int EventType_LAST_ELIGIBLE_TRADE_DATE = 7;
+  const int EventType_FIRST_DELIVERY_DATE = 13;
+  const int EventType_TENDER = 3;
+  const int EventType_INITIAL_INVENTORY_DUE_DATE = 15;
+  const int EventType_FIRST_INTENT_DATE = 17;
+  const int EventType_ACTIVATION = 5;
+  const int EventType_PUT = 1;
+  const int EventType_SWAP_START_DATE = 8;
+  const int EventType_SWAP_NEXT_ROLL_DATE = 12;
+  const int EventType_LAST_DELIVERY_DATE = 14;
+  const int EventType_POSITION_REMOVAL_DATE = 19;
+  const int EventType_SWAP_ROLL_DATE = 10;
+  const int EventType_FINAL_INVENTORY_DUE_DATE = 16;
+  const int EventType_OTHER = 99;
+  const int EventType_INACTIVIATION = 6;
+  const int EventType_SINKINGFUNDCALL = 4;
+  const int EventType_SWAP_END_DATE = 9;
+  const int EventType_LAST_INTENT_DATE = 18;
+  const int EventType_SINKING_FUND_CALL = 4;
+  const int EventType_CALL = 2;
+  const int TradeAllocIndicator_ALLOCATIONREQUIREDALLOCATIONINFORMATIONNOTPROVIDED = 1;
+  const int TradeAllocIndicator_ALLOCATION_REQUIRED = 1;
+  const int TradeAllocIndicator_ALLOCATION_TO_CLAIM_ACCOUNT = 5;
+  const int TradeAllocIndicator_USEALLOCATIONPROVIDEDWITHTHETRADE = 2;
+  const int TradeAllocIndicator_ALLOCATION_FROM_EXECUTOR = 4;
+  const int TradeAllocIndicator_USE_ALLOCATION_PROVIDED_WITH_THE_TRADE = 2;
+  const int TradeAllocIndicator_ALLOCATIONNOTREQUIRED = 0;
+  const int TradeAllocIndicator_ALLOCATION_NOT_REQUIRED = 0;
+  const int TradeAllocIndicator_ALLOCATION_GIVE_UP_EXECUTOR = 3;
+  const int UserStatus_NOT_LOGGED_IN = 2;
+  const int UserStatus_PASSWORD_INCORRECT = 4;
+  const int UserStatus_USERNOTRECOGNISED = 3;
+  const int UserStatus_LOGGED_IN = 1;
+  const int UserStatus_PASSWORDCHANGED = 5;
+  const int UserStatus_FORCED_USER_LOGOUT_BY_EXCHANGE = 7;
+  const int UserStatus_USER_NOT_RECOGNISED = 3;
+  const int UserStatus_NOTLOGGEDIN = 2;
+  const int UserStatus_PASSWORD_CHANGED = 5;
+  const int UserStatus_OTHER = 6;
+  const int UserStatus_LOGGEDIN = 1;
+  const int UserStatus_SESSION_SHUTDOWN_WARNING = 8;
+  const int UserStatus_PASSWORDINCORRECT = 4;
+  const char InstrRegistry_PHYSICAL[] = "ZZ";
+  const char InstrRegistry_COUNTRY[] = "ISO";
+  const char InstrRegistry_CUSTODIAN[] = "BIC";
+  const int OrderDelayUnit_WEEKS = 13;
+  const int OrderDelayUnit_TENTHS_OF_A_SECOND = 1;
+  const int OrderDelayUnit_SECONDS = 0;
+  const int OrderDelayUnit_MONTHS = 14;
+  const int OrderDelayUnit_YEARS = 15;
+  const int OrderDelayUnit_NANOSECONDS = 5;
+  const int OrderDelayUnit_HUNDREDTHS_OF_A_SECOND = 2;
+  const int OrderDelayUnit_HOURS = 11;
+  const int OrderDelayUnit_MICROSECONDS = 4;
+  const int OrderDelayUnit_MINUTES = 10;
+  const int OrderDelayUnit_MILLISECONDS = 3;
+  const int OrderDelayUnit_DAYS = 12;
+  const char TradedFlatSwitch_NO = 'N';
+  const char TradedFlatSwitch_YES = 'Y';
+  const int TrdRptStatus_ACCEPTED_WITH_ERRORS = 3;
+  const int TrdRptStatus_REJECTED = 1;
+  const int TrdRptStatus_ACCEPTED = 0;
+  const int QuoteStatus_CANCELEDDUETOLOCKMARKET = 14;
+  const int QuoteStatus_REJ = 5;
+  const int QuoteStatus_PENDING = 10;
+  const int QuoteStatus_LOCKEDMARKETWARNING = 12;
+  const int QuoteStatus_CROSSMARKETWARNING = 13;
+  const int QuoteStatus_REMOVED = 6;
+  const int QuoteStatus_CXLUNDER = 3;
+  const int QuoteStatus_PENDING_END_TRADE = 19;
+  const int QuoteStatus_CROSS_MARKET_WARNING = 13;
+  const int QuoteStatus_QUOTENOTFOUND = 9;
+  const int QuoteStatus_CANCELED = 17;
+  const int QuoteStatus_LOCKED_MARKET_WARNING = 12;
+  const int QuoteStatus_CXLSYM = 1;
+  const int QuoteStatus_CANCELED_FOR_UNDERLYING = 3;
+  const int QuoteStatus_UNSOLICITED_QUOTE_REPLENISHMENT = 18;
+  const int QuoteStatus_TOO_LATE_TO_END = 20;
+  const int QuoteStatus_CANCELED_DUE_TO_LOCK_MARKET = 14;
+  const int QuoteStatus_CANCELED_DUE_TO_CROSS_MARKET = 15;
+  const int QuoteStatus_ACCPT = 0;
+  const int QuoteStatus_CANCELED_FOR_SECURITY_TYPE = 2;
+  const int QuoteStatus_CANCELED_ALL = 4;
+  const int QuoteStatus_PASS = 11;
+  const int QuoteStatus_CANCELEDDUETOCROSSMARKET = 15;
+  const int QuoteStatus_REJECTED = 5;
+  const int QuoteStatus_QUERY = 8;
+  const int QuoteStatus_CXLSECTYPE = 2;
+  const int QuoteStatus_ACCEPTED = 0;
+  const int QuoteStatus_EXPIRED = 7;
+  const int QuoteStatus_CANCELED_FOR_SYMBOL = 1;
+  const int QuoteStatus_REMOVED_FROM_MARKET = 6;
+  const int QuoteStatus_ACTIVE = 16;
+  const int QuoteStatus_CANCEL_FOR_SYMBOL = 1;
+  const int QuoteStatus_CXLALL = 4;
+  const int QuoteStatus_QUOTE_NOT_FOUND = 9;
+  const char SolicitedFlag_NO = 'N';
+  const char SolicitedFlag_YES = 'Y';
+  const int RiskLimitType_GROSS_LIMIT = 1;
+  const int RiskLimitType_SHORT_LIMIT = 5;
+  const int RiskLimitType_LONG_LIMIT = 4;
+  const int RiskLimitType_NET_LIMIT = 2;
+  const int RiskLimitType_EXPOSURE = 3;
+  const int ShortSaleReason_DEALER_SOLD_SHORT = 0;
+  const int ShortSaleReason_DEALERSOLDSHORTEXEMPT = 1;
+  const int ShortSaleReason_QSR_OR_AGU_CONTRA_SIDE_SOLD_SHORT_EXEMPT = 5;
+  const int ShortSaleReason_DEALERSOLDSHORT = 0;
+  const int ShortSaleReason_SELLING_CUSTOMER_SOLD_SHORT = 2;
+  const int ShortSaleReason_SELLING_CUSTOMER_SOLD_SHORT_EXEMPT = 3;
+  const int ShortSaleReason_SELLINGCUSTOMERSOLDSHORT = 2;
+  const int ShortSaleReason_SELLINGCUSTOMERSOLDSHORTEXEMPT = 3;
+  const int ShortSaleReason_DEALER_SOLD_SHORT_EXEMPT = 1;
+  const int ShortSaleReason_QSRORAGUCONTRASIDESOLDSHORT = 4;
+  const int ShortSaleReason_QUALIFIED_SERVICE_REPRESENTATIVE = 4;
+  const int ShortSaleReason_QSRORAGUCONTRASIDESOLDSHORTEXEMPT = 5;
+  const int PegRoundDirection_MOREPASSIVE = 2;
+  const int PegRoundDirection_MOREAGGRESSIVE = 1;
+  const int PegRoundDirection_MORE_AGGRESSIVE = 1;
+  const int PegRoundDirection_MORE_PASSIVE = 2;
+  const int ModelType_PROPRIETARY = 1;
+  const int ModelType_UTILITY_PROVIDED_STANDARD_MODEL = 0;
+  const char FuturesValuationMethod_FUTURES_STYLE_WITH_AN_ATTACHED_CASH_ADJUSTMENT[] = "FUTDA";
+  const char FuturesValuationMethod_PREMIUM_STYLE[] = "EQTY";
+  const char FuturesValuationMethod_FUTURES_STYLE_MARK_TO_MARKET[] = "FUT";
+  const char SettlMethod_CASH_SETTLEMENT_REQUIRED = 'C';
+  const char SettlMethod_PHYSICAL_SETTLEMENT_REQUIRED = 'P';
+  const int ConfirmStatus_CONFIRMED = 4;
+  const int ConfirmStatus_REQUESTREJECTED = 5;
+  const int ConfirmStatus_MISSINGSETTLEMENTINSTRUCTIONS = 3;
+  const int ConfirmStatus_MISSING_SETTLEMENT_INSTRUCTIONS = 3;
+  const int ConfirmStatus_REQUEST_REJECTED = 5;
+  const int ConfirmStatus_MISMATCHEDACCOUNT = 2;
+  const int ConfirmStatus_MISMATCHED_ACCOUNT = 2;
+  const int ConfirmStatus_RECEIVED = 1;
+  const char LocateReqd_NO = 'N';
+  const char LocateReqd_YES = 'Y';
+  const int Adjustment_CANCEL = 1;
+  const int Adjustment_CORRECTION = 3;
+  const int Adjustment_ERROR = 2;
+  const int StreamAsgnType_ASSIGNMENT = 1;
+  const int StreamAsgnType_TERMINATE_UNASSIGN = 3;
+  const int StreamAsgnType_REJECTED = 2;
+  const char LastRptRequested_NO = 'N';
+  const char LastRptRequested_YES = 'Y';
+  const char SettlSessID_END_OF_DAY[] = "EOD";
+  const char SettlSessID_REGULAR_TRADING_HOURS[] = "RTH";
+  const char SettlSessID_ELECTRONIC_TRADING_HOURS[] = "ETH";
+  const char SettlSessID_INTRADAY[] = "ITD";
+  const int TradeReportType_NO_WAS = 5;
+  const int TradeReportType_ADDENDUM = 4;
+  const int TradeReportType_7 = 7;
+  const int TradeReportType_PENDED = 10;
+  const int TradeReportType_LOCKEDINTRADEBREAK = 7;
+  const int TradeReportType_DEFAULTED = 8;
+  const int TradeReportType_DECLINE = 3;
+  const int TradeReportType_ALLEGED_NEW = 11;
+  const int TradeReportType_ALLEGED_TRADE_REPORT_CANCEL = 14;
+  const int TradeReportType_ALLEGED_15 = 15;
+  const int TradeReportType_ALLEGED_ADDENDUM = 12;
+  const int TradeReportType_ALLEGED = 1;
+  const int TradeReportType_SUBMIT = 0;
+  const int TradeReportType_NOWAS = 5;
+  const int TradeReportType_ALLEGED_1 = 1;
+  const int TradeReportType_INVALID_CMTA = 9;
+  const int TradeReportType_TRADEREPORTCANCEL = 6;
+  const int TradeReportType_TRADE_REPORT_CANCEL = 6;
+  const int TradeReportType_ALLEGED_NO_WAS = 13;
+  const int TradeReportType_ACCEPT = 2;
+  const int ExerciseStyle_AMERICAN = 1;
+  const int ExerciseStyle_EUROPEAN = 0;
+  const int ExerciseStyle_BERMUDA = 2;
+  const char HaltReasonChar_EQUIPCHANGE = 'X';
+  const char HaltReasonChar_ADDITIONAL_INFORMATION = 'M';
+  const char HaltReasonChar_ORDINFL = 'E';
+  const char HaltReasonChar_NEW_PENDING = 'P';
+  const char HaltReasonChar_NEWSDISS = 'D';
+  const char HaltReasonChar_NEWS_PENDING = 'P';
+  const char HaltReasonChar_ORDER_INFLUX = 'E';
+  const char HaltReasonChar_NEWS_DISSEMINATION = 'D';
+  const char HaltReasonChar_ADDINFO = 'M';
+  const char HaltReasonChar_ORDIMB = 'I';
+  const char HaltReasonChar_EQUIPMENT_CHANGEOVER = 'X';
+  const char HaltReasonChar_ORDER_IMBALANCE = 'I';
+  const char HaltReasonChar_NEWSPEND = 'P';
+  const char ExDestination_POSIT = '4';
+  const char ExDestination_NONE = '0';
+  const int AllocReportType_SELLSIDE_CALCULATED_WITHOUT_PRELIMINARY = 4;
+  const int AllocReportType_WAREHOUSE_RECAP = 5;
+  const int AllocReportType_REJECT = 10;
+  const int AllocReportType_REQUESTTOINTERMEDIARY = 8;
+  const int AllocReportType_ACCEPT_PENDING = 11;
+  const int AllocReportType_REQUEST_TO_INTERMEDIARY = 8;
+  const int AllocReportType_COMPLETE = 12;
+  const int AllocReportType_SELLSIDECALCULATEDUSINGPRELIMINARY = 3;
+  const int AllocReportType_PRELIMINARY_REQUEST_TO_INTERMEDIARY = 2;
+  const int AllocReportType_SELLSIDE_CALCULATED_USING_PRELIMINARY = 3;
+  const int AllocReportType_REVERSE_PENDING = 14;
+  const int AllocReportType_WAREHOUSERECAP = 5;
+  const int AllocReportType_ACCEPT = 9;
+  const int AllocReportType_SELLSIDECALCULATEDWITHOUTPRELIMINARY = 4;
+  const int AllocType_BUYSIDEREADYTOBOOKSINGLE = 5;
+  const int AllocType_SELLSIDE_CALCULATED_WITHOUT_PRELIMINARY = 4;
+  const int AllocType_CALCULATED = 1;
+  const int AllocType_INCOMPLETE_GROUP = 12;
+  const int AllocType_REVERSAL_PENDING = 14;
+  const int AllocType_PRELIMINARY = 2;
+  const int AllocType_REJECT = 10;
+  const int AllocType_WAREHOUSEINSTRUCTION = 7;
+  const int AllocType_BUYSIDEPRELIM = 2;
+  const int AllocType_REQUESTTOINTERMEDIARY = 8;
+  const int AllocType_ACCEPT_PENDING = 11;
+  const int AllocType_BUYSIDEREADYTOBOOKCOMBINED = 6;
+  const int AllocType_BUYSIDE_CALCULATED = 1;
+  const int AllocType_REQUEST_TO_INTERMEDIARY = 8;
+  const int AllocType_SELLSIDECALCWITHOUTPRELIM = 4;
+  const int AllocType_BUYSIDE_READY_TO_BOOK_5 = 5;
+  const int AllocType_BUYSIDE_READY_TO_BOOK_6 = 6;
+  const int AllocType_COMPLETE_GROUP = 13;
+  const int AllocType_BUYSIDECALC = 1;
+  const int AllocType_SELLSIDE_CALCULATED_USING_PRELIMINARY = 3;
+  const int AllocType_READY_TO_BOOK = 5;
+  const int AllocType_BUYSIDE_READY_TO_BOOK = 6;
+  const int AllocType_WAREHOUSE_INSTRUCTION = 7;
+  const int AllocType_BUYSIDE_PRELIMINARY = 2;
+  const int AllocType_ACCEPT = 9;
+  const int AllocType_SELLSIDECALC = 3;
+  const int QuoteRequestRejectReason_INSUFFICIENT_CREDIT = 11;
+  const int QuoteRequestRejectReason_NOMARKETFORINSTRUMENT = 8;
+  const int QuoteRequestRejectReason_NOTAUTHTOREQQUOTE = 6;
+  const int QuoteRequestRejectReason_NOT_AUTHORIZED_TO_REQUEST_QUOTE = 6;
+  const int QuoteRequestRejectReason_QUOTEREQUESTEXLIMIT = 3;
+  const int QuoteRequestRejectReason_INVALID_PRICE = 5;
+  const int QuoteRequestRejectReason_EXCHANGECLOSED = 2;
+  const int QuoteRequestRejectReason_TOOLATE = 4;
+  const int QuoteRequestRejectReason_INVPRICE = 5;
+  const int QuoteRequestRejectReason_NOMATCHFORINQUIRY = 7;
+  const int QuoteRequestRejectReason_TOO_LATE_TO_ENTER = 4;
+  const int QuoteRequestRejectReason_NO_MATCH_FOR_INQUIRY = 7;
+  const int QuoteRequestRejectReason_UNKNOWNSYM = 1;
+  const int QuoteRequestRejectReason_EXCHANGE = 2;
+  const int QuoteRequestRejectReason_NO_MARKET_FOR_INSTRUMENT = 8;
+  const int QuoteRequestRejectReason_UNKNOWN_SYMBOL = 1;
+  const int QuoteRequestRejectReason_OTHER = 99;
+  const int QuoteRequestRejectReason_PASS = 10;
+  const int QuoteRequestRejectReason_NOINVENTORY = 9;
+  const int QuoteRequestRejectReason_NO_INVENTORY = 9;
+  const int QuoteRequestRejectReason_QUOTE_REQUEST_EXCEEDS_LIMIT = 3;
+  const int LiquidityIndType_5DAY = 1;
+  const int LiquidityIndType_NORMAL = 3;
+  const int LiquidityIndType_20_DAY_MOVING_AVERAGE = 2;
+  const int LiquidityIndType_5_DAY_MOVING_AVERAGE = 1;
+  const int LiquidityIndType_5DAY_MOVING_AVERAGE = 1;
+  const int LiquidityIndType_NORMAL_MARKET_SIZE = 3;
+  const int LiquidityIndType_OTHER = 4;
+  const int LiquidityIndType_20DAY = 2;
+  const int StatusValue_IN_PROCESS = 4;
+  const int StatusValue_NOTCONNECTEDDOWNEXPECTEDUP = 2;
+  const int StatusValue_NOT_CONNECTED_2 = 2;
+  const int StatusValue_NOTCONNECTEDDOWNEXPECTEDDOWN = 3;
+  const int StatusValue_CONNECTED = 1;
+  const int StatusValue_NOT_CONNECTED_3 = 3;
+  const int StatusValue_INPROCESS = 4;
+  const char PosType_INTRA_SPREAD_QTY[] = "IAS";
+  const char PosType_INTER_SPREAD_QTY[] = "IES";
+  const char PosType_TRANSFER_TRADE_QTY[] = "TRF";
+  const char PosType_EXCHANGE_FOR_PHYSICAL_QTY[] = "EP";
+  const char PosType_TRANSFERTRADEQTY[] = "TRF";
+  const char PosType_TRANSACTIONQUANTITY[] = "TQ";
+  const char PosType_ADJUSTMENTQTY[] = "PA";
+  const char PosType_START_OF_DAY_QTY[] = "SOD";
+  const char PosType_ENDOFDAYQTY[] = "FIN";
+  const char PosType_DELIVERY_QTY[] = "DLV";
+  const char PosType_TRANSACTIONFROMEXERCISE[] = "TX";
+  const char PosType_OPTIONEXERCISEQTY[] = "EX";
+  const char PosType_DELIVERYQTY[] = "DLV";
+  const char PosType_OPTION_ASSIGNMENT[] = "AS";
+  const char PosType_PIT_TRADE_QTY[] = "PIT";
+  const char PosType_TRANSACTION_FROM_ASSIGNMENT[] = "TA";
+  const char PosType_TRANSACTION_FROM_EXERCISE[] = "TX";
+  const char PosType_INTEGRALSPLIT[] = "SPL";
+  const char PosType_ELECTRONICTRADEQTY[] = "ETR";
+  const char PosType_AS_OF_TRADE_QTY[] = "ASF";
+  const char PosType_ELECTRONIC_TRADE_QTY[] = "ETR";
+  const char PosType_PITTRADEQTY[] = "PIT";
+  const char PosType_OPTIONASSIGNMENT[] = "AS";
+  const char PosType_SUCCESSION_EVENT_ADJUSTMENT[] = "SEA";
+  const char PosType_OPTION_EXERCISE_QTY[] = "EX";
+  const char PosType_TRANSACTION_QUANTITY[] = "TQ";
+  const char PosType_NET_DELTA_QTY[] = "DLT";
+  const char PosType_END_OF_DAY_QTY[] = "FIN";
+  const char PosType_ADJUSTMENT_QTY[] = "PA";
+  const char PosType_TOTAL_TRANSACTION_QTY[] = "TOT";
+  const char PosType_DELIVERY_NOTICE_QTY[] = "DN";
+  const char PosType_RECEIVE_QUANTITY[] = "RCV";
+  const char PosType_ASOFTRADEQTY[] = "ASF";
+  const char PosType_ALLOCATIONTRADEQTY[] = "ALC";
+  const char PosType_CREDIT_EVENT_ADJUSTMENT[] = "CEA";
+  const char PosType_PRIVATELY_NEGOTIATED_TRADE_QTY[] = "PNTN";
+  const char PosType_CROSS_MARGIN_QTY[] = "XM";
+  const char PosType_CORPORATE_ACTION_ADJUSTMENT[] = "CAA";
+  const char PosType_TOTALTRANSACTIONQTY[] = "TOT";
+  const char PosType_STARTOFDAYQTY[] = "SOD";
+  const char PosType_INTEGRAL_SPLIT[] = "SPL";
+  const char PosType_INTERSPREADQTY[] = "IES";
+  const char PosType_INTRASPREADQTY[] = "IAS";
+  const char PosType_ALLOCATION_TRADE_QTY[] = "ALC";
+  const char PosType_CROSSMARGINQTY[] = "XM";
+  const char PosType_TRANSACTIONFROMASSIGNMENT[] = "TA";
+  const int StreamAsgnAckType_ASSIGNMENT_REJECTED = 1;
+  const int StreamAsgnAckType_ASSIGNMENT_ACCEPTED = 0;
+  const int RiskInstrumentOperator_EXCLUDE = 2;
+  const int RiskInstrumentOperator_INCLUDE = 1;
+  const int MiscFeeBasis_PERUNIT = 1;
+  const int MiscFeeBasis_ABSOLUTE = 0;
+  const int MiscFeeBasis_PERCENTAGE = 2;
+  const int MiscFeeBasis_PER_UNIT = 1;
+  const char OrdType_FOREX_MARKET = 'C';
+  const char OrdType_FOREX_PREVIOUSLY_QUOTED = 'H';
+  const char OrdType_ONBASIS = '9';
+  const char OrdType_PREVIOUSLYINDICATED = 'E';
+  const char OrdType_PREVIOUS_FUND_VALUATION_POINT = 'L';
+  const char OrdType_PEGGED = 'P';
+  const char OrdType_LIMITONCLOSE = 'B';
+  const char OrdType_LIMIT_WITH_OR_WITHOUT = '8';
+  const char OrdType_STOP_LIMIT = '4';
+  const char OrdType_FOREX_SWAP = 'G';
+  const char OrdType_WITHORWITHOUT = '6';
+  const char OrdType_FOREXLIMIT = 'F';
+  const char OrdType_MARKET_WITH_LEFT_OVER_AS_LIMIT = 'K';
+  const char OrdType_PREVIOUSLYQUOTED = 'D';
+  const char OrdType_PREVIOUSLY_QUOTED = 'D';
+  const char OrdType_COUNTER_ORDER_SELECTION = 'Q';
+  const char OrdType_LIMITWITHORWITHOUT = '8';
+  const char OrdType_FOREXSWAP = 'G';
+  const char OrdType_MARKET_IF_TOUCHED = 'J';
+  const char OrdType_NEXT_FUND_VALUATION_POINT = 'M';
+  const char OrdType_FOREX_C = 'C';
+  const char OrdType_ON_CLOSE = 'A';
+  const char OrdType_STOP = '3';
+  const char OrdType_STOPLIMIT = '4';
+  const char OrdType_LIMITORBETTER = '7';
+  const char OrdType_ONCLOSE = 'A';
+  const char OrdType_FOREX_LIMIT = 'F';
+  const char OrdType_FOREXMARKET = 'C';
+  const char OrdType_FOREX = 'C';
+  const char OrdType_MARKETIFTOUCHED = 'J';
+  const char OrdType_FUNARI = 'I';
+  const char OrdType_FOREX_F = 'F';
+  const char OrdType_PREVIOUSLY_INDICATED = 'E';
+  const char OrdType_WITH_OR_WITHOUT = '6';
+  const char OrdType_MARKET_ON_CLOSE = '5';
+  const char OrdType_LIMIT = '2';
+  const char OrdType_MARKET_WITH_LEFTOVER_AS_LIMIT = 'K';
+  const char OrdType_FOREX_G = 'G';
+  const char OrdType_LIMIT_ON_CLOSE = 'B';
+  const char OrdType_MARKETONCLOSE = '5';
+  const char OrdType_PREVIOUSFUNDVALUATIONPOINT = 'L';
+  const char OrdType_NEXTFUNDVALUATIONPOINT = 'M';
+  const char OrdType_FOREX_H = 'H';
+  const char OrdType_FOREXPREVIOUSLYQUOTED = 'H';
+  const char OrdType_MARKETWITHLEFTOVERLIMIT = 'K';
+  const char OrdType_ON_BASIS = '9';
+  const char OrdType_LIMIT_OR_BETTER = '7';
+  const char OrdType_MARKET = '1';
+  const char MatchType_ACT_DEFAULT_AFTER_M2[] = "M5";
+  const char MatchType_SUMMARIZEDMATCHUSINGA2[] = "S2";
+  const char MatchType_COUNTER_ORDER_SELECTION_6[] = "6";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND[] = "A4";
+  const char MatchType_SUMMARIZED_MATCH_USING_A4_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED[] = "S4";
+  const char MatchType_NON_ACT[] = "MT";
+  const char MatchType_SUMMARIZEDMATCHUSINGA3[] = "S3";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S1[] = "S1";
+  const char MatchType_SUMMARIZED_MATCH_MINUS_BADGES_AND_TIMES_ACT_M2_MATCH[] = "M2";
+  const char MatchType_SUMMARIZEDMATCHUSINGA4[] = "S4";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S2[] = "S2";
+  const char MatchType_TWO_PARTY_PRIVATELY_NEGOTIATED_TRADE_REPORT[] = "61";
+  const char MatchType_SUMMARIZEDMATCHUSINGA5[] = "S5";
+  const char MatchType_NASDAQACTM2MATCH[] = "ACTM2";
+  const char MatchType_CROSS_AUCTION_5[] = "5";
+  const char MatchType_ACT_M1_MATCH[] = "M1";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_TWO_BADGES[] = "A4";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S3[] = "S3";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSTWOBADGES[] = "A4";
+  const char MatchType_NASDAQACTDEFAULTAFTERM2[] = "ACTM5";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSFOURBADGES[] = "A2";
+  const char MatchType_NASDAQACTM1MATCH[] = "ACTM1";
+  const char MatchType_CALL_AUCTION_7[] = "7";
+  const char MatchType_CROSS_AUCTION_63[] = "63";
+  const char MatchType_ISSUING_BUY_BACK_AUCTION[] = "8";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S4[] = "S4";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_EXECUTION_TIME[] = "A5";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSFOURBADGESANDEXECUTIONTIME[] = "A1";
+  const char MatchType_ONE_PARTY_TRADE_REPORT[] = "1";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S5[] = "S5";
+  const char MatchType_ACT_M2_MATCH[] = "M2";
+  const char MatchType_SUMMARIZEDMATCHMINUSBADGESANDTIMES[] = "M2";
+  const char MatchType_NASDAQACTDEFAULTTRADE[] = "ACTM4";
+  const char MatchType_CALL_AUCTION[] = "7";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_MINUS_BADGES_AND_TIMES_ACT_M1_MATCH[] = "M1";
+  const char MatchType_ACT_ACCEPTED_TRADE[] = "M3";
+  const char MatchType_TWO_PARTY_TRADE_REPORT[] = "2";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIED[] = "S1";
+  const char MatchType_CONTINUOUS_AUTO_MATCH[] = "62";
+  const char MatchType_ONE_PARTY_PRIVATELY_NEGOTIATED_TRADE_REPORT[] = "60";
+  const char MatchType_ACT_M6_MATCH[] = "M6";
+  const char MatchType_SUMMARIZED_MATCH_USING_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED[] = "S5";
+  const char MatchType_ACT_DEFAULT_TRADE[] = "M4";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORMINUSBADGESANDTIMES[] = "M1";
+  const char MatchType_COMPARED_RECORDS_RESULTING_FROM_STAMPED_ADVISORIES_OR_SPECIALIST[] = "AQ";
+  const char MatchType_AUTO_MATCH[] = "4";
+  const char MatchType_NASDAQACTM6MATCH[] = "ACTM6";
+  const char MatchType_OCSLOCKEDIN[] = "MT";
+  const char MatchType_COUNTER_ORDER_SELECTION[] = "6";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_FOUR_BADGES[] = "A2";
+  const char MatchType_SUMMARIZED_MATCH_USING_A3_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED[] = "S3";
+  const char MatchType_NASDAQACTACCEPTEDTRADE[] = "ACTM3";
+  const char MatchType_CALL_AUCTION_65[] = "65";
+  const char MatchType_CROSS_AUCTION[] = "5";
+  const char MatchType_OCS_LOCKED_IN_NON_ACT[] = "MT";
+  const char MatchType_CONFIRMED_TRADE_REPORT[] = "3";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADETYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_EXECUTION_TIME[] = "A5";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSTWOBADGESANDEXECUTIONTIME[] = "A3";
+  const char MatchType_SUMMARIZED_MATCH_USING_A2_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED[] = "S2";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSEXECUTIONTIME[] = "A5";
+  const char MatchType_NASDAQNONACT[] = "ACTMT";
+  const char MatchType_COMPAREDRECORDSRESULTINGFROMSTAMPEDADVISORIESORSPECIALISTACCEPTSPAIROFFS[] = "AQ";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_TWO_BADGES_AND_EXECUTION_TIME[] = "A3";
+  const char MatchType_COMPARED_RECORDS_RESULTING_FROM_STAMPED_ADVISORIES_OR_SPECIALIST_ACCEPTS_PAIR_OFFS[] = "AQ";
+  const char MatchType_SUMMARIZEDMATCHUSINGA1[] = "S1";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_FOUR_BADGES_AND_EXECUTION_TIME[] = "A1";
+  const char MatchType_COUNTER_ORDER_SELECTION_64[] = "64";
+  const int OptPayoutType_BINARY = 3;
+  const int OptPayoutType_VANILLA = 1;
+  const int OptPayoutType_CAPPED = 2;
+  const char MarketUpdateAction_DELETE = 'D';
+  const char MarketUpdateAction_ADD = 'A';
+  const char MarketUpdateAction_MODIFY = 'M';
+  const int CollAsgnRejectReason_INVALIDTYPEOFCOLLATERAL = 4;
+  const int CollAsgnRejectReason_UNAUTHORIZED_TRANSACTION = 2;
+  const int CollAsgnRejectReason_UNKNOWN_OR_INVALID_INSTRUMENT = 1;
+  const int CollAsgnRejectReason_UNKNOWNDEAL = 0;
+  const int CollAsgnRejectReason_UNKNOWN_DEAL = 0;
+  const int CollAsgnRejectReason_UNAUTHORIZEDTRANSACTION = 2;
+  const int CollAsgnRejectReason_INVALID_TYPE_OF_COLLATERAL = 4;
+  const int CollAsgnRejectReason_INSUFFICIENTCOLLATERAL = 3;
+  const int CollAsgnRejectReason_UNKNOWNORINVALIDINSTRUMENT = 1;
+  const int CollAsgnRejectReason_EXCESSIVE_SUBSTITUTION = 5;
+  const int CollAsgnRejectReason_OTHER = 99;
+  const int CollAsgnRejectReason_INSUFFICIENT_COLLATERAL = 3;
+  const int CollAsgnRejectReason_EXCESSIVESUBSTITUTION = 5;
+  const int IndividualAllocType_SUB_ALLOCATE = 1;
+  const int IndividualAllocType_THIRD_PARTY_ALLOCATION = 2;
+  const int GTBookingInst_ACCUMUNTILFILL = 1;
+  const int GTBookingInst_ACCUMUNTILNOTIFY = 2;
+  const int GTBookingInst_BOOK_OUT_ALL_TRADES_ON_DAY_OF_EXECUTION = 0;
+  const int GTBookingInst_ACCUMULATE_UNTIL_VERBALLY_NOTIFIED_OTHERWISE = 2;
+  const int GTBookingInst_ACCUMULATE_EXECUTIONS_UNTIL_ORDER_IS_FILLED_OR_EXPIRES = 1;
+  const int GTBookingInst_BOOKALL = 0;
+  const int GTBookingInst_ACCUMULATE_UNTIL_VERBALLLY_NOTIFIED_OTHERWISE = 2;
+  const int GTBookingInst_ACCUMULATE_EXECTUIONS_UNTIL_FORDER_IS_FILLED_OR_EXPIRES = 1;
+  const int PutOrCall_PUT = 0;
+  const int PutOrCall_CALL = 1;
+  const char FundRenewWaiv_NO = 'N';
+  const char FundRenewWaiv_YES = 'Y';
+  const char ForexReq_NO = 'N';
+  const char ForexReq_YES = 'Y';
+  const int TickRuleType_TRADED_AS_A_SPREAD_LEG = 3;
+  const int TickRuleType_REGULAR = 0;
+  const int TickRuleType_VARIABLE = 1;
+  const int TickRuleType_SETTLED_AS_A_SPREAD_LEG = 4;
+  const int TickRuleType_FIXED = 2;
+  const int DiscretionOffsetType_PRICE = 0;
+  const int DiscretionOffsetType_BASISPOINTS = 1;
+  const int DiscretionOffsetType_PRICE_TIER = 3;
+  const int DiscretionOffsetType_TICKS = 2;
+  const int DiscretionOffsetType_PRICETIERLEVEL = 3;
+  const int DiscretionOffsetType_BASIS_POINTS = 1;
+  const int ConfirmTransType_REPLACE = 1;
+  const int ConfirmTransType_NEW = 0;
+  const int ConfirmTransType_CANCEL = 2;
+  const int MDSecSizeType_CUSTOMER = 1;
+  const int TradSesEvent_CHANGE_OF_TRADING_STATUS = 3;
+  const int TradSesEvent_CHANGE_OF_TRADING_SESSION = 1;
+  const int TradSesEvent_CHANGE_OF_TRADING_SUBSESSION = 2;
+  const int TradSesEvent_TRADING_RESUMES = 0;
+  const char DlvyInstType_SECURITIES = 'S';
+  const char DlvyInstType_CASH = 'C';
+  const char TradeCondition_IMPLIED_TRADE[] = "1";
+  const char TradeCondition_CASHMKT[] = "A";
+  const char TradeCondition_OPENING_PRICE[] = "R";
+  const char TradeCondition_PRIOR_REFERENCE_PRICE[] = "AK";
+  const char TradeCondition_CANCEL_LAST_ETH[] = "l";
+  const char TradeCondition_SELLER[] = "L";
+  const char TradeCondition_DISTRIBUTION[] = "e";
+  const char TradeCondition_NEXT_DAY_TRADE[] = "J";
+  const char TradeCondition_STRADDLE_ETH[] = "AD";
+  const char TradeCondition_SPREAD[] = "AA";
+  const char TradeCondition_OPENINGPRICE[] = "R";
+  const char TradeCondition_CROSSED_AO[] = "AO";
+  const char TradeCondition_SOLD_LAST_SALE[] = "o";
+  const char TradeCondition_OPENED_SALE_ETH[] = "r";
+  const char TradeCondition_REOPEN_ETH[] = "x";
+  const char TradeCondition_SOLD_LAST_SALE_ETH[] = "m";
+  const char TradeCondition_STOPPED_SOLD_LAST[] = "AL";
+  const char TradeCondition_TRADES_RESULTING_FROM_INTERMARKET_SWEEP[] = "Z";
+  const char TradeCondition_NEXTDAY_D[] = "D";
+  const char TradeCondition_FORM_T[] = "AR";
+  const char TradeCondition_ADJUSTED[] = "y";
+  const char TradeCondition_CANCEL_ETH[] = "i";
+  const char TradeCondition_OUT_OF_SEQUENCE_ETH[] = "k";
+  const char TradeCondition_RULE127[] = "G";
+  const char TradeCondition_COMBO_ETH[] = "AI";
+  const char TradeCondition_CANCEL_ONLY_ETH[] = "t";
+  const char TradeCondition_STRADDLE[] = "AC";
+  const char TradeCondition_OUTSIDE_SPREAD[] = "AV";
+  const char TradeCondition_BUNCHED_SALE[] = "f";
+  const char TradeCondition_CANCEL_STOPPED[] = "h";
+  const char TradeCondition_LATE_OPEN_ETH[] = "u";
+  const char TradeCondition_OPENING_REOPENING_TRADE_DETAIL[] = "E";
+  const char TradeCondition_CANCEL[] = "0";
+  const char TradeCondition_COMBO[] = "AH";
+  const char TradeCondition_OPENING[] = "E";
+  const char TradeCondition_ACQUISITION[] = "c";
+  const char TradeCondition_OPENED[] = "K";
+  const char TradeCondition_CANCEL_ONLY[] = "s";
+  const char TradeCondition_NEXT_DAY[] = "D";
+  const char TradeCondition_BARGAIN_CONDITION[] = "S";
+  const char TradeCondition_STOPPED[] = "AE";
+  const char TradeCondition_CONVERTED_PRICE_INDICATOR[] = "T";
+  const char TradeCondition_OFFICIAL_CLOSING_PRICE[] = "AJ";
+  const char TradeCondition_ADJUSTED_ETH[] = "z";
+  const char TradeCondition_AVGPX[] = "B";
+  const char TradeCondition_RULE_155_TRADE[] = "H";
+  const char TradeCondition_SOLDLAST[] = "I";
+  const char TradeCondition_NEXTDAY_J[] = "J";
+  const char TradeCondition_AUTOMATIC_EXECUTION[] = "AQ";
+  const char TradeCondition_CROSSED_X[] = "X";
+  const char TradeCondition_AUTO_EXECUTION_ETH[] = "v";
+  const char TradeCondition_MULTILEG_TO_MULTILEG_TRADE[] = "4";
+  const char TradeCondition_OFFICAL_CLOSING_PRICE[] = "AN";
+  const char TradeCondition_FINAL_PRICE_OF_SESSION[] = "V";
+  const char TradeCondition_BASKET_INDEX[] = "AS";
+  const char TradeCondition_TRADES_RESULTING_FROM_MANUAL_SLOW_QUOTE[] = "Y";
+  const char TradeCondition_STOPPED_STOCK[] = "N";
+  const char TradeCondition_MULT_ASSET_CLASS_MULTILEG_TRADE[] = "3";
+  const char TradeCondition_STOPPED_ETH[] = "AF";
+  const char TradeCondition_REGULAR_ETH[] = "AG";
+  const char TradeCondition_CANCEL_OPEN[] = "p";
+  const char TradeCondition_CASH[] = "A";
+  const char TradeCondition_CASHTRADE[] = "C";
+  const char TradeCondition_RULE155[] = "H";
+  const char TradeCondition_CANCEL_STOPPED_ETH[] = "j";
+  const char TradeCondition_VOLUME_ONLY[] = "a";
+  const char TradeCondition_SPLIT_TRADE[] = "g";
+  const char TradeCondition_STOPPED_OUT_OF_SEQUENCE[] = "AM";
+  const char TradeCondition_CASH_TRADE[] = "C";
+  const char TradeCondition_IMBALANCE_MORE_BUYERS[] = "P";
+  const char TradeCondition_BUNCHED[] = "d";
+  const char TradeCondition_INTRADAY[] = "F";
+  const char TradeCondition_IMBALANCE_MORE_SELLERS[] = "Q";
+  const char TradeCondition_INTRADAY_TRADE_DETAIL[] = "F";
+  const char TradeCondition_RULE_127_TRADE[] = "G";
+  const char TradeCondition_IMBALANCEMOREBUYERS[] = "P";
+  const char TradeCondition_REOPEN[] = "w";
+  const char TradeCondition_EX_PIT[] = "W";
+  const char TradeCondition_CANCEL_LAST[] = "n";
+  const char TradeCondition_DIRECT_PLUS[] = "b";
+  const char TradeCondition_IMBALANCEMORESELLERS[] = "Q";
+  const char TradeCondition_AVERAGE_PRICE_TRADE[] = "B";
+  const char TradeCondition_SOLD_LAST[] = "I";
+  const char TradeCondition_MARKETPLACE_ENTERED_TRADE[] = "2";
+  const char TradeCondition_SPREAD_ETH[] = "AB";
+  const char TradeCondition_CANCEL_OPEN_ETH[] = "q";
+  const char TradeCondition_EXCHANGE_LAST[] = "U";
+  const char TradeCondition_FAST_MARKET[] = "AP";
+  const char TradeCondition_BURST_BASKET[] = "AT";
+  const char TradeCondition_SOLD[] = "M";
+  const int PriceLimitType_PRICE = 0;
+  const int PriceLimitType_TICKS = 1;
+  const int PriceLimitType_PERCENTAGE = 2;
+  const char CommType_PER_SHARE = '1';
+  const char CommType_PCTWAIVEDCSHDISC = '4';
+  const char CommType_ABSOLUTE = '3';
+  const char CommType_PCTWAIVEDENUNITS = '5';
+  const char CommType_PERBOND = '6';
+  const char CommType_PER_BOND = '6';
+  const char CommType_PERCENTAGE = '2';
+  const char CommType_PERCENTAGE_WAIVED_4 = '4';
+  const char CommType_POINTS_PER_BOND_OR_CONTRACT = '6';
+  const char CommType_PERCENTAGE_WAIVED_5 = '5';
+  const char CommType_PER_UNIT = '1';
+  const char CommType_PERCENT = '2';
+  const char CommType_4 = '4';
+  const char CommType_5 = '5';
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_NO_DISTRIB_INSTNS = 13;
+  const int RegistRejReasonCode_INVALIDOWNERSHIPTYPE = 3;
+  const int RegistRejReasonCode_INVALIDREGDTLS = 6;
+  const int RegistRejReasonCode_INVALIDMAILINGDTLS = 7;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_MAILING_DTLS = 7;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_NO_REG_DETAILS = 4;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_MAILING_INSTRUCTIONS = 8;
+  const int RegistRejReasonCode_INVALIDINVESTORCOUNTRYOFRESIDENCE = 12;
+  const int RegistRejReasonCode_INVALIDCASHDISTRIBAGENTCODE = 17;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_TAX_EXEMPT_TYPE = 2;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_CASH_DISTRIB_AGENT_ACCT_NAME = 16;
+  const int RegistRejReasonCode_INVALID_UNACEEPTABLE_INVESTOR_ID_SOURCE = 10;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_INVESTOR_ID_SOURCE = 10;
+  const int RegistRejReasonCode_INVALIDDATEOFBIRTH = 11;
+  const int RegistRejReasonCode_INVALIDDISTRIBPAYMENTMETHOD = 15;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_DATE_OF_BIRTH = 11;
+  const int RegistRejReasonCode_INVALIDNODISTRIBINSTNS = 13;
+  const int RegistRejReasonCode_INVALIDCASHDISTRIBAGENTACCTNUM = 18;
+  const int RegistRejReasonCode_INVALIDTAXEXEMPTTYPE = 2;
+  const int RegistRejReasonCode_INVALIDMAILINGINST = 8;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_MAILING_INST = 8;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_NO_REG_DETLS = 4;
+  const int RegistRejReasonCode_INVALIDACCOUNTTYPE = 1;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_DISTRIB_PAYMENT_METHOD = 15;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_CASH_DISTRIB_AGENT_CODE = 17;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_REG_DETAILS = 6;
+  const int RegistRejReasonCode_INVALIDREGSEQNO = 5;
+  const int RegistRejReasonCode_OTHER = 99;
+  const int RegistRejReasonCode_INVALIDDISTRIBPERCENTAGE = 14;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_REG_DTLS = 6;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_ACCOUNT_TYPE = 1;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_MAILING_DETAILS = 7;
+  const int RegistRejReasonCode_INVALIDINVESTORIDSOURCE = 10;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_INVESTOR_COUNTRY_OF_RESIDENCE = 12;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_DISTRIB_PERCENTAGE = 14;
+  const int RegistRejReasonCode_INVALIDCASHDISTRIBAGENTACCTNAME = 16;
+  const int RegistRejReasonCode_INVALIDNOREGDETLS = 4;
+  const int RegistRejReasonCode_INVALIDINVESTORID = 9;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_CASH_DISTRIB_AGENT_ACCT_NUM = 18;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_REG_SEQ_NO = 5;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_INVESTOR_ID = 9;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_OWNERSHIP_TYPE = 3;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_NODISTRIBINSTNS = 13;
+  const char FinancialStatus_BANKRUPT = '1';
+  const char FinancialStatus_PENDINGDELISTING = '2';
+  const char FinancialStatus_RESTRICTED = '3';
+  const char FinancialStatus_PENDING_DELISTING = '2';
+  const char LastFragment_NO = 'N';
+  const char LastFragment_YES = 'Y';
+  const char NotifyBrokerOfCredit_NO = 'N';
+  const char NotifyBrokerOfCredit_YES = 'Y';
+  const int PartySubIDType_REGISTERED_ADDRESS_12 = 12;
+  const int PartySubIDType_CASH_ACCOUNT_NUMBER = 15;
+  const int PartySubIDType_FAX_NUMBER = 21;
+  const int PartySubIDType_CONTACTNAME = 9;
+  const int PartySubIDType_RESERVEDANDAVAILABLEFORBILATERALLYAGREEDUPONUSERDEFINEDVALUES = 4000;
+  const int PartySubIDType_DEPARTMENT = 24;
+  const int PartySubIDType_CONTACT_NAME = 9;
+  const int PartySubIDType_TELEXNUMBER = 20;
+  const int PartySubIDType_PERSON = 2;
+  const int PartySubIDType_FIRM = 1;
+  const int PartySubIDType_CASH_ACCOUNT_NAME = 23;
+  const int PartySubIDType_POSITION_ACCOUNT_TYPE = 26;
+  const int PartySubIDType_POSTAL_ADDRESS = 6;
+  const int PartySubIDType_SECURITY_LOCATE_ID = 27;
+  const int PartySubIDType_POSTALADDRESS = 6;
+  const int PartySubIDType_FUND_ACCOUNT_NAME = 19;
+  const int PartySubIDType_PROFESSIONAL_CLIENT = 30;
+  const int PartySubIDType_LOCATION = 31;
+  const int PartySubIDType_FULLLEGALNAMEOFFIRM = 5;
+  const int PartySubIDType_LOCATIONDESK = 25;
+  const int PartySubIDType_REGISTEREDADDRESS_12 = 12;
+  const int PartySubIDType_REGISTRATION_NUMBER = 11;
+  const int PartySubIDType_EMAILADDRESS = 8;
+  const int PartySubIDType_SYSTEM = 3;
+  const int PartySubIDType_SECURITIESACCOUNTNUMBER = 10;
+  const int PartySubIDType_REGULATORY_STATUS = 13;
+  const int PartySubIDType_CSD_PARTICIPANT_MEMBER_CODE = 17;
+  const int PartySubIDType_PHONENUMBER = 7;
+  const int PartySubIDType_CURRENCY_DELIVERY_IDENTIFIER = 33;
+  const int PartySubIDType_REGISTRATION_NAME = 14;
+  const int PartySubIDType_REGISTERED_ADDRESS_18 = 18;
+  const int PartySubIDType_TELEX_NUMBER = 20;
+  const int PartySubIDType_EMAIL_ADDRESS = 8;
+  const int PartySubIDType_FAXNUMBER = 21;
+  const int PartySubIDType_BIC = 16;
+  const int PartySubIDType_CASHACCOUNT = 15;
+  const int PartySubIDType_REGISTRATIONNUMBER = 11;
+  const int PartySubIDType_LOCATION_DESK = 25;
+  const int PartySubIDType_APPLICATION = 4;
+  const int PartySubIDType_CASHACCOUNTNAME = 23;
+  const int PartySubIDType_SECURITIES_ACCOUNT_NAME = 22;
+  const int PartySubIDType_PHONE_NUMBER = 7;
+  const int PartySubIDType_SECURITIESACCOUNTNAME = 22;
+  const int PartySubIDType_REGISTRATIONNAME = 14;
+  const int PartySubIDType_ELIGIBLE_COUNTERPARTY = 29;
+  const int PartySubIDType_REGISTEREDADDRESS_18 = 18;
+  const int PartySubIDType_SECURITIES_ACCOUNT_NUMBER = 10;
+  const int PartySubIDType_FULL_LEGAL_NAME_OF_FIRM = 5;
+  const int PartySubIDType_MARKET_MAKER = 28;
+  const int PartySubIDType_EXECUTION_VENUE = 32;
+  const int PartySubIDType_POSITIONACCOUNTTYPE = 26;
+  const int PartySubIDType_FUNDACCOUNTNAME = 19;
+  const int PartySubIDType_CSDPARTICIPANTMEMBERCODE = 17;
+  const int PartySubIDType_REGULATORYSTATUS = 13;
+  const int AllocNoOrdersType_EXPLICIT_LIST_PROVIDED = 1;
+  const int AllocNoOrdersType_NOTSPECIFIED = 0;
+  const int AllocNoOrdersType_NOT_SPECIFIED = 0;
+  const int AllocNoOrdersType_EXPLICITLISTPROVIDED = 1;
+  const int AllocLinkType_FX_SWAP = 1;
+  const int AllocLinkType_F_X_NETTING = 0;
+  const int AllocLinkType_FXNETTING = 0;
+  const int AllocLinkType_FX_NETTING = 0;
+  const int AllocLinkType_FXSWAP = 1;
+  const int AllocLinkType_F_X_SWAP = 1;
+  const int UnderlyingSettlementType_T_PLUS_1 = 2;
+  const int UnderlyingSettlementType_T_PLUS_3 = 4;
+  const int UnderlyingSettlementType_T_PLUS_4 = 5;
+  const char DisplayMethod_NEW = '2';
+  const char DisplayMethod_UNDISCLOSED = '4';
+  const char DisplayMethod_RANDOM = '3';
+  const char DisplayMethod_INITIAL = '1';
+  const int CollStatus_PARTIALLY_ASSIGNED = 1;
+  const int CollStatus_ASSIGNEDACCEPTED = 3;
+  const int CollStatus_ASSIGNMENT_PROPOSED = 2;
+  const int CollStatus_ASSIGNED = 3;
+  const int CollStatus_CHALLENGED = 4;
+  const int CollStatus_UNASSIGNED = 0;
+  const int CollStatus_ASSIGNMENTPROPOSED = 2;
+  const int CollStatus_PARTIALLYASSIGNED = 1;
+  const int SideValueInd_SIDEVALUE_2 = 2;
+  const int SideValueInd_SIDEVALUE1 = 1;
+  const int SideValueInd_SIDEVALUE2 = 2;
+  const int SideValueInd_SIDE_VALUE_1 = 1;
+  const int SideValueInd_SIDE_VALUE_2 = 2;
+  const char MsgDirection_RECEIVE = 'R';
+  const char MsgDirection_SEND = 'S';
+  const char MDUpdateAction_DELETE = '2';
+  const char MDUpdateAction_NEW = '0';
+  const char MDUpdateAction_DELETE_THRU = '3';
+  const char MDUpdateAction_DELETE_FROM = '4';
+  const char MDUpdateAction_OVERLAY = '5';
+  const char MDUpdateAction_CHANGE = '1';
+  const char MatchStatus_ADVALERT = '2';
+  const char MatchStatus_UNCOMPARED_UNMATCHED_OR_UNAFFIRED = '1';
+  const char MatchStatus_COMPARED_MATCHED_OR_AFFIRMED = '0';
+  const char MatchStatus_ADVISORY_OR_ALERT = '2';
+  const char MatchStatus_UNCOMPUNMATUNAFF = '1';
+  const char MatchStatus_COMPMATAFF = '0';
+  const char MatchStatus_UNCOMPARED_UNMATCHED_OR_UNAFFIRMED = '1';
+  const int RateSource_REUTERS = 1;
+  const int RateSource_OTHER = 99;
+  const int RateSource_BLOOMBERG = 0;
+  const int RateSource_TELERATE = 2;
+  const char AllocPositionEffect_CLOSE = 'C';
+  const char AllocPositionEffect_FIFO = 'F';
+  const char AllocPositionEffect_OPEN = 'O';
+  const char AllocPositionEffect_ROLLED = 'R';
+  const char PartyIDSource_US_EMPLOYER_OR_TAX_ID_NUMBER = '8';
+  const char PartyIDSource_PROPRIETARY = 'D';
+  const char PartyIDSource_USEMPLOYERIDNUMBER = '8';
+  const char PartyIDSource_ACCPTMARKETPART = 'C';
+  const char PartyIDSource_CSDPARTCODE = 'H';
+  const char PartyIDSource_AUSTRALIAN_TAX_FILE_NUMBER = 'A';
+  const char PartyIDSource_KOREANINVESTORID = '1';
+  const char PartyIDSource_GENERALLY_ACCEPTED_MARKET_PARTICIPANT_IDENTIFIER = 'C';
+  const char PartyIDSource_AUSTRALIAN_BUSINESS_NUMBER = '9';
+  const char PartyIDSource_US_EMPLOYER_IDENTIFICATION_NUMBER = '8';
+  const char PartyIDSource_AUSTRALIANTAXFILENUMBER = 'A';
+  const char PartyIDSource_TAIWANESE_TRADING_ACCOUNT = '3';
+  const char PartyIDSource_TAIWANESE_TRADING_ACCT = '3';
+  const char PartyIDSource_CHINESEBSHARE = '5';
+  const char PartyIDSource_AUSTRALIANBUSINESSNUMBER = '9';
+  const char PartyIDSource_MALAYSIAN_CENTRAL_DEPOSITORY = '4';
+  const char PartyIDSource_US_SOCIAL_SECURITY_NUMBER = '7';
+  const char PartyIDSource_TAIWANESEQUALIFIED = '2';
+  const char PartyIDSource_USSOCIALSECURITY = '7';
+  const char PartyIDSource_DIRECTEDDEFINEDISITC = 'I';
+  const char PartyIDSource_UK_NATIONAL_INSURANCE_OR_PENSION_NUMBER = '6';
+  const char PartyIDSource_CSD_PARTICIPANT_MEMBER_CODE = 'H';
+  const char PartyIDSource_DIRECTED_BROKER_THREE_CHARACTER_ACRONYM_AS_DEFINED_IN_ISITC_ETC_BEST_PRACTICE_GUIDELINES_DOCUMENT = 'I';
+  const char PartyIDSource_TAIWANESE_QUALIFIED_FOREIGN_INVESTOR_ID_QFII = '2';
+  const char PartyIDSource_SETTLEMENT_ENTITY_LOCATION = 'F';
+  const char PartyIDSource_PROPRIETARY_CUSTOM_CODE = 'D';
+  const char PartyIDSource_UKNATIONALINSPENNUMBER = '6';
+  const char PartyIDSource_BIC = 'B';
+  const char PartyIDSource_CHINESE_INVESTOR_ID = '5';
+  const char PartyIDSource_TAIWANESETRADINGACCT = '3';
+  const char PartyIDSource_MIC = 'G';
+  const char PartyIDSource_KOREAN_INVESTOR_ID = '1';
+  const char PartyIDSource_ISO_COUNTRY_CODE = 'E';
+  const char PartyIDSource_TAIWANESE_QUALIFIED_FOREIGN_INVESTOR_ID_QFII_FID = '2';
+  const char PartyIDSource_PROPCODE = 'D';
+  const char PartyIDSource_ISOCODE = 'E';
+  const char PartyIDSource_CHINESE_B_SHARE = '5';
+  const char PartyIDSource_MCDNUMBER = '4';
+  const char PartyIDSource_SETTLENTLOC = 'F';
+  const char ExchangeForPhysical_NO = 'N';
+  const char ExchangeForPhysical_YES = 'Y';
+  const int SecurityTradingEvent_CHANGE_OF_SECURITY_TRADING_STATUS = 6;
+  const int SecurityTradingEvent_CHANGE_OF_TRADING_SESSION = 4;
+  const int SecurityTradingEvent_CHANGE_OF_SECURITY_STATUS = 6;
+  const int SecurityTradingEvent_PRICE_VOLATILITY_INTERRUPTION = 3;
+  const int SecurityTradingEvent_CHANGE_OF_BOOK_TYPE = 7;
+  const int SecurityTradingEvent_CHANGE_OF_TRADING_SUBSESSION = 5;
+  const int SecurityTradingEvent_CHANGE_OF_MARKET_DEPTH = 8;
+  const int SecurityTradingEvent_TRADING_RESUMES = 2;
+  const int SecurityTradingEvent_ORDER_IMBALANCE_AUCTION_IS_EXTENDED = 1;
+  const int CollAction_ADD = 1;
+  const int CollAction_REMOVE = 2;
+  const int CollAction_RETAIN = 0;
+  const char PossDupFlag_NO = 'N';
+  const char PossDupFlag_YES = 'Y';
+  const int ListStatusType_ALL_DONE = 5;
+  const int ListStatusType_TIMED = 3;
+  const int ListStatusType_RESP = 2;
+  const int ListStatusType_EXECSTARTED = 4;
+  const int ListStatusType_RESPONSE = 2;
+  const int ListStatusType_ALLDONE = 5;
+  const int ListStatusType_ALERT = 6;
+  const int ListStatusType_ACK = 1;
+  const int ListStatusType_EXEC_STARTED = 4;
+  const int ListStatusType_EXECSTART = 4;
+  const char GapFillFlag_NO = 'N';
+  const char GapFillFlag_YES = 'Y';
+  const char TradeHandlingInstr_AUTOMATED_FLOOR_ORDER_ROUTING = '4';
+  const char TradeHandlingInstr_TWO_PARTY_REPORT = '1';
+  const char TradeHandlingInstr_ONE_PARTY_REPORT_FOR_MATCHING = '2';
+  const char TradeHandlingInstr_TRADE_CONFIRMATION = '0';
+  const char TradeHandlingInstr_ONE_PARTY_REPORT_FOR_PASS_THROUGH = '3';
+  const char TradeHandlingInstr_TWO_PARTY_REPORT_FOR_CLAIM = '5';
+  const int TradSesMethod_TWOPARTY = 3;
+  const int TradSesMethod_ELECTRONIC = 1;
+  const int TradSesMethod_OPENOUTCRY = 2;
+  const int TradSesMethod_TWO_PARTY = 3;
+  const int TradSesMethod_OPEN_OUTCRY = 2;
+  const char TradeType_AGENCY = 'A';
+  const char TradeType_VWAP_GUARANTEE = 'G';
+  const char TradeType_RISK_TRADE = 'R';
+  const char TradeType_GUARANTEED_CLOSE = 'J';
+  const int ComplexEventCondition_AND = 1;
+  const int ComplexEventCondition_OR = 2;
+  const char BenchmarkCurveName_SONIA[] = "SONIA";
+  const char BenchmarkCurveName_MUNIAAA[] = "MuniAAA";
+  const char BenchmarkCurveName_LIBID[] = "LIBID";
+  const char BenchmarkCurveName_PFANDBRIEFE[] = "Pfandbriefe";
+  const char BenchmarkCurveName_EUREPO[] = "EUREPO";
+  const char BenchmarkCurveName_FUTURESWAP[] = "FutureSWAP";
+  const char BenchmarkCurveName_TREASURY[] = "Treasury";
+  const char BenchmarkCurveName_OTHER[] = "OTHER";
+  const char BenchmarkCurveName_EURIBOR[] = "Euribor";
+  const char BenchmarkCurveName_EONIA[] = "EONIA";
+  const char BenchmarkCurveName_LIBOR[] = "LIBOR";
+  const char BenchmarkCurveName_SWAP[] = "SWAP";
+  const char CashMargin_MARGINCLOSE = '3';
+  const char CashMargin_MARGINOPEN = '2';
+  const char CashMargin_MARGIN_CLOSE = '3';
+  const char CashMargin_MARGIN_OPEN = '2';
+  const char CashMargin_CASH = '1';
+  const char SettlObligTransType_REPLACE = 'R';
+  const char SettlObligTransType_NEW = 'N';
+  const char SettlObligTransType_RESTATE = 'T';
+  const char SettlObligTransType_CANCEL = 'C';
+  const char DeskOrderHandlingInst_PEGGED[] = "PEG";
+  const char DeskOrderHandlingInst_MARKET_ON_OPEN[] = "MOO";
+  const char DeskOrderHandlingInst_SCALE[] = "SCL";
+  const char DeskOrderHandlingInst_FILL_OR_KILL[] = "FOK";
+  const char DeskOrderHandlingInst_ALL_OR_NONE[] = "AON";
+  const char DeskOrderHandlingInst_NOT_HELD[] = "NH";
+  const char DeskOrderHandlingInst_DIRECTED_ORDER[] = "DIR";
+  const char DeskOrderHandlingInst_STOP_STOCK_TRANSACTION[] = "S.W";
+  const char DeskOrderHandlingInst_OVER_THE_DAY[] = "OVD";
+  const char DeskOrderHandlingInst_ADD_ON_ORDER[] = "ADD";
+  const char DeskOrderHandlingInst_MARKET_AT_CLOSE[] = "MAC";
+  const char DeskOrderHandlingInst_LIMIT_ON_OPEN[] = "LOO";
+  const char DeskOrderHandlingInst_CASH_NOT_HELD[] = "CNH";
+  const char DeskOrderHandlingInst_MARKET_ON_CLOSE[] = "MOC";
+  const char DeskOrderHandlingInst_TIME_ORDER[] = "TMO";
+  const char DeskOrderHandlingInst_LIMIT_ON_CLOSE[] = "LOC";
+  const char DeskOrderHandlingInst_IMMEDIATE_OR_CANCEL[] = "IOC";
+  const char DeskOrderHandlingInst_TRAILING_STOP[] = "TS";
+  const char DeskOrderHandlingInst_WORK[] = "WRK";
+  const char DeskOrderHandlingInst_RESERVE_SIZE_ORDER[] = "RSV";
+  const char DeskOrderHandlingInst_MINIMUM_QUANTITY[] = "MQT";
+  const char DeskOrderHandlingInst_MARKET_AT_OPEN[] = "MAO";
+  const char DeskOrderHandlingInst_IMBALANCE_ONLY[] = "IO";
+  const char DeskOrderHandlingInst_EXCHANGE_FOR_PHYSICAL_TRANSACTION[] = "E.W";
+  const int PosTransType_DO_NOT_EXERCISE = 2;
+  const int PosTransType_POSITION_CHANGE_SUBMISSION_MARGIN_DISPOSITION = 4;
+  const int PosTransType_DONOTEXERCISE = 2;
+  const int PosTransType_LARGE_TRADER_SUBMISSION = 6;
+  const int PosTransType_POSITIONCHANGESUBMISSIONMARGINDISPOSITION = 4;
+  const int PosTransType_POSITIONADJUSTMENT = 3;
+  const int PosTransType_EXERCISE = 1;
+  const int PosTransType_POSITION_ADJUSTMENT = 3;
+  const int PosTransType_PLEDGE = 5;
+  const char Seniority_SUBORDINATED[] = "SB";
+  const char Seniority_SENIOR_SECURED[] = "SD";
+  const char Seniority_SENIOR[] = "SR";
+  const char SettlCurrFxRateCalc_DIVIDE = 'D';
+  const char SettlCurrFxRateCalc_MULTIPLY = 'M';
+  const int PosMaintStatus_ACCEPTED_WITH_WARNINGS = 1;
+  const int PosMaintStatus_COMPLETED = 3;
+  const int PosMaintStatus_ACCEPTEDWITHWARNINGS = 1;
+  const int PosMaintStatus_COMPLETEDWITHWARNINGS = 4;
+  const int PosMaintStatus_REJECTED = 2;
+  const int PosMaintStatus_ACCEPTED = 0;
+  const int PosMaintStatus_COMPLETED_WITH_WARNINGS = 4;
+  const char Benchmark_6_MO_LIBOR = '9';
+  const char Benchmark_OLD_5 = '3';
+  const char Benchmark_OLD_30 = '7';
+  const char Benchmark_30YR = '6';
+  const char Benchmark_5YR = '2';
+  const char Benchmark_3_MO_LIBOR = '8';
+  const char Benchmark_OLD_10 = '5';
+  const char Benchmark_6MOLIBOR = '9';
+  const char Benchmark_10YR = '4';
+  const char Benchmark_CURVE = '1';
+  const char Benchmark_30_YR = '6';
+  const char Benchmark_10_YR = '4';
+  const char Benchmark_5_YR = '2';
+  const char Benchmark_OLD30 = '7';
+  const char Benchmark_OLD5 = '3';
+  const char Benchmark_OLD10 = '5';
+  const char Benchmark_3MOLIBOR = '8';
+  const int MaturityMonthYearFormat_YEARMONTHWEEK = 2;
+  const int MaturityMonthYearFormat_YEARMONTHDAY = 1;
+  const int MaturityMonthYearFormat_YEARMONTH_ONLY = 0;
+  const char LegalConfirm_NO = 'N';
+  const char LegalConfirm_YES = 'Y';
+  const int ApplReportType_REPORTS_THAT_THE_LAST_MESSAGE_HAS_BEEN_SENT_FOR_THE_APPLIDS_REFER_TO_REFAPPLLASTSEQNUM = 1;
+  const int ApplReportType_APPLICATION_MESSAGE_RE_SEND_COMPLETED = 3;
+  const int ApplReportType_RESET_APPLSEQNUM_TO_NEW_VALUE_SPECIFIED_IN_APPLNEWSEQNUM = 0;
+  const int ApplReportType_HEARTBEAT_MESSAGE_INDICATING_THAT_APPLICATION_IDENTIFIED_BY_REFAPPLID = 2;
+  const char ReportToExch_NO = 'N';
+  const char ReportToExch_YES = 'Y';
+  const int AllocRejCode_INCORRECT_ALLOCATED_QUANTITY = 8;
+  const int AllocRejCode_UNKNOWNACCT = 0;
+  const int AllocRejCode_INCORRECTAVGPRC = 2;
+  const int AllocRejCode_UNKNOWN_ORDERID = 5;
+  const int AllocRejCode_WAREHOUSEREQUESTREJECTED = 13;
+  const int AllocRejCode_UNKNOWNORSTALEEXECID = 10;
+  const int AllocRejCode_WAREHOUSE_REQUEST_REJECTED = 13;
+  const int AllocRejCode_INCORRECT_AVERAGEG_PRICE = 2;
+  const int AllocRejCode_MISMATCHEDDATA = 11;
+  const int AllocRejCode_INCORRECTBRKMNC = 3;
+  const int AllocRejCode_UNKNOWNLISTID = 6;
+  const int AllocRejCode_OTHER_99 = 99;
+  const int AllocRejCode_INCORRECTALLOCATEDQUANTITY = 8;
+  const int AllocRejCode_UNKNOWN_LISTID = 6;
+  const int AllocRejCode_INCORRECT_QUANTITY = 1;
+  const int AllocRejCode_INCORRECT_AVERAGE_PRICE = 2;
+  const int AllocRejCode_UNKNOWN_ACCOUNT = 0;
+  const int AllocRejCode_UNKNOWN_OR_STALE_EXECID = 10;
+  const int AllocRejCode_OTHER = 7;
+  const int AllocRejCode_OTHER_7 = 7;
+  const int AllocRejCode_UNKNOWN_CLORDID = 12;
+  const int AllocRejCode_INCORRECTQTY = 1;
+  const int AllocRejCode_COMMDIFF = 4;
+  const int AllocRejCode_CALCULATIONDIFFERENCE = 9;
+  const int AllocRejCode_UNKNOWNCLORDID = 12;
+  const int AllocRejCode_UNKNOWNORDID = 5;
+  const int AllocRejCode_MISMATCHED_DATA = 11;
+  const int AllocRejCode_CALCULATION_DIFFERENCE = 9;
+  const int AllocRejCode_COMMISSION_DIFFERENCE = 4;
+  const int AllocRejCode_UNKNOWN_EXECUTING_BROKER_MNEMONIC = 3;
+  const int RefOrdIDReason_GTC_FROM_PREVIOUS_DAY = 0;
+  const int RefOrdIDReason_PARTIAL_FILL_REMAINING = 1;
+  const int RefOrdIDReason_ORDER_CHANGED = 2;
+  const char RefOrderIDSource_SECONDARYORDERID = '0';
+  const char RefOrderIDSource_ORDERID = '1';
+  const char RefOrderIDSource_MDENTRYID = '2';
+  const char RefOrderIDSource_ORIGINAL_ORDER_ID = '4';
+  const char RefOrderIDSource_MENTRYID = '2';
+  const char RefOrderIDSource_QUOTEENTRYID = '3';
+  const char RefOrderIDSource_QUOTENTRYID = '3';
+  const char RefOrderIDSource_ORDEID = '1';
+  const char RefOrderIDSource_SECONDARYORDEID = '0';
+  const char LastCapacity_A = '1';
+  const char LastCapacity_XP = '3';
+  const char LastCapacity_CROSS_AS_PRINCIPAL = '3';
+  const char LastCapacity_PRINCIPAL = '4';
+  const char LastCapacity_P = '4';
+  const char LastCapacity_CROSS_AS_AGENT = '2';
+  const char LastCapacity_AGENT = '1';
+  const char LastCapacity_XA = '2';
+  const int InstrAttribType_INSTRUMENT_STRIKE_PRICE = 28;
+  const int InstrAttribType_IN_DEFAULT = 15;
+  const int InstrAttribType_COUPONPERIOD = 8;
+  const int InstrAttribType_ORIGINAL_ISSUE_DISCOUNT = 10;
+  const int InstrAttribType_PRE_REFUNDED = 14;
+  const int InstrAttribType_SUBJECT_TO_ALTERNATIVE_MINIMUM_TAX = 19;
+  const int InstrAttribType_CALLABLEPUTTABLE = 11;
+  const int InstrAttribType_WHEN_AND_IF_ISSUED = 9;
+  const int InstrAttribType_STEPPEDCOUPON = 7;
+  const int InstrAttribType_UNRATED = 16;
+  const int InstrAttribType_CALLABLE_WITHOUT_NOTICE_BY_MAIL_TO_HOLDER_UNLESS_REGISTERED = 22;
+  const int InstrAttribType_STEPPED_COUPON = 7;
+  const int InstrAttribType_TEXT = 99;
+  const int InstrAttribType_ORIGINALISSUEDISCOUNTPRICE = 20;
+  const int InstrAttribType_ESCROWEDTOREDEMPTIONDATE = 13;
+  const int InstrAttribType_INSTRUMENT_DENOMINATOR = 25;
+  const int InstrAttribType_ESCROWED_TO_REDEMPTION_DATE = 13;
+  const int InstrAttribType_INTEREST_BEARING = 3;
+  const int InstrAttribType_TAXABLE = 17;
+  const int InstrAttribType_CALLABLE_PUTTABLE = 11;
+  const int InstrAttribType_CALLABLE_BELOW_MATURITY_VALUE = 21;
+  const int InstrAttribType_COUPON_PERIOD = 8;
+  const int InstrAttribType_LESSFEEFORPUT = 6;
+  const int InstrAttribType_INTERESTBEARING = 3;
+  const int InstrAttribType_PREREFUNDED = 14;
+  const int InstrAttribType_INSTRUMENT_PRICE_PRECISION = 27;
+  const int InstrAttribType_TRADEABLE_INDICATOR = 29;
+  const int InstrAttribType_ORIGINAL_ISSUE_DISCOUNT_PRICE_SUPPLY_PRICE_IN_THE_INSTRATTRIBVALUE = 20;
+  const int InstrAttribType_VARIABLE_RATE = 5;
+  const int InstrAttribType_WHENISSUED = 9;
+  const int InstrAttribType_ZEROCOUPON = 2;
+  const int InstrAttribType_SUBJECTTOALTERNATIVEMINIMUMTAX = 19;
+  const int InstrAttribType_ESCROWEDTOMATURITY = 12;
+  const int InstrAttribType_FLAT = 1;
+  const int InstrAttribType_TRADE_TYPE_ELIGIBILITY_DETAILS_FOR_SECURITY = 24;
+  const int InstrAttribType_INSTRUMENT_NUMERATOR = 26;
+  const int InstrAttribType_ESCROWED_TO_MATURITY = 12;
+  const int InstrAttribType_LESS_FEE_FOR_PUT = 6;
+  const int InstrAttribType_TEXT_SUPPLY_THE_TEXT_OF_THE_ATTRIBUTE_OR_DISCLAIMER_IN_THE_INSTRATTRIBVALUE = 99;
+  const int InstrAttribType_CALLABLEWITHOUTNOTICEBYMAILTOHOLDERUNLESSREGISTERED = 22;
+  const int InstrAttribType_INDEXED = 18;
+  const int InstrAttribType_INDEFAULT = 15;
+  const int InstrAttribType_ZERO_COUPON = 2;
+  const int InstrAttribType_NOPERIODICPAYMENTS = 4;
+  const int InstrAttribType_CALLABLEBELOWMATURITYVALUE = 21;
+  const int InstrAttribType_ORIGINALISSUEDISCOUNT = 10;
+  const int InstrAttribType_PRICE_TICK_RULES_FOR_SECURITY = 23;
+  const int InstrAttribType_NO_PERIODIC_PAYMENTS = 4;
+  const int InstrAttribType_VARIABLERATE = 5;
+  const int Product_FINANCING = 13;
+  const int Product_COMMODITY = 2;
+  const int Product_EQUITY = 5;
+  const int Product_CORPORATE = 3;
+  const int Product_AGENCY = 1;
+  const int Product_OTHER = 12;
+  const int Product_MONEYMARKET = 9;
+  const int Product_MORTGAGE = 10;
+  const int Product_CURRENCY = 4;
+  const int Product_INDEX = 7;
+  const int Product_MUNICIPAL = 11;
+  const int Product_LOAN = 8;
+  const int Product_GOVERNMENT = 6;
+  const int SecurityTradingStatus_NOMKTIMB = 12;
+  const int SecurityTradingStatus_NOOPEN = 4;
+  const int SecurityTradingStatus_FAST_MARKET = 23;
+  const int SecurityTradingStatus_NO_OPEN_NO_RESUME = 4;
+  const int SecurityTradingStatus_TRADING_HALT = 2;
+  const int SecurityTradingStatus_NOT_AVAILABLE_FOR_TRADING = 18;
+  const int SecurityTradingStatus_11 = 11;
+  const int SecurityTradingStatus_NO_OPEN = 4;
+  const int SecurityTradingStatus_NOTTRADED = 19;
+  const int SecurityTradingStatus_FASTMARKET = 23;
+  const int SecurityTradingStatus_MKTBALSELL = 8;
+  const int SecurityTradingStatus_NEWPXIND = 15;
+  const int SecurityTradingStatus_TRDDISTIME = 16;
+  const int SecurityTradingStatus_PXIND = 5;
+  const int SecurityTradingStatus_CROSS = 25;
+  const int SecurityTradingStatus_OPENINGROTATION = 22;
+  const int SecurityTradingStatus_TRDRNGIND = 6;
+  const int SecurityTradingStatus_RESUME = 3;
+  const int SecurityTradingStatus_TRADE_DISSEMINATION_TIME = 16;
+  const int SecurityTradingStatus_NO_MARKET_ON_CLOSE_IMBALANCE = 13;
+  const int SecurityTradingStatus_POST_CLOSE = 26;
+  const int SecurityTradingStatus_OPENDELAY = 1;
+  const int SecurityTradingStatus_READY = 17;
+  const int SecurityTradingStatus_MARKET_ON_CLOSE_IMBALANCE_BUY = 9;
+  const int SecurityTradingStatus_NOTAVAIL = 18;
+  const int SecurityTradingStatus_MARKET_IMBALANCE_SELL = 8;
+  const int SecurityTradingStatus_OPENING_DELAY = 1;
+  const int SecurityTradingStatus_MKTONCLSIMBSELL = 10;
+  const int SecurityTradingStatus_NOT_TRADED_ON_THIS_MARKET = 19;
+  const int SecurityTradingStatus_ITS_PRE_OPENING = 14;
+  const int SecurityTradingStatus_PRE_CROSS = 24;
+  const int SecurityTradingStatus_NA = 11;
+  const int SecurityTradingStatus_NOMKTONCLSIMB = 13;
+  const int SecurityTradingStatus_PRE_OPEN = 21;
+  const int SecurityTradingStatus_MARKET_IMBALANCE_BUY = 7;
+  const int SecurityTradingStatus_TRADING_RANGE_INDICATION = 6;
+  const int SecurityTradingStatus_READY_TO_TRADE = 17;
+  const int SecurityTradingStatus_NEW_PRICE_INDICATION = 15;
+  const int SecurityTradingStatus_ITSPREOPN = 14;
+  const int SecurityTradingStatus_TRDHALT = 2;
+  const int SecurityTradingStatus_MKTONCLSIMBBUY = 9;
+  const int SecurityTradingStatus_OPENING_ROTATION = 22;
+  const int SecurityTradingStatus_PRICE_INDICATION = 5;
+  const int SecurityTradingStatus_UNKNOWN_OR_INVALID = 20;
+  const int SecurityTradingStatus_MARKET_ON_CLOSE_IMBALANCE_SELL = 10;
+  const int SecurityTradingStatus_UNKNOWN = 20;
+  const int SecurityTradingStatus_MKTIMBBUY = 7;
+  const int SecurityTradingStatus_NO_MARKET_IMBALANCE = 12;
+  const char Rule80A_PRGINDEXARBOTHMEM = 'N';
+  const char Rule80A_TRANSACTIONS_FOR_THE_ACCOUNT_OF_A_NON_MEMBER_COMPETING_MARKET_MAKER = 'R';
+  const char Rule80A_SPECIALIST_TRADES = 'S';
+  const char Rule80A_PROGRAM_ORDER_INDEX_ARB_FOR_INDIVIDUAL_CUSTOMER = 'J';
+  const char Rule80A_PROGRAM_ORDER_INDEX_ARB_FOR_MEMBER_FIRM_ORG = 'D';
+  const char Rule80A_SHTEXTRANI = 'H';
+  const char Rule80A_SHTEXTRANMEMWT = 'X';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_F = 'F';
+  const char Rule80A_COMPETING_DEALER_TRADES_O = 'O';
+  const char Rule80A_PROGRAM_ORDER_NON_INDEX_ARB_FOR_INDIVIDUAL_CUSTOMER = 'K';
+  const char Rule80A_AGENCY_ALGORITHMIC_PROGRAM_TRADING = 'K';
+  const char Rule80A_SHTEXTRANMEM = 'L';
+  const char Rule80A_PRGINDEXARBOTHAGN = 'U';
+  const char Rule80A_PRGNONINDEXARBINV = 'J';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_H = 'H';
+  const char Rule80A_PRINCIPAL = 'P';
+  const char Rule80A_AGENCY_INDEX_ARBITRAGE = 'U';
+  const char Rule80A_TRANSACTIONS_FOR_THE_ACCOUNT_OF_A_NON_MEMBER_COMPTING_MARKET_MAKER = 'R';
+  const char Rule80A_SHTEXTRANA = 'B';
+  const char Rule80A_SHTEXTRANW = 'F';
+  const char Rule80A_PRGINDEXARBINV = 'K';
+  const char Rule80A_COMPETING_DEALER_TRADES_R = 'R';
+  const char Rule80A_INDIVIDUAL_INVESTOR_SINGLE_ORDER = 'I';
+  const char Rule80A_PROPRIETARY_NON_ALGORITHMIC_PROGRAM_TRADE = 'C';
+  const char Rule80A_AGENT_FOR_OTHER_MEMBER_NON_ALGORITHMIC_PROGRAM_TRADE = 'N';
+  const char Rule80A_ALLOTHERAGN = 'W';
+  const char Rule80A_PRGNONINDEXARBOTHAGN = 'Y';
+  const char Rule80A_PROPRIETARY_TRANSACTIONS_FOR_COMPETING_MARKET_MAKER_THAT_IS_AFFILIATED_WITH_THE_CLEARING_MEMBER = 'O';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_MEMBER_COMPETING_MARKET_MAKER_NOT_AFFILIATED_WITH_THE_FIRM_CLEARING_THE_TRADE = 'X';
+  const char Rule80A_AGENCYSINGLE = 'A';
+  const char Rule80A_COMPETING_DEALER_TRADES_T = 'T';
+  const char Rule80A_PROGRAM_ORDER_NON_INDEX_ARB_FOR_OTHER_MEMBER = 'N';
+  const char Rule80A_PROPRIETARY_ALGORITHMIC_PROGRAM_TRADING = 'J';
+  const char Rule80A_AGENCY_NON_ALGORITHMIC_PROGRAM_TRADE = 'Y';
+  const char Rule80A_PRGNONINDEXARBMEM = 'C';
+  const char Rule80A_PRGNONINDEXARBOTHMEM = 'M';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_NON_MEMBER_COMPETING_MARKET_MAKER = 'Z';
+  const char Rule80A_PROGRAM_ORDER_NON_INDEX_ARB_FOR_OTHER_AGENCY = 'Y';
+  const char Rule80A_ALL_OTHER_ORDERS_AS_AGENT_FOR_OTHER_MEMBER = 'W';
+  const char Rule80A_PROGRAM_ORDER_NON_INDEX_ARB_FOR_MEMBER_FIRM_ORG = 'C';
+  const char Rule80A_PRGINDEXARBMEM = 'D';
+  const char Rule80A_INVINESTOR = 'I';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_PRINCIPAL = 'E';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_B = 'B';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_MEMBER_COMPETING_MARKET_MAKER_AFFILIATED_WITH_THE_FIRM_CLEARING_THE_TRADE = 'L';
+  const char Rule80A_AGENCY_SINGLE_ORDER = 'A';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_MEMBER_COMPETING_MARKET_MAKER_AFFLIATED_WITH_THE_FIRM_CLEARING_THE_TRADE = 'L';
+  const char Rule80A_COMPETINGDEALER = 'O';
+  const char Rule80A_COMPDEALER1 = 'R';
+  const char Rule80A_SHTEXTRANNONMEM = 'Z';
+  const char Rule80A_TRANSACTIONS_FOR_THE_ACCOUNT_OF_AN_UNAFFILIATED_MEMBERS_COMPETING_MARKET_MAKER = 'T';
+  const char Rule80A_REGISTERED_EQUITY_MARKET_MAKER_TRADES = 'E';
+  const char Rule80A_MARKETMAKER = 'E';
+  const char Rule80A_SPECIALIST = 'S';
+  const char Rule80A_COMPDEALER2 = 'T';
+  const char Rule80A_PROGRAM_ORDER_INDEX_ARB_FOR_OTHER_AGENCY = 'U';
+  const char Rule80A_PROGRAM_ORDER_INDEX_ARB_FOR_OTHER_MEMBER = 'M';
+  const char CorporateAction_MERGER_REORGANIZATION = 'M';
+  const char CorporateAction_SYMBOL_CONVERSION = 'T';
+  const char CorporateAction_NEW = 'D';
+  const char CorporateAction_SUCCESSION_EVENT = 'W';
+  const char CorporateAction_STOCK_DIVIDEND = 'G';
+  const char CorporateAction_REVERSE_STOCK_SPLIT = 'I';
+  const char CorporateAction_POSITION_CONSOLIDATION = 'K';
+  const char CorporateAction_SPINOFF = 'P';
+  const char CorporateAction_EXDIVIDEND = 'A';
+  const char CorporateAction_EX_INTEREST = 'E';
+  const char CorporateAction_LIQUIDATION_REORGANIZATION = 'L';
+  const char CorporateAction_CASH_DIVIDEND = 'F';
+  const char CorporateAction_STANDARD_INTEGER_STOCK_SPLIT = 'J';
+  const char CorporateAction_RIGHTS_OFFERING = 'N';
+  const char CorporateAction_SHAREHOLDER_MEETING = 'O';
+  const char CorporateAction_WARRANT = 'R';
+  const char CorporateAction_EXDIST = 'B';
+  const char CorporateAction_EX_RIGHTS = 'C';
+  const char CorporateAction_EX_DISTRIBUTION = 'B';
+  const char CorporateAction_EX_DIVIDEND = 'A';
+  const char CorporateAction_TENDER_OFFER = 'Q';
+  const char CorporateAction_SPECIAL_ACTION = 'S';
+  const char CorporateAction_EXINTEREST = 'E';
+  const char CorporateAction_NON_INTEGER_STOCK_SPLIT = 'H';
+  const char CorporateAction_CUSIP = 'U';
+  const char CorporateAction_LEAP_ROLLOVER = 'V';
+  const char CorporateAction_EXRIGHTS = 'C';
+  const int TerminationType_TERM = 2;
+  const int TerminationType_FLEXIBLE = 3;
+  const int TerminationType_OPEN = 4;
+  const int TerminationType_OVERNIGHT = 1;
+  const int PosMaintAction_REPLACE = 2;
+  const int PosMaintAction_NEW = 1;
+  const int PosMaintAction_REVERSE = 4;
+  const int PosMaintAction_CANCEL = 3;
+  const int ComplexEventPriceTimeType_SPECIFIED_DATE_TIME = 3;
+  const int ComplexEventPriceTimeType_EXPIRATION = 1;
+  const int ComplexEventPriceTimeType_IMMEDIATE = 2;
+  const char UnderlyingFXRateCalc_DIVIDE = 'D';
+  const char UnderlyingFXRateCalc_MULTIPLY = 'M';
+  const char OddLot_NO = 'N';
+  const char OddLot_YES = 'Y';
+  const char BookingUnit_AGGREGATE_EXECUTIONS_FOR_THIS_SYMBOL_SIDE_AND_SETTLEMENT_DATE = '2';
+  const char BookingUnit_AGGREGATE_PARTIAL_EXECUTIONS_ON_THIS_ORDER_AND_BOOK_ONE_TRADE_PER_ORDER = '1';
+  const char BookingUnit_EACH_PARTIAL_EXECUTION_IS_A_BOOKABLE_UNIT = '0';
+  const int AllocStatus_REJECTED_BY_INTERMEDIARY = 5;
+  const int AllocStatus_ACCEPTEDSUCCESSFULLYPROCESSED = 0;
+  const int AllocStatus_ACCOUNTLEVELREJECT = 2;
+  const int AllocStatus_BLOCK_LEVEL_REJECT = 1;
+  const int AllocStatus_ACCOUNT_LEVEL_REJECT = 2;
+  const int AllocStatus_INCOMPLETE = 4;
+  const int AllocStatus_ALLOCATION_PENDING = 6;
+  const int AllocStatus_BLOCKLEVELREJECT = 1;
+  const int AllocStatus_REJECTEDBYINTERMEDIARY = 5;
+  const int AllocStatus_RECEIVEDRECEIVEDNOTYETPROCESSED = 3;
+  const int AllocStatus_REVERSED = 7;
+  const int AllocStatus_RECEIVED = 3;
+  const int AllocStatus_PARTIAL_ACCEPT = 2;
+  const int AllocStatus_REJECTED = 1;
+  const int AllocStatus_ACCEPTED = 0;
+  const int IncTaxInd_NET = 1;
+  const int IncTaxInd_GROSS = 2;
+  const int PartyListResponseType_RETURN_ONLY_PARTY_INFORMATION = 1;
+  const int PartyListResponseType_RETURN_ALL_AVAILABLE_INFORMATION_ON_PARTIES_AND_RELATED_PARTIES = 0;
+  const int PartyListResponseType_INCLUDE_RISK_LIMIT_INFORMATION = 3;
+  const int PartyListResponseType_INCLUDE_INFORMATION_ON_RELATED_PARTIES = 2;
+  const int PosReqStatus_COMPLETED = 0;
+  const int PosReqStatus_REJECTED = 2;
+  const int PosReqStatus_COMPLETEDWITHWARNINGS = 1;
+  const int PosReqStatus_COMPLETED_WITH_WARNINGS = 1;
+  const int PriorityIndicator_PRIORITY_UNCHANGED = 0;
+  const int PriorityIndicator_PRIORITYUNCHANGED = 0;
+  const int PriorityIndicator_LOSTPRIORITY = 1;
+  const int PriorityIndicator_LOST_PRIORITY_AS_RESULT_OF_ORDER_CHANGE = 1;
+  const char MoneyLaunderingStatus_NOTCHECKED = 'N';
+  const char MoneyLaunderingStatus_EXEMPT_BELOW_THE_LIMIT = '1';
+  const char MoneyLaunderingStatus_EXAUTHCREDIT = '3';
+  const char MoneyLaunderingStatus_EXEMPT_CLIENT_MONEY_TYPE_EXEMPTION = '2';
+  const char MoneyLaunderingStatus_EXEMPT_AUTHORISED_CREDIT_OR_FINANCIAL_INSTITUTION = '3';
+  const char MoneyLaunderingStatus_NOT_CHECKED = 'N';
+  const char MoneyLaunderingStatus_PASSED = 'Y';
+  const char MoneyLaunderingStatus_EXEMPT_1 = '1';
+  const char MoneyLaunderingStatus_EXCLIENTMONEYTYPE = '2';
+  const char MoneyLaunderingStatus_EXEMPT_2 = '2';
+  const char MoneyLaunderingStatus_EXBELOWLIM = '1';
+  const char MoneyLaunderingStatus_EXEMPT_3 = '3';
+  const char LotType_ROUND_LOT_BASED_UPON_UNITOFMEASURE = '4';
+  const char LotType_ROUND_LOT = '2';
+  const char LotType_ODD_LOT = '1';
+  const char LotType_BLOCK_LOT = '3';
+  const char QuoteCondition_FLAT_CURVE[] = "7";
+  const char QuoteCondition_REST_OF_BOOK_VWAP[] = "3";
+  const char QuoteCondition_BETTER_PRICES_IN_CONDITIONAL_ORDERS[] = "4";
+  const char QuoteCondition_TRADING_RANGE[] = "Q";
+  const char QuoteCondition_HALT_ETH[] = "k";
+  const char QuoteCondition_BID_OFFER_SPECIALIST[] = "r";
+  const char QuoteCondition_CONSOLBEST[] = "D";
+  const char QuoteCondition_CROSSED[] = "F";
+  const char QuoteCondition_NO_OPEN[] = "b";
+  const char QuoteCondition_HALT[] = "j";
+  const char QuoteCondition_PREOPENING_SAM[] = "v";
+  const char QuoteCondition_OPEN_SAM[] = "x";
+  const char QuoteCondition_RESERVED_SAM[] = "0";
+  const char QuoteCondition_OUTRIGHT_PRICE[] = "J";
+  const char QuoteCondition_IMPLIED_PRICE[] = "K";
+  const char QuoteCondition_DEPTH_ON_OFFER[] = "M";
+  const char QuoteCondition_ADDITIONAL_INFO_DUE_TO_RELATED[] = "V";
+  const char QuoteCondition_REGULAR_ETH[] = "c";
+  const char QuoteCondition_ROTATION_ETH[] = "i";
+  const char QuoteCondition_NONFIRM[] = "I";
+  const char QuoteCondition_EXCHANGE_BEST[] = "C";
+  const char QuoteCondition_DEPTH_ON_BID[] = "N";
+  const char QuoteCondition_CLOSING[] = "O";
+  const char QuoteCondition_VIEW_OF_COMMON[] = "X";
+  const char QuoteCondition_FORBIDDEN_SAM[] = "t";
+  const char QuoteCondition_LOCKED[] = "E";
+  const char QuoteCondition_ORDER_INFLUX[] = "R";
+  const char QuoteCondition_NEWS_PENDING[] = "T";
+  const char QuoteCondition_RESUME[] = "W";
+  const char QuoteCondition_TRADING_RESUME[] = "n";
+  const char QuoteCondition_OUT_OF_SEQUENCE[] = "o";
+  const char QuoteCondition_END_OF_DAY_SAM[] = "s";
+  const char QuoteCondition_FROZEN_SAM[] = "u";
+  const char QuoteCondition_OPENING_SAM[] = "w";
+  const char QuoteCondition_MANUAL_SLOW_QUOTE[] = "L";
+  const char QuoteCondition_NEWS_DISSEMINATION[] = "P";
+  const char QuoteCondition_DUE_TO_RELATED[] = "S";
+  const char QuoteCondition_VOLUME_ALERT[] = "Y";
+  const char QuoteCondition_FAST_MARKET_ETH[] = "f ";
+  const char QuoteCondition_INACTIVE_ETH[] = "g";
+  const char QuoteCondition_DUE_TO_NEWS_DISSEMINATION[] = "l";
+  const char QuoteCondition_SURVEILLANCE_SAM[] = "y";
+  const char QuoteCondition_DEPTH[] = "G";
+  const char QuoteCondition_OPEN[] = "A";
+  const char QuoteCondition_AUTOMATIC_EXECUTION[] = "d";
+  const char QuoteCondition_DUE_TO_NEWS_PENDING[] = "m";
+  const char QuoteCondition_NO_ACTIVE_SAM[] = "1";
+  const char QuoteCondition_OFFER_SPECIALIST[] = "q";
+  const char QuoteCondition_SUSPENDED_SAM[] = "z";
+  const char QuoteCondition_RESTRICTED[] = "2";
+  const char QuoteCondition_NON_FIRM[] = "I";
+  const char QuoteCondition_CLOSED_INACTIVE[] = "B";
+  const char QuoteCondition_ADDITIONAL_INFO[] = "U";
+  const char QuoteCondition_EQUIPMENT_CHANGEOVER[] = "a";
+  const char QuoteCondition_EXCHBEST[] = "C";
+  const char QuoteCondition_FAST_TRADING[] = "H";
+  const char QuoteCondition_FULL_CURVE[] = "6";
+  const char QuoteCondition_MEDIAN_PRICE[] = "5";
+  const char QuoteCondition_OPEN_ACTIVE[] = "A";
+  const char QuoteCondition_ORDER_IMBALANCE[] = "Z";
+  const char QuoteCondition_AUTOMATIC_EXECUTION_ETH[] = "e";
+  const char QuoteCondition_ROTATION[] = "h";
+  const char QuoteCondition_BID_SPECIALIST[] = "p";
+  const char QuoteCondition_FAST[] = "H";
+  const char QuoteCondition_CONSOLIDATED_BEST[] = "D";
+  const char QuoteCondition_CLOSED[] = "B";
+  const int PartyRelationship_OWNED_BY_30 = 30;
+  const int PartyRelationship_PROVIDES_QUOTES_TO = 17;
+  const int PartyRelationship_POSTS_TRADES_TO = 14;
+  const int PartyRelationship_REGULATORY_OWNER_OF = 29;
+  const int PartyRelationship_SUBSIDIARY_OF = 28;
+  const int PartyRelationship_HAS_MEMBERS = 10;
+  const int PartyRelationship_ENTERS_TRADES_THROUGH = 16;
+  const int PartyRelationship_BENEFICIAL_OWNER_OF = 35;
+  const int PartyRelationship_OWNED_BY_34 = 34;
+  const int PartyRelationship_CONTROLS = 31;
+  const int PartyRelationship_REQUESTS_QUOTES_FROM = 18;
+  const int PartyRelationship_SPONSORS = 5;
+  const int PartyRelationship_CLEARS_THROUGH = 2;
+  const int PartyRelationship_OWNED_BY_36 = 36;
+  const int PartyRelationship_BROKERS_TRADES_THROUGH = 22;
+  const int PartyRelationship_INVESTS_THROUGH = 20;
+  const int PartyRelationship_PARTICIPANT_OF_MARKETPLACE = 12;
+  const int PartyRelationship_LEGAL = 33;
+  const int PartyRelationship_ENTERS_TRADES_FOR = 15;
+  const int PartyRelationship_CARRIES_POSITIONS_FOR = 13;
+  const int PartyRelationship_IS_GUARANTEED_BY = 8;
+  const int PartyRelationship_IS_CONTROLLED_BY = 32;
+  const int PartyRelationship_PROVIDES_TRADING_SERVICES_FOR = 23;
+  const int PartyRelationship_IS_ALSO = 0;
+  const int PartyRelationship_PARENT_FIRM_FOR = 27;
+  const int PartyRelationship_APPROVED_BY = 26;
+  const int PartyRelationship_APPROVES_OF = 25;
+  const int PartyRelationship_USES_TRADING_SERVICES_OF = 24;
+  const int PartyRelationship_PROVIDES_GUARANTEE_FOR = 7;
+  const int PartyRelationship_SPONSORED_THROUGH = 6;
+  const int PartyRelationship_TRADES_FOR = 3;
+  const int PartyRelationship_CLEARS_FOR = 1;
+  const int PartyRelationship_BROKERS_TRADES_FOR = 21;
+  const int PartyRelationship_INVESTS_FOR = 19;
+  const int PartyRelationship_PROVIDES_MARKETPLACE_FOR = 11;
+  const int PartyRelationship_MEMBER_OF = 9;
+  const int PartyRelationship_TRADES_THROUGH = 4;
+  const char SettlLocation_EUROCLEAR[] = "EUR";
+  const char SettlLocation_CEDEL[] = "CED";
+  const char SettlLocation_PARTICIPANT_TRUST_COMPANY[] = "PTC";
+  const char SettlLocation_PHYSICAL[] = "PNY";
+  const char SettlLocation_EURO_CLEAR[] = "EUR";
+  const char SettlLocation_FEDERALBOOKENTRY[] = "FED";
+  const char SettlLocation_PARTICIPANTTRUSTCOMPANY[] = "PTC";
+  const char SettlLocation_DEPOSITORY_TRUST_COMPANY[] = "DTC";
+  const char SettlLocation_DEPOSITORYTRUSTCOMPANY[] = "DTC";
+  const char SettlLocation_LOCAL_MARKET_SETTLE_LOCATION[] = "ISO_Country_Code";
+  const char SettlLocation_LOCALMARKETSETTLELOCATION[] = "ISO_Country_Code";
+  const char SettlLocation_FEDERAL_BOOK_ENTRY[] = "FED";
+  const int DiscretionScope_LOCAL = 1;
+  const int DiscretionScope_NATIONAL_EXCLUDING_LOCAL = 4;
+  const int DiscretionScope_NATIONALEXCLUDINGLOCAL = 4;
+  const int DiscretionScope_GLOBAL = 3;
+  const int DiscretionScope_NATIONAL = 2;
+  const int DiscretionScope_LOCALEXCHANGEECNATS = 1;
+  const int OwnerType_NETWORKINGSUBACCT = 10;
+  const int OwnerType_PUBLIC_COMPANY = 2;
+  const int OwnerType_INDIVIDUAL_TRUSTEE = 4;
+  const int OwnerType_CUSTODIAN_UNDER_GIFTS_TO_MINORS_ACT = 7;
+  const int OwnerType_INDIVIDUAL_INVESTOR = 1;
+  const int OwnerType_COMPANY_TRUSTEE = 5;
+  const int OwnerType_CORPBODY = 12;
+  const int OwnerType_INDIVTRUSTEE = 4;
+  const int OwnerType_PENSIONPLAN = 6;
+  const int OwnerType_PRIVATE_COMPANY = 3;
+  const int OwnerType_NETWORKING_SUB_ACCOUNT = 10;
+  const int OwnerType_NON_PROFITORG = 11;
+  const int OwnerType_PRIVATECOMPANY = 3;
+  const int OwnerType_PENSION_PLAN = 6;
+  const int OwnerType_COMPANYTRUSTEE = 5;
+  const int OwnerType_TRUSTS = 8;
+  const int OwnerType_FIDUCIARIES = 9;
+  const int OwnerType_INDIVINVESTOR = 1;
+  const int OwnerType_NON_PROFIT_ORGANIZATION = 11;
+  const int OwnerType_CORPORATE_BODY = 12;
+  const int OwnerType_PUBLICCOMPANY = 2;
+  const int OwnerType_CUSTODIANMINORSACT = 7;
+  const int OwnerType_NOMINEE = 13;
+  const int ApplQueueResolution_END_SESSION = 3;
+  const int ApplQueueResolution_QUEUEFLUSHED = 1;
+  const int ApplQueueResolution_QUEUE_FLUSHED = 1;
+  const int ApplQueueResolution_ENDSESSION = 3;
+  const int ApplQueueResolution_OVERLAYLAST = 2;
+  const int ApplQueueResolution_OVERLAY_LAST = 2;
+  const int ApplQueueResolution_NOACTIONTAKEN = 0;
+  const int ApplQueueResolution_NO_ACTION_TAKEN = 0;
+  const int QuoteResponseLevel_SUMMARY_ACKNOWLEDGEMENT = 3;
+  const int QuoteResponseLevel_ACKEACH = 2;
+  const int QuoteResponseLevel_ACKNOWLEDGE_ONLY_NEGATIVE_OR_ERRONEOUS_QUOTES = 1;
+  const int QuoteResponseLevel_ACKNEG = 1;
+  const int QuoteResponseLevel_NOACK = 0;
+  const int QuoteResponseLevel_ACKNOWLEDGE_EACH_QUOTE_MESSAGE = 2;
+  const int QuoteResponseLevel_ACKNOWLEDGE_EACH_QUOTE_MESSAGES = 2;
+  const int QuoteResponseLevel_NO_ACKNOWLEDGEMENT = 0;
+  const char ExecAckStatus_RECEIVED_NOT_YET_PROCESSED = '0';
+  const char ExecAckStatus_DONT_KNOW = '2';
+  const char ExecAckStatus_ACCEPTED = '1';
+  const int NetGrossInd_NET = 1;
+  const int NetGrossInd_GROSS = 2;
+  const char CxlType_PARTIAL_CANCEL = 'P';
+  const char CxlType_FULL_REMAINING_QUANTITY = 'F';
+  const int DeskTypeSource_NASD_OATS = 1;
+  const int DiscretionRoundDirection_MOREPASSIVE = 2;
+  const int DiscretionRoundDirection_MOREAGGRESSIVE = 1;
+  const int DiscretionRoundDirection_MORE_AGGRESSIVE = 1;
+  const int DiscretionRoundDirection_MORE_PASSIVE = 2;
+  const int BidDescriptorType_COUNTRY = 2;
+  const int BidDescriptorType_INDEX = 3;
+  const int BidDescriptorType_SECTOR = 1;
+  const int NetworkStatusResponseType_INCREMENTAL_UPDATE = 2;
+  const int NetworkStatusResponseType_INCREMENTALUPDATE = 2;
+  const int NetworkStatusResponseType_FULL = 1;
+  const int QuoteType_INDICATIVE = 0;
+  const int QuoteType_RESTRICTEDTRADEABLE = 2;
+  const int QuoteType_RESTRICTED_TRADEABLE = 2;
+  const int QuoteType_TRADEABLE = 1;
+  const int QuoteType_COUNTER = 3;
+  const char DiscretionInst_RELVWAP = '6';
+  const char DiscretionInst_RELLOCPRIMPX = '3';
+  const char DiscretionInst_RELATED_TO_MARKET_PRICE = '1';
+  const char DiscretionInst_RELMIDPX = '4';
+  const char DiscretionInst_RELATED_TO_VWAP = '6';
+  const char DiscretionInst_RELATED_TO_MIDPOINT_PRICE = '4';
+  const char DiscretionInst_RELDISPPX = '0';
+  const char DiscretionInst_RELATED_TO_DISPLAYED_PRICE = '0';
+  const char DiscretionInst_RELATED_TO_PRIMARY_PRICE = '2';
+  const char DiscretionInst_AVERAGE_PRICE_GUARANTEE = '7';
+  const char DiscretionInst_RELMKTPX = '1';
+  const char DiscretionInst_RELPRIMPX = '2';
+  const char DiscretionInst_RELLSTPX = '5';
+  const char DiscretionInst_RELATED_TO_LAST_TRADE_PRICE = '5';
+  const char DiscretionInst_RELATED_TO_LOCAL_PRIMARY_PRICE = '3';
+  const int CrossPrioritization_BUY_SIDE_IS_PRIORITIZED = 1;
+  const int CrossPrioritization_SELL_SIDE_IS_PRIORITIZED = 2;
+  const int CrossPrioritization_BUY_SIDE_PRIORITIZED = 1;
+  const int CrossPrioritization_SELL_SIDE_PRIORITIZED = 2;
+  const int CrossPrioritization_NONE = 0;
+  const int CrossPrioritization_SELLSIDE_PRIORITIZED = 2;
+  const int CrossPrioritization_BUYSIDE_PRIORITIZED = 1;
+  const char IOIOthSvc_AUTEX = 'A';
+  const char IOIOthSvc_BRIDGE = 'B';
+  const char MDReqRejReason_UNSUPPSUB = '4';
+  const char MDReqRejReason_UNSUPPORTED_MDENTRYTYPE = '8';
+  const char MDReqRejReason_INSUFFICIENT_CREDIT = 'D';
+  const char MDReqRejReason_UNSUPPMKTDEPTH = '5';
+  const char MDReqRejReason_UNSUPPENTRY = '8';
+  const char MDReqRejReason_INSUFFICIENT_BANDWIDTH = '2';
+  const char MDReqRejReason_UNSUPPORTED_SCOPE = 'A';
+  const char MDReqRejReason_UNSUPPMDIMPLICITDELETE = 'C';
+  const char MDReqRejReason_UNSUPPORTED_TRADINGSESSIONID = '9';
+  const char MDReqRejReason_UNKNOWNSYM = '0';
+  const char MDReqRejReason_UNSUPPMDUPDATE = '6';
+  const char MDReqRejReason_UNSUPPPOSITIONEFFECTSETTLEFLAG = 'B';
+  const char MDReqRejReason_DUPLICATE_MDREQID = '1';
+  const char MDReqRejReason_DUPID = '1';
+  const char MDReqRejReason_UNSUPPORTED_AGGREGATEDBOOK = '7';
+  const char MDReqRejReason_UNSUPPORTED_MDUPDATETYPE = '6';
+  const char MDReqRejReason_UNSUPPORTED_SUBSCRIPTIONREQUESTTYPE = '4';
+  const char MDReqRejReason_UNKNOWN_SYMBOL = '0';
+  const char MDReqRejReason_INSBAND = '2';
+  const char MDReqRejReason_UNSUPPSCOPE = 'A';
+  const char MDReqRejReason_UNSUPPORTED_OPENCLOSESETTLEFLAG = 'B';
+  const char MDReqRejReason_UNSUPPORTED_MARKETDEPTH = '5';
+  const char MDReqRejReason_UNSUPPAGGBK = '7';
+  const char MDReqRejReason_INSUFFICIENT_PERMISSIONS = '3';
+  const char MDReqRejReason_INSPERM = '3';
+  const char MDReqRejReason_UNSUPPTRDSESSIONID = '9';
+  const char MDReqRejReason_UNSUPPORTED_MDIMPLICITDELETE = 'C';
+  const int ApplReqType_REQUEST_FOR_THE_LAST_APPLLASTSEQNUM_PUBLISHED_FOR_THE_SPECIFIED_APPLICATIONS = 2;
+  const int ApplReqType_UNSUBSCRIBE_TO_THE_SPECIFIED_APPLICATIONS = 4;
+  const int ApplReqType_CANCEL_RETRANSMISSION_AND_UNSUBSCRIBE_TO_THE_SPECIFIED_APPLICATIONS = 6;
+  const int ApplReqType_SUBSCRIPTION_TO_THE_SPECIFIED_APPLICATIONS = 1;
+  const int ApplReqType_RETRANSMISSION_OF_APPLICATION_MESSAGES_FOR_THE_SPECIFIED_APPLICATIONS = 0;
+  const int ApplReqType_REQUEST_VALID_SET_OF_APPLICATIONS = 3;
+  const int ApplReqType_CANCEL_RETRANSMISSION = 5;
+  const char AggressorIndicator_NO = 'N';
+  const char AggressorIndicator_YES = 'Y';
+  const int BusinessRejectReason_APPNA = 4;
+  const int BusinessRejectReason_UNKNOWN_SECURITY = 2;
+  const int BusinessRejectReason_UNKNMSGTYPE = 3;
+  const int BusinessRejectReason_CONDFLDMISS = 5;
+  const int BusinessRejectReason_UNKNID = 1;
+  const int BusinessRejectReason_APPLICATION_NOT_AVAILABLE = 4;
+  const int BusinessRejectReason_INVALID_PRICE_INCREMENT = 18;
+  const int BusinessRejectReason_DELIVERTO_FIRM_NOT_AVAILABLE_AT_THIS_TIME = 7;
+  const int BusinessRejectReason_CONDITIONALLY_REQUIRED_FIELD_MISSING = 5;
+  const int BusinessRejectReason_UNKNOWN_ID = 1;
+  const int BusinessRejectReason_NOTAUTH = 6;
+  const int BusinessRejectReason_NODELIVTOFIRM = 7;
+  const int BusinessRejectReason_OTHER = 0;
+  const int BusinessRejectReason_UNSUPPORTED_MESSAGE_TYPE = 3;
+  const int BusinessRejectReason_UNKNOWN_MESSAGE_TYPE = 3;
+  const int BusinessRejectReason_NOT_AUTHORIZED = 6;
+  const int BusinessRejectReason_UNKNSEC = 2;
+  const int BusinessRejectReason_UNKOWN_ID = 1;
+  const int BookingType_REGULAR_BOOKING = 0;
+  const int BookingType_REGULARBOOKING = 0;
+  const int BookingType_CFD = 1;
+  const int BookingType_CFDCONTRACTFORDIFFERENCE = 1;
+  const int BookingType_TOTALRETURNSWAP = 2;
+  const int BookingType_TOTAL_RETURN_SWAP = 2;
+  #endif //FIX_VALUES_H

+ 1652 - 0
api/fix/include/FixValueNumber.h

@@ -0,0 +1,1652 @@
+#ifndef __FIX_FIELD_NUMBERS_H__
+#define __FIX_FIELD_NUMBERS_H__
+
+    const int RelatedPartyID = 1563;
+    const int MaxPriceLevels = 1090;
+    const int DerivativeEncodedIssuer = 1278;
+    const int NoCompIDs = 936;
+    const int SettlInstRefID = 214;
+    const int NestedPartyID = 524;
+    const int DetachmentPoint = 1458;
+    const int LateIndicator = 978;
+    const int RiskEncodedSecurityDesc = 1621;
+    const int RelationshipRiskSecuritySubType = 1601;
+    const int SecurityListID = 1465;
+    const int DerivativeFlowScheduleType = 1442;
+    const int EncodedSymbolLen = 1359;
+    const int FlexibleIndicator = 1244;
+    const int NoExecInstRules = 1232;
+    const int SideTrdRegTimestamp = 1012;
+    const int DeliveryForm = 668;
+    const int ExecRestatementReason = 378;
+    const int MidYield = 633;
+    const int ContractMultiplier = 231;
+    const int PartyAltIDSource = 1518;
+    const int CcyAmt = 1157;
+    const int AllocIntermedReqType = 808;
+    const int NoNested2PartyIDs = 756;
+    const int UnderlyingIssuer = 306;
+    const int LegOrderQty = 685;
+    const int MinTradeVol = 562;
+    const int SettlCurrAmt = 119;
+    const int DerivativeInstrumentPartyRole = 1295;
+    const int YieldRedemptionPriceType = 698;
+    const int NewsRefID = 1476;
+    const int SecurityListTypeSource = 1471;
+    const int ApplReqID = 1346;
+    const int DerivativeFuturesValuationMethod = 1319;
+    const int NoLegSecurityAltID = 604;
+    const int DerivativeSecurityType = 1249;
+    const int CollInquiryQualifier = 896;
+    const int RawData = 96;
+    const int CashSettlAgentContactPhone = 187;
+    const int CreditRating = 255;
+    const int ContingencyType = 1385;
+    const int StrikeCurrency = 947;
+    const int TradeVolume = 1020;
+    const int SideTrdRegTimestampSrc = 1014;
+    const int DeliveryDate = 743;
+    const int EmailType = 94;
+    const int EncodedListExecInst = 353;
+    const int ContraTradeTime = 438;
+    const int MaturityMonthYearIncrement = 1229;
+    const int RootPartyIDSource = 1118;
+    const int UnderlyingCouponPaymentDate = 241;
+    const int BidYield = 632;
+    const int IOIQltyInd = 25;
+    const int Issuer = 106;
+    const int CardNumber = 489;
+    const int NoRelatedPartyIDs = 1562;
+    const int NoLegStipulations = 683;
+    const int LegSecurityExchange = 616;
+    const int CashOrderQty = 152;
+    const int AccruedInterestAmt = 159;
+    const int MDEntrySeller = 289;
+    const int LegPrice = 566;
+    const int RelationshipRiskMaturityTime = 1603;
+    const int DeliverToCompID = 128;
+    const int TargetLocationID = 143;
+    const int OfferForwardPoints2 = 643;
+    const int RatioQty = 319;
+    const int MultiLegRptTypeReq = 563;
+    const int AllocAccount = 79;
+    const int TotalVolumeTraded = 387;
+    const int LinesOfText = 33;
+    const int AccountType = 581;
+    const int MDEntryPositionNo = 290;
+    const int HaltReasonInt = 327;
+    const int FutSettDate = 64;
+    const int SecurityDesc = 107;
+    const int MinQty = 110;
+    const int SettlCurrency = 120;
+    const int PegOffsetValue = 211;
+    const int DerivativeSecurityAltIDSource = 1220;
+    const int NoSettlPartySubIDs = 801;
+    const int AllocReportID = 755;
+    const int LegCFICode = 608;
+    const int LegFutSettDate = 588;
+    const int LegBenchmarkCurveName = 677;
+    const int ClearingFeeIndicator = 635;
+    const int BrokerOfCredit = 92;
+    const int SecurityListRefID = 1466;
+    const int UnderlyingLegMaturityTime = 1405;
+    const int NestedPartySubIDType = 805;
+    const int BidType = 394;
+    const int MDEntryRefID = 280;
+    const int UnderlyingUnitOfMeasureQty = 1423;
+    const int UnderlyingLegMaturityDate = 1345;
+    const int StartTickPriceRange = 1206;
+    const int LegContractSettlMonth = 955;
+    const int UnderlyingSecurityDesc = 307;
+    const int CashDistribPayRef = 501;
+    const int QuotePriceType = 692;
+    const int EncodedAllocText = 361;
+    const int UnderlyingMaturityMonthYear = 313;
+    const int RiskWarningLevelPercent = 1560;
+    const int UnderlyingOriginalNotionalPercentageOutstanding = 1456;
+    const int MultilegPriceMethod = 1378;
+    const int TotNoFills = 1361;
+    const int DerivativeSettleOnOpenFlag = 1254;
+    const int UnderlyingRepurchaseTerm = 244;
+    const int RiskWarningLevelName = 1561;
+    const int DerivativeCountryOfIssue = 1258;
+    const int ListMethod = 1198;
+    const int UnderlyingCPProgram = 877;
+    const int PriceDelta = 811;
+    const int RefSeqNum = 45;
+    const int AutoAcceptIndicator = 754;
+    const int MDImplicitDelete = 547;
+    const int NoStipulations = 232;
+    const int ClearingBusinessDate = 715;
+    const int NoRelationshipRiskLimits = 1582;
+    const int LocationID = 283;
+    const int Currency = 15;
+    const int RoutingType = 216;
+    const int UnderlyingStrikePrice = 316;
+    const int BidTradeType = 418;
+    const int RelationshipRiskInstrumentOperator = 1588;
+    const int UnderlyingAttachmentPoint = 1459;
+    const int TotNoRejQuotes = 1170;
+    const int OrdStatusReqID = 790;
+    const int SenderCompID = 49;
+    const int OrdRejReason = 103;
+    const int MaturityMonthYearIncrementUnits = 1302;
+    const int DisplayWhen = 1083;
+    const int ApplQueueAction = 815;
+    const int RegistTransType = 514;
+    const int PaymentRemitterID = 505;
+    const int PriceType = 423;
+    const int MarketReqID = 1393;
+    const int NoNestedInstrAttrib = 1312;
+    const int SecuritySubType = 762;
+    const int ClOrdID = 11;
+    const int MaturityDay = 205;
+    const int UnderlyingSeniority = 1454;
+    const int MarketSegmentDesc = 1396;
+    const int NoMarketSegments = 1310;
+    const int SettlObligMode = 1159;
+    const int SecurityUpdateAction = 980;
+    const int NetworkRequestType = 935;
+    const int LiquidityPctLow = 402;
+    const int PartyRole = 452;
+    const int LegRatioQty = 623;
+    const int SettlCurrFxRate = 155;
+    const int RelatedPartyRole = 1565;
+    const int LegContractMultiplierUnit = 1436;
+    const int SecureData = 91;
+    const int SenderLocationID = 142;
+    const int FirstPx = 1025;
+    const int EncodedLegIssuer = 619;
+    const int AssignmentMethod = 744;
+    const int RoutingID = 217;
+    const int RelationshipRiskSecurityAltID = 1594;
+    const int RelatedPartyAltID = 1570;
+    const int StrategyParameterType = 959;
+    const int EncryptMethod = 98;
+    const int UnderlyingStateOrProvinceOfIssue = 593;
+    const int ApplNewSeqNum = 1399;
+    const int DerivativeEncodedSecurityDescLen = 1280;
+    const int TradingCurrency = 1245;
+    const int SecondaryHighLimitPrice = 1230;
+    const int OrderAvgPx = 799;
+    const int PosAmtType = 707;
+    const int ResetSeqNumFlag = 141;
+    const int NoHops = 627;
+    const int CollInquiryResult = 946;
+    const int StartDate = 916;
+    const int CollAsgnRespType = 905;
+    const int OrderBookingQty = 800;
+    const int NoQuoteQualifiers = 735;
+    const int UnsolicitedIndicator = 325;
+    const int RefCstmApplVerID = 1131;
+    const int SideExecID = 1427;
+    const int RejectText = 1328;
+    const int ExchangeSpecialInstructions = 1139;
+    const int TradeID = 1003;
+    const int RndPx = 991;
+    const int QuoteEntryRejectReason = 368;
+    const int OrderCapacity = 528;
+    const int SideLastQty = 1009;
+    const int DerivativeUnitOfMeasure = 1269;
+    const int NoLegAllocs = 670;
+    const int QuoteAckStatus = 297;
+    const int SecondaryFirmTradeID = 1042;
+    const int UserRequestType = 924;
+    const int SecondaryTrdType = 855;
+    const int TradeReportTransType = 487;
+    const int AdvSide = 4;
+    const int RelatedContextPartySubID = 1580;
+    const int DerivativeSecuritySubType = 1250;
+    const int TriggerTradingSessionSubID = 1114;
+    const int TradeLinkID = 820;
+    const int LegBenchmarkPrice = 679;
+    const int HopRefID = 630;
+    const int Designation = 494;
+    const int TradeRequestID = 568;
+    const int RelationshipRiskLimitType = 1583;
+    const int RiskSecurityIDSource = 1539;
+    const int LegFlowScheduleType = 1440;
+    const int LegPriceUnitOfMeasure = 1421;
+    const int Nested4PartyIDSource = 1416;
+    const int CoveredOrUncovered = 203;
+    const int AcctIDSource = 660;
+    const int MktOfferPx = 646;
+    const int NoCapacities = 862;
+    const int TradeRequestType = 569;
+    const int NoNestedPartyIDs = 539;
+    const int TradSesStatus = 340;
+    const int UnderlyingNotionalPercentageOutstanding = 1455;
+    const int ApplLastSeqNum = 1350;
+    const int PegPriceType = 1094;
+    const int StrategyParameterName = 958;
+    const int StreamAsgnRejReason = 1502;
+    const int MatchIncrement = 1089;
+    const int Nested3PartyRole = 951;
+    const int UnderlyingPx = 810;
+    const int PriceImprovement = 639;
+    const int ValuationMethod = 1197;
+    const int DerivativeSecurityID = 1216;
+    const int NoExpiration = 981;
+    const int TargetCompID = 56;
+    const int MDEntryBuyer = 288;
+    const int RelationshipRiskCouponRate = 1608;
+    const int NoDerivativeInstrumentPartySubIDs = 1296;
+    const int NoMaturityRules = 1236;
+    const int QuoteMsgID = 1166;
+    const int TriggerType = 1100;
+    const int PriceProtectionScope = 1092;
+    const int TotNumAssignmentReports = 832;
+    const int ContraLegRefID = 655;
+    const int TradeReportRejectReason = 751;
+    const int TradeReportRefID = 572;
+    const int SecurityListType = 1470;
+    const int DerivativeSecurityIDSource = 1217;
+    const int AssignmentUnit = 745;
+    const int TradeReportID = 571;
+    const int NoRpts = 82;
+    const int LegBenchmarkPriceType = 680;
+    const int EncodedSubjectLen = 356;
+    const int SecurityXML = 1185;
+    const int LegReportID = 990;
+    const int Nested3PartySubIDType = 954;
+    const int BenchmarkSecurityIDSource = 761;
+    const int QuoteRejectReason = 300;
+    const int HeartBtInt = 108;
+    const int BidForwardPoints = 189;
+    const int PossResend = 97;
+    const int Symbol = 55;
+    const int EncodedUnderlyingSecurityDesc = 365;
+    const int RelatedPartyAltSubIDType = 1574;
+    const int MarketReportID = 1394;
+    const int DiscretionPrice = 845;
+    const int ContAmtValue = 520;
+    const int QuantityType = 465;
+    const int ComplexEventPriceBoundaryMethod = 1487;
+    const int ImpliedMarketIndicator = 1144;
+    const int AllocClearingFeeIndicator = 1136;
+    const int QuoteRequestType = 303;
+    const int SecurityRequestResult = 560;
+    const int OrderRestrictions = 529;
+    const int NoSideTrdRegTS = 1016;
+    const int Text = 58;
+    const int EncodedTextLen = 354;
+    const int ListExecInstType = 433;
+    const int SecondaryOrderID = 198;
+    const int ExecBroker = 76;
+    const int RelationshipRiskEncodedSecurityDescLen = 1618;
+    const int SecurityXMLLen = 1184;
+    const int ApplSeqNum = 1181;
+    const int MaxTradeVol = 1140;
+    const int OfferSwapPoints = 1066;
+    const int SettlPartySubIDType = 786;
+    const int DistribPaymentMethod = 477;
+    const int TotalAffectedOrders = 533;
+    const int StrikeIncrement = 1204;
+    const int OrderHandlingInstSource = 1032;
+    const int CopyMsgIndicator = 797;
+    const int NoDlvyInst = 85;
+    const int QuoteEntryID = 299;
+    const int AffirmStatus = 940;
+    const int MailingInst = 482;
+    const int OfferSize = 135;
+    const int LegSecurityType = 609;
+    const int RiskLimitPlatform = 1533;
+    const int OrigCustOrderCapacity = 1432;
+    const int AllocMethod = 1002;
+    const int QuantityDate = 976;
+    const int TargetStrategyPerformance = 850;
+    const int CardExpDate = 490;
+    const int ConfirmID = 664;
+    const int StandInstDbName = 170;
+    const int DayOrderQty = 424;
+    const int HighLimitPrice = 1149;
+    const int FirmTradeID = 1041;
+    const int SecondaryIndividualAllocID = 989;
+    const int AgreementDesc = 913;
+    const int MassCancelResponse = 531;
+    const int LegSettlCurrency = 675;
+    const int Commission = 12;
+    const int StreamAsgnReqType = 1498;
+    const int BidSwapPoints = 1065;
+    const int NoSettlPartyIDs = 781;
+    const int SymbolSfx = 65;
+    const int BusinessRejectRefID = 379;
+    const int Price2 = 640;
+    const int FillLiquidityInd = 1443;
+    const int MassActionReportID = 1369;
+    const int DerivativeIssuer = 1275;
+    const int ExDestinationIDSource = 1133;
+    const int CollRespID = 904;
+    const int SecurityListRequestType = 559;
+    const int EncodedLegSecurityDesc = 622;
+    const int RelatedContextPartyRole = 1578;
+    const int UnderlyingSettlementStatus = 988;
+    const int SecurityAltID = 455;
+    const int RegistRefID = 508;
+    const int RelationshipRiskFlexibleIndicator = 1607;
+    const int DerivativePriceQuoteMethod = 1318;
+    const int RelationshipRiskProductComplex = 1597;
+    const int OrderDelay = 1428;
+    const int NoNotAffectedOrders = 1370;
+    const int Nested3PartyID = 949;
+    const int CollAsgnReason = 895;
+    const int TotalVolumeTradedTime = 450;
+    const int SecurityExchange = 207;
+    const int SettlPriceType = 731;
+    const int UnitOfMeasureQty = 1147;
+    const int UserRequestID = 923;
+    const int LastParPx = 669;
+    const int EndMaturityMonthYear = 1226;
+    const int DealingCapacity = 1048;
+    const int PrevClosePx = 140;
+    const int TradeInputDevice = 579;
+    const int DayCumQty = 425;
+    const int SecuritySettlAgentAcctNum = 178;
+    const int LegCurrency = 556;
+    const int EncryptedNewPassword = 1404;
+    const int DerivativeMinPriceIncrementAmount = 1268;
+    const int NoNested3PartySubIDs = 952;
+    const int RefSubID = 931;
+    const int SettlPartyRole = 784;
+    const int CashDistribAgentName = 498;
+    const int LegContractMultiplier = 614;
+    const int ProgPeriodInterval = 415;
+    const int LegSettlType = 587;
+    const int OnBehalfOfLocationID = 144;
+    const int OnBehalfOfSubID = 116;
+    const int RelationshipRiskLimitPlatform = 1586;
+    const int RelatedPartySubID = 1567;
+    const int ComplexEventEndTime = 1496;
+    const int RateSourceType = 1447;
+    const int DerivativeStateOrProvinceOfIssue = 1259;
+    const int TradeLegRefID = 824;
+    const int RelSymTransactTime = 1504;
+    const int NoComplexEventTimes = 1494;
+    const int LegCalculatedCcyLastQty = 1074;
+    const int Nested3PartyIDSource = 950;
+    const int DatedDate = 873;
+    const int SettlInstID = 162;
+    const int OpenInterest = 746;
+    const int UnderlyingContractMultiplier = 436;
+    const int TotQuoteEntries = 304;
+    const int PartyAltSubID = 1520;
+    const int TotNoCxldQuotes = 1168;
+    const int AggregatedBook = 266;
+    const int PaymentRef = 476;
+    const int PaymentDate = 504;
+    const int OrderPercent = 516;
+    const int PosQtyStatus = 706;
+    const int RiskRestructuringType = 1551;
+    const int NoNested4PartySubIDs = 1413;
+    const int PrivateQuote = 1171;
+    const int SecondaryTradeID = 1040;
+    const int SecuritySettlAgentContactPhone = 181;
+    const int EncodedMktSegmDescLen = 1397;
+    const int SideCurrency = 1154;
+    const int LegQty = 687;
+    const int MsgType = 35;
+    const int NoTradingSessions = 386;
+    const int IOIid = 23;
+    const int MultiLegReportingType = 442;
+    const int IDSource = 22;
+    const int LegStipulationType = 688;
+    const int DerivativeContractMultiplierUnit = 1438;
+    const int MarketSegmentID = 1300;
+    const int OrdStatus = 39;
+    const int MaturityDate = 541;
+    const int ApplTotalMessageCount = 1349;
+    const int InstrumentPartySubID = 1053;
+    const int CustomerOrFirm = 204;
+    const int AdjustmentType = 718;
+    const int NoPartyAltSubIDs = 1519;
+    const int UnderlyingInstrumentPartyID = 1059;
+    const int AsOfIndicator = 1015;
+    const int QuoteStatusReqID = 649;
+    const int LegPositionEffect = 564;
+    const int MDEntryPx = 270;
+    const int MassActionScope = 1374;
+    const int ReportedPxDiff = 1134;
+    const int UnderlyingSettlementDate = 987;
+    const int NoNestedPartySubIDs = 804;
+    const int AllocReportRefID = 795;
+    const int Concession = 238;
+    const int EncodedSecurityDesc = 351;
+    const int ExecRefID = 19;
+    const int VenueType = 1430;
+    const int MassActionType = 1373;
+    const int PosMaintResult = 723;
+    const int IOIShares = 27;
+    const int BenchmarkSecurityID = 699;
+    const int LegLastQty = 1418;
+    const int AllocSettlCurrency = 736;
+    const int LegCountryOfIssue = 596;
+    const int DerivativeSecurityXML = 1283;
+    const int StrikeRuleID = 1223;
+    const int RefCompID = 930;
+    const int SettlCurrOfferFxRate = 657;
+    const int OfferYield = 634;
+    const int RelatedContextPartyID = 1576;
+    const int TargetPartyIDSource = 1463;
+    const int EncryptedNewPasswordLen = 1403;
+    const int NoPositions = 702;
+    const int TotalAccruedInterestAmt = 540;
+    const int UnderlyingOptAttribute = 317;
+    const int DerivativeInstrAttribValue = 1314;
+    const int InstrumentPartyIDSource = 1050;
+    const int PegOffsetType = 836;
+    const int MassCancelRejectReason = 532;
+    const int ResponseTransportType = 725;
+    const int LegSecurityIDSource = 603;
+    const int BasisFeaturePrice = 260;
+    const int CouponPaymentDate = 224;
+    const int TradSesStatusRejReason = 567;
+    const int UnderlyingDetachmentPoint = 1460;
+    const int MaturityRuleID = 1222;
+    const int UnderlyingRepoCollateralSecurityType = 243;
+    const int NoTimeInForceRules = 1239;
+    const int NoRootPartySubIDs = 1120;
+    const int DisplayMinIncr = 1087;
+    const int TrdRegTimestampType = 770;
+    const int LegProduct = 607;
+    const int ApplVerID = 1128;
+    const int HandlInst = 21;
+    const int ListUpdateAction = 1324;
+    const int NestedInstrAttribValue = 1211;
+    const int TradingSessionSubID = 625;
+    const int RFQReqID = 644;
+    const int RelationshipRiskSecurityExchange = 1609;
+    const int UnderlyingLegSymbolSfx = 1331;
+    const int LiquidityNumSecurities = 441;
+    const int NoMsgTypes = 384;
+    const int TradSesStartTime = 341;
+    const int MDEntryType = 269;
+    const int AgreementCurrency = 918;
+    const int PegMoveType = 835;
+    const int AsgnReqID = 831;
+    const int PegDifference = 211;
+    const int Spread = 218;
+    const int EncodedAllocTextLen = 360;
+    const int OutsideIndexPct = 407;
+    const int DerivFlexProductEligibilityIndicator = 1243;
+    const int AvgPxIndicator = 819;
+    const int NoIOIQualifiers = 199;
+    const int CancellationRights = 480;
+    const int ListSeqNo = 67;
+    const int CardIssNum = 491;
+    const int RiskCFICode = 1546;
+    const int EncodedMktSegmDesc = 1398;
+    const int DerivativeEventType = 1287;
+    const int DerivativeMaturityMonthYear = 1251;
+    const int SideTradeReportID = 1005;
+    const int NoQuoteSets = 296;
+    const int RelationshipRiskSecurityDesc = 1610;
+    const int Nested4PartySubIDType = 1411;
+    const int FillPx = 1364;
+    const int StrikeExerciseStyle = 1304;
+    const int DeskID = 284;
+    const int CrossPercent = 413;
+    const int MaturityMonthYear = 200;
+    const int ComplexEventPrice = 1486;
+    const int NoNewsRefIDs = 1475;
+    const int UnderlyingCapValue = 1038;
+    const int CPRegType = 876;
+    const int CashDistribAgentCode = 499;
+    const int ExecPriceType = 484;
+    const int LegAllocID = 1366;
+    const int MDEntryTime = 273;
+    const int TotalNumSecurities = 393;
+    const int AllocSettlInstType = 780;
+    const int TargetPartyID = 1462;
+    const int DerivativeStrikeCurrency = 1262;
+    const int StatsType = 1176;
+    const int ApplExtID = 1156;
+    const int SettlementCycleNo = 1153;
+    const int UnderlyingStrikeCurrency = 941;
+    const int TradSesMode = 339;
+    const int SettlInstSource = 165;
+    const int PartyAltSubIDType = 1521;
+    const int UnderlyingLegSecurityDesc = 1392;
+    const int NoDerivativeInstrumentParties = 1292;
+    const int DerivativeEventTime = 1289;
+    const int TickIncrement = 1208;
+    const int UndlyInstrumentPartyID = 1059;
+    const int NoUndlyInstrumentParties = 1058;
+    const int ExpType = 982;
+    const int SecondaryClOrdID = 526;
+    const int SettlInstTransType = 163;
+    const int SideComplianceID = 659;
+    const int TradeRequestResult = 749;
+    const int OrigPosReqRefID = 713;
+    const int OrigCrossID = 551;
+    const int TradeInputSource = 578;
+    const int OrderQty2 = 192;
+    const int TestMessageIndicator = 464;
+    const int ContextPartySubID = 1527;
+    const int DerivativeEventDate = 1288;
+    const int SideGrossTradeAmt = 1072;
+    const int PeggedPrice = 839;
+    const int ExpirationCycle = 827;
+    const int AllocCancReplaceReason = 796;
+    const int CxlRejReason = 102;
+    const int BeginString = 8;
+    const int DeliverToSubID = 129;
+    const int NoRelatedPartyAltIDs = 1569;
+    const int RiskProductComplex = 1544;
+    const int LegPriceUnitOfMeasureQty = 1422;
+    const int NoCollInquiryQualifier = 938;
+    const int OfferPx = 133;
+    const int TotalVolumeTradedDate = 449;
+    const int NoContAmts = 518;
+    const int MinOfferSize = 648;
+    const int AvgParPx = 860;
+    const int LegFactor = 253;
+    const int RespondentType = 1172;
+    const int DisplayLowQty = 1085;
+    const int DKReason = 127;
+    const int BenchmarkPrice = 662;
+    const int ListID = 66;
+    const int LegSecurityAltID = 605;
+    const int PositionEffect = 77;
+    const int RelatedPartySubIDType = 1568;
+    const int TriggerAction = 1101;
+    const int RefOrderID = 1080;
+    const int ClearingInstruction = 577;
+    const int SettlInstCode = 175;
+    const int NumDaysInterest = 157;
+    const int OpenCloseSettlFlag = 286;
+    const int NoComplexEventDates = 1491;
+    const int DerivativeEncodedIssuerLen = 1277;
+    const int StrikeMultiplier = 967;
+    const int DiscretionMoveType = 841;
+    const int ListNoOrds = 68;
+    const int RelatedPartyIDSource = 1564;
+    const int PegSymbol = 1098;
+    const int DayAvgPx = 426;
+    const int Headline = 148;
+    const int NestedPartySubID = 545;
+    const int CardIssNo = 491;
+    const int OptAttribute = 206;
+    const int LastForwardPoints2 = 641;
+    const int MDUpdateType = 265;
+    const int TickDirection = 274;
+    const int LegRedemptionDate = 254;
+    const int StrikePrice = 202;
+    const int EncodedIssuer = 349;
+    const int YieldType = 235;
+    const int TradingReferencePrice = 1150;
+    const int MDEntrySpotRate = 1026;
+    const int ParticipationRate = 849;
+    const int PegScope = 840;
+    const int InterestAtMaturity = 738;
+    const int LegIndividualAllocID = 672;
+    const int AllowableOneSidednessValue = 766;
+    const int CashSettlAgentName = 182;
+    const int ContraTradeQty = 437;
+    const int LegMaturityTime = 1212;
+    const int SettlDeliveryType = 172;
+    const int SecondaryPriceLimitType = 1305;
+    const int MidPx = 631;
+    const int AvgPx = 6;
+    const int DiscretionLimitType = 843;
+    const int StrikeTime = 443;
+    const int SettlSessSubID = 717;
+    const int MailingDtls = 474;
+    const int BidID = 390;
+    const int PartyDetailsRequestResult = 1511;
+    const int ExerciseMethod = 747;
+    const int CommCurrency = 479;
+    const int NoSettlOblig = 1165;
+    const int MaxPriceVariation = 1143;
+    const int WorkingIndicator = 636;
+    const int CashSettlAgentAcctName = 185;
+    const int SellVolume = 331;
+    const int SideMultiLegReportingType = 752;
+    const int DerivativeEventText = 1291;
+    const int PegSecurityDesc = 1099;
+    const int AllocCustomerCapacity = 993;
+    const int ConfirmRejReason = 774;
+    const int BidRequestTransType = 374;
+    const int CashDistribAgentAcctNumber = 500;
+    const int LegExecInst = 1384;
+    const int CapPrice = 1199;
+    const int LegRepurchaseTerm = 251;
+    const int RegistAcctType = 493;
+    const int MassActionRejectReason = 1376;
+    const int DerivativePutOrCall = 1323;
+    const int StartMaturityMonthYear = 1241;
+    const int CollApplType = 1043;
+    const int NoUnderlyingAmounts = 984;
+    const int ConfirmType = 773;
+    const int LegMaturityMonthYear = 610;
+    const int RelatdSym = 46;
+    const int RiskLimitAmount = 1531;
+    const int UnderlyingLegSecuritySubType = 1338;
+    const int NoUnderlyingSecurityAltID = 457;
+    const int RelationshipRiskCFICode = 1599;
+    const int NoRelatedPartySubIDs = 1566;
+    const int RiskSymbolSfx = 1537;
+    const int MDQuoteType = 1070;
+    const int QtyType = 854;
+    const int QuoteRespType = 694;
+    const int IOINaturalFlag = 130;
+    const int BenchmarkCurvePoint = 222;
+    const int TradSesUpdateAction = 1327;
+    const int UnderlyingCashAmount = 973;
+    const int CollAsgnID = 902;
+    const int ExchangeRule = 825;
+    const int EncodedHeadline = 359;
+    const int RegistID = 513;
+    const int CrossID = 548;
+    const int NoExecs = 124;
+    const int DerivativeSecurityGroup = 1247;
+    const int SecondaryDisplayQty = 1082;
+    const int RefMsgType = 372;
+    const int StandInstDbID = 171;
+    const int EncodedLegSecurityDescLen = 621;
+    const int DerivativeEventPx = 1290;
+    const int SettlObligSource = 1164;
+    const int TrdSubType = 829;
+    const int EncodedUnderlyingIssuerLen = 362;
+    const int ExecTransType = 20;
+    const int BeginSeqNo = 7;
+    const int DayBookingInst = 589;
+    const int FlowScheduleType = 1439;
+    const int MDOriginType = 1024;
+    const int CollInquiryStatus = 945;
+    const int NoInstrAttrib = 870;
+    const int RegistEmail = 511;
+    const int StreamAsgnReqID = 1497;
+    const int CPProgram = 875;
+    const int ConfirmReqID = 859;
+    const int AltMDSourceID = 817;
+    const int NoOrders = 73;
+    const int CashDistribAgentAcctName = 502;
+    const int NoContextPartySubIDs = 1526;
+    const int UndlyInstrumentPartyIDSource = 1060;
+    const int UnderlyingSettlMethod = 1039;
+    const int NoMDEntryTypes = 267;
+    const int MDEntryForwardPoints = 1027;
+    const int PosReqType = 724;
+    const int MassStatusReqType = 585;
+    const int TradeOriginationDate = 229;
+    const int SettlPrice = 730;
+    const int SecuritySettlAgentAcctName = 179;
+    const int RiskInstrumentMultiplier = 1558;
+    const int NoDerivativeEvents = 1286;
+    const int UnderlyingEndPrice = 883;
+    const int SubscriptionRequestType = 263;
+    const int TotalNumSecurityTypes = 557;
+    const int NewsCategory = 1473;
+    const int UnderlyingLegPutOrCall = 1343;
+    const int URLLink = 149;
+    const int NoInstrumentPartySubIDs = 1052;
+    const int UnderlyingCurrentValue = 885;
+    const int InterestAccrualDate = 874;
+    const int FutSettDate2 = 193;
+    const int NoClearingInstructions = 576;
+    const int UnderlyingCurrency = 318;
+    const int LegInterestAccrualDate = 956;
+    const int NewPassword = 925;
+    const int RedemptionDate = 240;
+    const int RefApplLastSeqNum = 1357;
+    const int StartCash = 921;
+    const int MaxMessageSize = 383;
+    const int OfferForwardPoints = 191;
+    const int IOIQty = 27;
+    const int LastQty = 32;
+    const int ApplResponseError = 1354;
+    const int UnderlyingLegSecurityType = 1337;
+    const int DerivativePriceUnitOfMeasure = 1315;
+    const int TriggerPriceDirection = 1109;
+    const int PositionCurrency = 1055;
+    const int MessageEventSource = 1011;
+    const int CollInquiryID = 909;
+    const int UnderlyingStartValue = 884;
+    const int LastLiquidityInd = 851;
+    const int SecurityID = 48;
+    const int NoMDEntries = 268;
+    const int NoPartyListResponseTypes = 1506;
+    const int StrikePriceDeterminationMethod = 1478;
+    const int EndDate = 917;
+    const int CashOutstanding = 901;
+    const int MDReqID = 262;
+    const int IOIRefID = 26;
+    const int NoContextPartyIDs = 1522;
+    const int TargetStrategy = 847;
+    const int ConfirmRefID = 772;
+    const int SellerDays = 287;
+    const int DueToRelated = 329;
+    const int SecondaryTradingReferencePrice = 1240;
+    const int NoMDFeedTypes = 1141;
+    const int UnderlyingInstrumentPartySubIDType = 1064;
+    const int TradSesCloseTime = 344;
+    const int ContractSettlMonth = 667;
+    const int DerivativeStrikePrice = 1261;
+    const int TriggerSecurityDesc = 1106;
+    const int UnderlyingCashType = 974;
+    const int NoMiscFees = 136;
+    const int CustOrderCapacity = 582;
+    const int RiskSecurityExchange = 1616;
+    const int LegAllocSettlCurrency = 1367;
+    const int UnderlyingAdjustedQuantity = 1044;
+    const int OwnershipType = 517;
+    const int MaxShow = 210;
+    const int LegSecurityID = 602;
+    const int EncodedSymbol = 1360;
+    const int DerivativeSecurityDesc = 1279;
+    const int UnitOfMeasure = 996;
+    const int SecDefStatus = 653;
+    const int Quantity = 53;
+    const int NewsID = 1472;
+    const int UndlyInstrumentPartySubIDType = 1064;
+    const int SettleOnOpenFlag = 966;
+    const int LastUpdateTime = 779;
+    const int RepurchaseRate = 227;
+    const int RepurchaseTerm = 226;
+    const int NestedPartyRole = 538;
+    const int SecondaryExecID = 527;
+    const int Pool = 691;
+    const int NoTickRules = 1205;
+    const int Volatility = 1188;
+    const int PctAtRisk = 869;
+    const int UnderlyingSecurityExchange = 308;
+    const int LegStrikePrice = 612;
+    const int SettlmntTyp = 63;
+    const int TradePublishIndicator = 1390;
+    const int ApplResponseType = 1348;
+    const int MDSubBookType = 1173;
+    const int Username = 553;
+    const int StandInstDbType = 169;
+    const int RelatedContextPartyIDSource = 1577;
+    const int QuoteEntryStatus = 1167;
+    const int TriggerPriceType = 1107;
+    const int SideTrdSubTyp = 1008;
+    const int UnderlyingTradingSessionSubID = 823;
+    const int SettlInstReqRejCode = 792;
+    const int MktBidPx = 645;
+    const int UnderlyingLegSymbol = 1330;
+    const int StrikeValue = 968;
+    const int Urgency = 61;
+    const int AllocID = 70;
+    const int NoPartyList = 1513;
+    const int UnderlyingDeliveryAmount = 1037;
+    const int SideQty = 1009;
+    const int CollAsgnTransType = 903;
+    const int ThresholdAmount = 834;
+    const int DefBidSize = 293;
+    const int LegStateOrProvinceOfIssue = 597;
+    const int PaymentMethod = 492;
+    const int RiskCouponRate = 1555;
+    const int UnderlyingLegOptAttribute = 1391;
+    const int LegVolatility = 1379;
+    const int DerivativeInstrAttribType = 1313;
+    const int DerivativeUnitOfMeasureQty = 1270;
+    const int NoStatsIndicators = 1175;
+    const int TriggerPriceTypeScope = 1108;
+    const int LastNetworkResponseID = 934;
+    const int UnderlyingSettlPriceType = 733;
+    const int ApplReportID = 1356;
+    const int PegLimitType = 837;
+    const int ExecID = 17;
+    const int Side = 54;
+    const int UnderlyingLastPx = 651;
+    const int MarketDepth = 264;
+    const int DiscretionOffset = 389;
+    const int ContAmtType = 519;
+    const int MiscFeeCurr = 138;
+    const int NoRiskLimits = 1529;
+    const int AttachmentPoint = 1457;
+    const int OrderCategory = 1115;
+    const int AdvTransType = 5;
+    const int WtAverageLiquidity = 410;
+    const int QuoteSetValidUntilTime = 367;
+    const int NoNested4PartyIDs = 1414;
+    const int LegPutOrCall = 1358;
+    const int UserStatusText = 927;
+    const int Nested2PartySubID = 760;
+    const int EFPTrackingError = 405;
+    const int SideLiquidityInd = 1444;
+    const int DerivativeMinPriceIncrement = 1267;
+    const int PublishTrdIndicator = 852;
+    const int InvestorCountryOfResidence = 475;
+    const int SideReasonCd = 1007;
+    const int MinPriceIncrement = 969;
+    const int SecuritySettlAgentContactName = 180;
+    const int SecurityResponseType = 323;
+    const int LegBenchmarkCurvePoint = 678;
+    const int ClearingFirm = 439;
+    const int RelationshipRiskSecurityIDSource = 1592;
+    const int SessionStatus = 1409;
+    const int TriggerSecurityID = 1104;
+    const int TotNoAllocs = 892;
+    const int NoAltMDSource = 816;
+    const int AllocAccountType = 798;
+    const int LastPx = 31;
+    const int AllocTransType = 71;
+    const int TotNoQuoteEntries = 304;
+    const int MinBidSize = 647;
+    const int SettlBrkrCode = 174;
+    const int CardHolderName = 488;
+    const int ExpirationQtyType = 982;
+    const int EncodedUnderlyingSecurityDescLen = 364;
+    const int QuoteReqID = 131;
+    const int NoRelatedPartyAltSubIDs = 1572;
+    const int RiskProduct = 1543;
+    const int RiskSecurityAltIDSource = 1542;
+    const int PriceUnitOfMeasure = 1191;
+    const int TZTransactTime = 1132;
+    const int AllocHandlInst = 209;
+    const int UnderlyingInstrumentPartyIDSource = 1060;
+    const int CurrencyRatio = 1382;
+    const int RefreshQty = 1088;
+    const int TradeRequestStatus = 750;
+    const int TrdRepIndicator = 1389;
+    const int MiscFeeAmt = 137;
+    const int TradSesOpenTime = 342;
+    const int PreallocMethod = 591;
+    const int TaxAdvantageType = 495;
+    const int MessageEncoding = 347;
+    const int RiskPutOrCall = 1553;
+    const int RiskSecurityGroup = 1545;
+    const int NoPartySubIDs = 802;
+    const int SettlInstReqID = 791;
+    const int LegRepoCollateralSecurityType = 250;
+    const int AffectedSecondaryOrderID = 536;
+    const int RiskSymbol = 1536;
+    const int DerivativeMaturityTime = 1253;
+    const int ExpireTime = 126;
+    const int UnderlyingFactor = 246;
+    const int OrigOrdModTime = 586;
+    const int NoTrdRepIndicators = 1387;
+    const int DerivativeMaturityDate = 1252;
+    const int DerivativeCFICode = 1248;
+    const int Nested2PartySubIDType = 807;
+    const int LegIOIQty = 682;
+    const int ExpireDate = 432;
+    const int RiskSecurityType = 1547;
+    const int NoMatchRules = 1235;
+    const int ApplEndSeqNum = 1183;
+    const int EventPx = 867;
+    const int AsgnRptID = 833;
+    const int TimeInForce = 59;
+    const int LowPx = 333;
+    const int IOIQualifier = 104;
+    const int WaveNo = 105;
+    const int RiskSeniority = 1552;
+    const int StrikePriceBoundaryMethod = 1479;
+    const int DerivativeIssueDate = 1276;
+    const int MiscFeeType = 139;
+    const int QuoteID = 117;
+    const int RiskFlexibleIndicator = 1554;
+    const int DerivativeInstrumentPartyIDSource = 1294;
+    const int SettlObligID = 1161;
+    const int InstrAttribValue = 872;
+    const int LiquidityValue = 404;
+    const int SecurityIDSource = 22;
+    const int NewsRefType = 1477;
+    const int NoOfLegUnderlyings = 1342;
+    const int DerivativeEncodedSecurityDesc = 1281;
+    const int TriggerOrderType = 1111;
+    const int UnderlyingDirtyPrice = 882;
+    const int CrossType = 549;
+    const int RepoCollateralSecurityType = 239;
+    const int Password = 554;
+    const int OpenCloseSettleFlag = 286;
+    const int Subject = 147;
+    const int RefApplReqID = 1433;
+    const int UnderlyingEndValue = 886;
+    const int NewSeqNo = 36;
+    const int OrigTradeHandlingInstr = 1124;
+    const int DisplayHighQty = 1086;
+    const int MDBookType = 1021;
+    const int MarginExcess = 899;
+    const int BasisPxType = 419;
+    const int DlvyInst = 86;
+    const int ComplianceID = 376;
+    const int EmailThreadID = 164;
+    const int ContAmtCurr = 521;
+    const int RelationshipRiskSecurityGroup = 1598;
+    const int ComplexEventType = 1484;
+    const int MassActionResponse = 1375;
+    const int UnderlyingIssueDate = 242;
+    const int SecurityRequestType = 321;
+    const int AllocInterestAtMaturity = 741;
+    const int ListRejectReason = 1386;
+    const int DeskType = 1033;
+    const int SecondaryTradeReportID = 818;
+    const int SettlType = 63;
+    const int OpenClose = 77;
+    const int ContractMultiplierUnit = 1435;
+    const int SecondaryLowLimitPrice = 1221;
+    const int ExpQty = 983;
+    const int NetworkRequestID = 933;
+    const int TrdType = 828;
+    const int NoUnderlyings = 711;
+    const int MDMkt = 275;
+    const int LastMkt = 30;
+    const int RestructuringType = 1449;
+    const int NoStrikeRules = 1201;
+    const int ListName = 392;
+    const int ProgRptReqs = 414;
+    const int TradingSessionID = 336;
+    const int ListOrderStatus = 431;
+    const int RegistStatus = 506;
+    const int PosAmt = 708;
+    const int UnderlyingPriceDeterminationMethod = 1481;
+    const int NoUnderlyingStips = 887;
+    const int TradSesPreCloseTime = 343;
+    const int MassCancelRequestType = 530;
+    const int UnderlyingLegSecurityAltIDSource = 1336;
+    const int SettlPartyID = 782;
+    const int NoAffectedOrders = 534;
+    const int CashSettlAgentAcctNum = 184;
+    const int UnderlyingLegMaturityMonthYear = 1339;
+    const int DerivativeSecurityListRequestType = 1307;
+    const int NoLotTypeRules = 1234;
+    const int NoDates = 580;
+    const int CxlRejResponseTo = 434;
+    const int EffectiveTime = 168;
+    const int GrossTradeAmt = 381;
+    const int ContextPartyID = 1523;
+    const int SecurityListDesc = 1467;
+    const int NotAffectedOrderID = 1371;
+    const int DerivativeStrikeValue = 1264;
+    const int NoPosAmt = 753;
+    const int LegCreditRating = 257;
+    const int RelationshipRiskInstrumentSettlType = 1611;
+    const int BidForwardPoints2 = 642;
+    const int SettlDate = 64;
+    const int ClientID = 109;
+    const int QuoteCancelType = 298;
+    const int StipulationType = 233;
+    const int OutMainCntryUIndex = 412;
+    const int LegSettlmntTyp = 587;
+    const int NoRelationshipRiskInstruments = 1587;
+    const int DerivativeNTPositionLimit = 1274;
+    const int PriceQuoteMethod = 1196;
+    const int LowLimitPrice = 1148;
+    const int LegUnitOfMeasure = 999;
+    const int SessionRejectReason = 373;
+    const int PartyDetailsListReportID = 1510;
+    const int DeliveryType = 919;
+    const int AllocPrice = 366;
+    const int NoBidComponents = 420;
+    const int QuoteQualifier = 695;
+    const int Scope = 546;
+    const int NoSecurityAltID = 454;
+    const int RootPartySubID = 1121;
+    const int DeliverToLocationID = 145;
+    const int DeleteReason = 285;
+    const int BidSpotRate = 188;
+    const int Nested4PartyID = 1415;
+    const int InViewOfCommon = 328;
+    const int UnderlyingSettlPrice = 732;
+    const int RegistRejReasonText = 496;
+    const int NoSides = 552;
+    const int LegAllocAccount = 671;
+    const int NoRelationshipRiskWarningLevels = 1613;
+    const int RelationshipRiskProduct = 1596;
+    const int LegSecurityDesc = 620;
+    const int ClOrdLinkID = 583;
+    const int OrigSendingTime = 122;
+    const int EncodedLegIssuerLen = 618;
+    const int OrderID = 37;
+    const int SecurityType = 167;
+    const int RoundingDirection = 468;
+    const int FillExecID = 1363;
+    const int NoEvents = 864;
+    const int RoundLot = 561;
+    const int MDEntrySize = 271;
+    const int EncodedIssuerLen = 348;
+    const int DerivativePriceUnitOfMeasureQty = 1316;
+    const int TimeUnit = 997;
+    const int TotNoOrders = 68;
+    const int PartyAltID = 1517;
+    const int LegSwapType = 690;
+    const int IOITransType = 28;
+    const int RawDataLength = 95;
+    const int UnderlyingSecurityType = 310;
+    const int UnderlyingLegSecurityAltID = 1335;
+    const int SecurityReportID = 964;
+    const int TotNumReports = 911;
+    const int TotalNumPosReports = 727;
+    const int SecurityReqID = 320;
+    const int PosReqResult = 728;
+    const int LegOfferForwardPoints = 1068;
+    const int AllowableOneSidednessCurr = 767;
+    const int AffectedOrderID = 535;
+    const int UnderlyingCountryOfIssue = 592;
+    const int UnderlyingRepurchaseRate = 245;
+    const int LastMsgSeqNumProcessed = 369;
+    const int UnderlyingCFICode = 463;
+    const int DerivativeOptAttribute = 1265;
+    const int PegSecurityID = 1097;
+    const int HostCrossID = 961;
+    const int ExecInstValue = 1308;
+    const int DerivativeOptPayAmount = 1225;
+    const int UnderlyingCouponRate = 435;
+    const int SettlInstMode = 160;
+    const int SecurityAltIDSource = 456;
+    const int PreviouslyReported = 570;
+    const int ContextPartyIDSource = 1524;
+    const int RptSys = 1135;
+    const int NoNested2PartySubIDs = 806;
+    const int RefAllocID = 72;
+    const int DefOfferSize = 294;
+    const int ProductComplex = 1227;
+    const int CustOrderHandlingInst = 1031;
+    const int MDPriceLevel = 1023;
+    const int LegOptionRatio = 1017;
+    const int SecurityStatus = 965;
+    const int LegRefID = 654;
+    const int DividendYield = 1380;
+    const int DerivativeInstrumentPartySubIDType = 1298;
+    const int EndStrikePxRange = 1203;
+    const int DisplayQty = 1138;
+    const int LegSecuritySubType = 764;
+    const int ProcessCode = 81;
+    const int ExecInst = 18;
+    const int TradSesEndTime = 345;
+    const int OrigTime = 42;
+    const int ExecValuationPoint = 515;
+    const int ExecType = 150;
+    const int NoRelatedContextPartySubIDs = 1579;
+    const int Nested4PartyRole = 1417;
+    const int MultilegModel = 1377;
+    const int SecurityGroup = 1151;
+    const int EventType = 865;
+    const int TradeAllocIndicator = 826;
+    const int YieldCalcDate = 701;
+    const int ValueOfFutures = 408;
+    const int LegSide = 624;
+    const int UserStatus = 926;
+    const int SideValue1 = 396;
+    const int CxlQty = 84;
+    const int SecurityResponseID = 322;
+    const int InstrRegistry = 543;
+    const int StreamAsgnRptID = 1501;
+    const int OrderDelayUnit = 1429;
+    const int LegCurrencyRatio = 1383;
+    const int EndTickPriceRange = 1207;
+    const int CollReqID = 894;
+    const int LegPool = 740;
+    const int ShortQty = 705;
+    const int SideValue2 = 397;
+    const int TradedFlatSwitch = 258;
+    const int MassStatusReqID = 584;
+    const int ComplexEventEndDate = 1493;
+    const int MarketID = 1301;
+    const int OrigTradeDate = 1125;
+    const int PreTradeAnonymity = 1091;
+    const int TrdRptStatus = 939;
+    const int DistribPercentage = 512;
+    const int QuoteStatus = 297;
+    const int ClearingAccount = 440;
+    const int TrdMatchID = 880;
+    const int OrderInputDevice = 821;
+    const int SolicitedFlag = 377;
+    const int TransactTime = 60;
+    const int RiskLimitType = 1530;
+    const int UnderlyingFlowScheduleType = 1441;
+    const int UnderlyingStipValue = 889;
+    const int NextExpectedMsgSeqNum = 789;
+    const int BenchmarkCurveCurrency = 220;
+    const int CFICode = 461;
+    const int Factor = 228;
+    const int LastShares = 32;
+    const int RequestedPartyRole = 1509;
+    const int EventTime = 1145;
+    const int RootPartySubIDType = 1122;
+    const int ShortSaleReason = 853;
+    const int XmlData = 213;
+    const int RelationshipRiskSeniority = 1605;
+    const int NoTargetPartyIDs = 1461;
+    const int NoRootPartyIDs = 1116;
+    const int EventDate = 866;
+    const int PegRoundDirection = 838;
+    const int LegSettlDate = 588;
+    const int ModelType = 1434;
+    const int DefaultVerIndicator = 1410;
+    const int FuturesValuationMethod = 1197;
+    const int SettlMethod = 1193;
+    const int UnderlyingFXRate = 1045;
+    const int ConfirmStatus = 665;
+    const int LocateReqd = 114;
+    const int PosMaintRptID = 721;
+    const int Adjustment = 334;
+    const int StreamAsgnType = 1617;
+    const int LastRptRequested = 912;
+    const int LocaleOfIssue = 472;
+    const int SenderSubID = 50;
+    const int HighPx = 332;
+    const int AllocSettlCurrAmt = 737;
+    const int ComplexEventPriceBoundaryPrecision = 1488;
+    const int InstrumentPartyRole = 1051;
+    const int YieldRedemptionPrice = 697;
+    const int CumQty = 14;
+    const int OrigClOrdID = 41;
+    const int SettlSessID = 716;
+    const int ParentMktSegmID = 1325;
+    const int TradeReportType = 856;
+    const int AvgPrxPrecision = 74;
+    const int NoLegs = 555;
+    const int UnderlyingSymbol = 311;
+    const int ExerciseStyle = 1194;
+    const int HaltReasonChar = 327;
+    const int ExDestination = 100;
+    const int NoPartyRelationships = 1514;
+    const int DerivativeInstrmtAssignmentMethod = 1255;
+    const int UnderlyingIDSource = 305;
+    const int AdvId = 2;
+    const int TransBkdTime = 483;
+    const int LegLastPx = 637;
+    const int NoRiskWarningLevels = 1559;
+    const int AllocReportType = 794;
+    const int RegistDtls = 509;
+    const int AllocType = 626;
+    const int QuoteRequestRejectReason = 658;
+    const int UnderlyingUnitOfMeasure = 998;
+    const int IndividualAllocID = 467;
+    const int LegOfferPx = 684;
+    const int LiquidityIndType = 409;
+    const int HopSendingTime = 629;
+    const int RelationshipRiskLimitAmount = 1584;
+    const int ApplResendFlag = 1352;
+    const int DerivativeCapPrice = 1321;
+    const int RiskSecurityID = 1538;
+    const int ComplexOptPayoutAmount = 1485;
+    const int LanguageCode = 1474;
+    const int SettlObligRefID = 1163;
+    const int OrigTradeID = 1126;
+    const int UnderlyingCollectAmount = 986;
+    const int StatusValue = 928;
+    const int OfferSpotRate = 190;
+    const int PosType = 703;
+    const int UnderlyingRedemptionDate = 247;
+    const int SettlDepositoryCode = 173;
+    const int StreamAsgnAckType = 1503;
+    const int FloorPrice = 1200;
+    const int RiskMaturityTime = 1550;
+    const int UnderlyingPriceUnitOfMeasureQty = 1425;
+    const int FeeMultiplier = 1329;
+    const int UnderlyingMaturityTime = 1213;
+    const int ApplID = 1180;
+    const int LegGrossTradeAmt = 1075;
+    const int MDEntryDate = 272;
+    const int LegBenchmarkCurveCurrency = 676;
+    const int RiskInstrumentOperator = 1535;
+    const int OptPayoutAmount = 1195;
+    const int MiscFeeBasis = 891;
+    const int ValidUntilTime = 62;
+    const int OrdType = 40;
+    const int AdvRefID = 3;
+    const int HopCompID = 628;
+    const int PosMaintRptRefID = 714;
+    const int LegStipulationValue = 689;
+    const int MatchType = 574;
+    const int OptPayoutType = 1482;
+    const int UnderlyingPriceUnitOfMeasure = 1424;
+    const int MarketUpdateAction = 1395;
+    const int CollAsgnRejectReason = 906;
+    const int PeggedRefPrice = 1095;
+    const int IndividualAllocType = 992;
+    const int EndCash = 922;
+    const int EventText = 868;
+    const int ExDate = 230;
+    const int NestedPartyIDSource = 525;
+    const int GTBookingInst = 427;
+    const int DerivativeValuationMethod = 1319;
+    const int NumberOfOrders = 346;
+    const int TrdRepPartyRole = 1388;
+    const int TriggerPrice = 1102;
+    const int MDReportID = 963;
+    const int SecondaryAllocID = 793;
+    const int LeavesQty = 151;
+    const int CardStartDate = 503;
+    const int LegCoveredOrUncovered = 565;
+    const int PutOrCall = 201;
+    const int MatchAlgorithm = 1142;
+    const int CalculatedCcyLastQty = 1056;
+    const int FundRenewWaiv = 497;
+    const int SecuritySettlAgentName = 176;
+    const int BidDescriptor = 400;
+    const int RelationshipRiskSecurityAltIDSource = 1595;
+    const int MDStreamID = 1500;
+    const int NoAsgnReqs = 1499;
+    const int NotionalPercentageOutstanding = 1451;
+    const int NoSettlInst = 778;
+    const int SettlInstMsgID = 777;
+    const int ForexReq = 121;
+    const int TradSesReqID = 335;
+    const int UnderlyingLegStrikePrice = 1340;
+    const int TickRuleType = 1209;
+    const int InstrmtAssignmentMethod = 1049;
+    const int DiscretionOffsetType = 842;
+    const int ConfirmTransType = 666;
+    const int TotalTakedown = 237;
+    const int ResponseDestination = 726;
+    const int MDSecSizeType = 1178;
+    const int InstrumentPartySubIDType = 1054;
+    const int LegTimeUnit = 1001;
+    const int TransferReason = 830;
+    const int ApplQueueMax = 812;
+    const int DiscretionOffsetValue = 389;
+    const int BookingRefID = 466;
+    const int LegBidPx = 681;
+    const int ContextPartyRole = 1525;
+    const int TradSesEvent = 1368;
+    const int DerivativeProduct = 1246;
+    const int RootPartyRole = 1119;
+    const int DlvyInstType = 787;
+    const int NoLinesOfText = 33;
+    const int PosReqID = 710;
+    const int LegSecurityAltIDSource = 606;
+    const int EncodedSubject = 357;
+    const int ContraBroker = 375;
+    const int TradeCondition = 277;
+    const int PartyID = 448;
+    const int MDEntryID = 278;
+    const int UnderlyingLegSecurityExchange = 1341;
+    const int PriceLimitType = 1306;
+    const int TriggerSecurityIDSource = 1105;
+    const int NoUndlyInstrumentPartySubIDs = 1062;
+    const int ClientBidID = 391;
+    const int NetChgPrevDay = 451;
+    const int DefaultApplVerID = 1137;
+    const int IOIID = 23;
+    const int SpreadToBenchmark = 218;
+    const int CommType = 13;
+    const int RegistRejReasonCode = 507;
+    const int RelationshipRiskEncodedSecurityDesc = 1619;
+    const int RelationshipRiskRestructuringType = 1604;
+    const int SideTimeInForce = 962;
+    const int TrdRegTimestamp = 769;
+    const int FinancialStatus = 291;
+    const int NoTrades = 897;
+    const int LastFragment = 893;
+    const int PartySubID = 523;
+    const int AllocQty = 80;
+    const int NotifyBrokerOfCredit = 208;
+    const int SideTrdRegTimestampType = 1013;
+    const int AgreementDate = 915;
+    const int PartySubIDType = 803;
+    const int TotalNetValue = 900;
+    const int AllocNoOrdersType = 857;
+    const int AllocLinkID = 196;
+    const int RoundingModulus = 469;
+    const int OnBehalfOfCompID = 115;
+    const int UnderlyingSecurityID = 309;
+    const int SettlObligMsgID = 1160;
+    const int PositionLimit = 970;
+    const int SharedCommission = 858;
+    const int AllowableOneSidednessPct = 765;
+    const int AllocText = 161;
+    const int EndSeqNo = 16;
+    const int NoPartyIDs = 453;
+    const int NoContraBrokers = 382;
+    const int AllocLinkType = 197;
+    const int UnderlyingAllocationPercent = 972;
+    const int AllocAccruedInterestAmt = 742;
+    const int RiskSecuritySubType = 1548;
+    const int EncodedSecurityListDesc = 1469;
+    const int EncryptedPasswordLen = 1401;
+    const int LegDividendYield = 1381;
+    const int RefreshIndicator = 1187;
+    const int SideSettlCurrency = 1155;
+    const int UnderlyingSettlementType = 975;
+    const int OrderCapacityQty = 863;
+    const int LongQty = 704;
+    const int NoPartyAltIDs = 1516;
+    const int DerivativeSettlMethod = 1317;
+    const int TriggerTradingSessionID = 1113;
+    const int DisplayMethod = 1084;
+    const int RptSeq = 83;
+    const int MDEntryOriginator = 282;
+    const int LegInstrRegistry = 599;
+    const int FillQty = 1365;
+    const int PegSecurityIDSource = 1096;
+    const int MaturityTime = 1079;
+    const int MDFeedType = 1022;
+    const int CollStatus = 910;
+    const int UnderlyingSecuritySubType = 763;
+    const int CstmApplVerID = 1129;
+    const int DefaultApplExtID = 1407;
+    const int NoDerivativeSecurityAltID = 1218;
+    const int SideValueInd = 401;
+    const int EncodedText = 355;
+    const int Account = 1;
+    const int TriggerNewPrice = 1110;
+    const int UndlyInstrumentPartyRole = 1061;
+    const int MsgDirection = 385;
+    const int LegMaturityDate = 611;
+    const int UnderlyingContractMultiplierUnit = 1437;
+    const int InputSource = 979;
+    const int MDUpdateAction = 279;
+    const int MatchStatus = 573;
+    const int RateSource = 1446;
+    const int AllocPositionEffect = 1047;
+    const int PartyIDSource = 447;
+    const int EncodedUnderlyingIssuer = 363;
+    const int NoRequestedPartyRoles = 1508;
+    const int EncryptedPassword = 1402;
+    const int TriggerNewQty = 1112;
+    const int LegLastForwardPoints = 1073;
+    const int TotNumTradeReports = 748;
+    const int RefApplVerID = 1130;
+    const int LastSpotRate = 194;
+    const int Price = 44;
+    const int UnderlyingSecurityIDSource = 305;
+    const int TotNoSecurityTypes = 557;
+    const int RelationshipRiskInstrumentMultiplier = 1612;
+    const int NoRiskInstruments = 1534;
+    const int ReportedPx = 861;
+    const int LegSymbol = 600;
+    const int LegIssuer = 617;
+    const int RegistDetls = 509;
+    const int UnderlyingLegSecurityID = 1332;
+    const int MinLotSize = 1231;
+    const int NumTickets = 395;
+    const int LegLocaleOfIssue = 598;
+    const int ExchangeForPhysical = 411;
+    const int SecurityTradingEvent = 1174;
+    const int MinPriceIncrementAmount = 1146;
+    const int UnderlyingPayAmount = 985;
+    const int SettlPartySubID = 785;
+    const int AllocNetMoney = 154;
+    const int UnderlyingMaturityDay = 314;
+    const int NetworkResponseID = 932;
+    const int NumBidders = 417;
+    const int AllocAcctIDSource = 661;
+    const int AllocAvgPx = 153;
+    const int SecuritySettlAgentCode = 177;
+    const int NoDistribInsts = 510;
+    const int CustDirectedOrder = 1029;
+    const int FairValue = 406;
+    const int NoStrikes = 428;
+    const int EncodedSecurityListDescLen = 1468;
+    const int LegExerciseStyle = 1420;
+    const int DerivativeSymbolSfx = 1215;
+    const int NestedInstrAttribType = 1210;
+    const int ContraTrader = 337;
+    const int RiskInstrumentSettlType = 1557;
+    const int MDSecSize = 1179;
+    const int NoOfSecSizes = 1177;
+    const int CollAction = 944;
+    const int UnderlyingLastQty = 652;
+    const int PossDupFlag = 43;
+    const int ListStatusType = 429;
+    const int SideFillStationCd = 1006;
+    const int StatusText = 929;
+    const int BasisFeatureDate = 259;
+    const int XmlDataLen = 212;
+    const int UnderlyingMaturityDate = 542;
+    const int GapFillFlag = 123;
+    const int RefApplExtID = 1406;
+    const int RefApplID = 1355;
+    const int NoTradingSessionRules = 1309;
+    const int SwapPoints = 1069;
+    const int TargetStrategyParameters = 848;
+    const int LastForwardPoints = 195;
+    const int YieldRedemptionDate = 696;
+    const int RelationshipRiskSecurityID = 1591;
+    const int NoSettlDetails = 1158;
+    const int TradeHandlingInstr = 1123;
+    const int CashSettlAgentCode = 183;
+    const int LegPriceType = 686;
+    const int EncodedListExecInstLen = 352;
+    const int TradSesMethod = 338;
+    const int RiskLimitCurrency = 1532;
+    const int PartyDetailsListRequestID = 1505;
+    const int AgreementID = 914;
+    const int CashDistribCurr = 478;
+    const int BidPx = 132;
+    const int TradeType = 418;
+    const int EncodedSecurityDescLen = 350;
+    const int ComplexEventCondition = 1490;
+    const int EncryptedPasswordMethod = 1400;
+    const int DerivativeSecurityAltID = 1219;
+    const int TotNoAccQuotes = 1169;
+    const int TimeBracket = 943;
+    const int NoAllocs = 78;
+    const int UnderlyingProduct = 462;
+    const int BenchmarkCurveName = 221;
+    const int UnderlyingSymbolSfx = 312;
+    const int StrikePriceBoundaryPrecision = 1480;
+    const int QuoteSetID = 302;
+    const int CashMargin = 544;
+    const int SettlObligTransType = 1162;
+    const int LegNumber = 1152;
+    const int DeskOrderHandlingInst = 1035;
+    const int SettlPartyIDSource = 783;
+    const int PriorSettlPrice = 734;
+    const int RelationshipRiskSecurityType = 1600;
+    const int NotAffOrigClOrdID = 1372;
+    const int TradingSessionDesc = 1326;
+    const int DerivativeFloorPrice = 1322;
+    const int DerivativeSymbol = 1214;
+    const int RiskFreeRate = 1190;
+    const int PosTransType = 709;
+    const int MsgSeqNum = 34;
+    const int Signature = 89;
+    const int Seniority = 1450;
+    const int NoRateSources = 1445;
+    const int PriceUnitOfMeasureQty = 1192;
+    const int CollAsgnRefID = 907;
+    const int BuyVolume = 330;
+    const int SettlCurrFxRateCalc = 156;
+    const int PosMaintStatus = 722;
+    const int PriorSpreadIndicator = 720;
+    const int Benchmark = 219;
+    const int MaturityMonthYearFormat = 1303;
+    const int UnderlyingTradingSessionID = 822;
+    const int TotNoRelatedSym = 393;
+    const int StateOrProvinceOfIssue = 471;
+    const int RelatedPartyAltSubID = 1573;
+    const int DerivativeInstrRegistry = 1257;
+    const int LegBidForwardPoints = 1067;
+    const int ManualOrderIndicator = 1028;
+    const int NetMoney = 118;
+    const int LegalConfirm = 650;
+    const int CountryOfIssue = 470;
+    const int ApplReportType = 1426;
+    const int RootPartyID = 1117;
+    const int UnderlyingQty = 879;
+    const int ApplQueueDepth = 813;
+    const int StopPx = 99;
+    const int ReportToExch = 113;
+    const int ContraryInstructionIndicator = 719;
+    const int EncodedListStatusTextLen = 445;
+    const int DerivativeSecurityXMLSchema = 1284;
+    const int NoRelatedSym = 146;
+    const int AllocRejCode = 88;
+    const int UnderlyingSecurityAltID = 458;
+    const int NoRelationshipRiskSecurityAltID = 1593;
+    const int RefOrdIDReason = 1431;
+    const int DerivativeInstrumentPartyID = 1293;
+    const int SecurityXMLSchema = 1186;
+    const int RefOrderIDSource = 1081;
+    const int NTPositionLimit = 971;
+    const int EndAccruedInterestAmt = 920;
+    const int AccruedInterestRate = 158;
+    const int LastCapacity = 29;
+    const int RelationshipRiskLimitCurrency = 1585;
+    const int UnderlyingInstrumentPartySubID = 1063;
+    const int NoFills = 1362;
+    const int NoOrdTypeRules = 1237;
+    const int InstrumentPartyID = 1019;
+    const int MarginRatio = 898;
+    const int RefTagID = 371;
+    const int NoRoutingIDs = 215;
+    const int CouponRate = 223;
+    const int NoApplIDs = 1351;
+    const int DerivativeContractSettlMonth = 1285;
+    const int InstrAttribType = 871;
+    const int Product = 460;
+    const int AllocShares = 80;
+    const int NoQuoteEntries = 295;
+    const int RelationshipRiskWarningLevelName = 1615;
+    const int DefaultCstmApplVerID = 1408;
+    const int DerivativeListMethod = 1320;
+    const int DerivativeSecurityXMLLen = 1282;
+    const int LegDatedDate = 739;
+    const int Nested2PartyIDSource = 758;
+    const int UnderlyingInstrRegistry = 595;
+    const int IssueDate = 225;
+    const int SecurityTradingStatus = 326;
+    const int LegOptAttribute = 613;
+    const int MaxFloor = 111;
+    const int DerivativeLocaleOfIssue = 1260;
+    const int OptPayAmount = 1195;
+    const int UnderlyingStipType = 888;
+    const int Rule80A = 47;
+    const int TotNoStrikes = 422;
+    const int CorporateAction = 292;
+    const int TerminationType = 788;
+    const int LegCouponRate = 615;
+    const int PosMaintAction = 712;
+    const int NoSecurityTypes = 558;
+    const int ComplexEventPriceTimeType = 1489;
+    const int LastSwapPoints = 1071;
+    const int UnderlyingFXRateCalc = 1046;
+    const int ListStatusText = 444;
+    const int OddLot = 575;
+    const int BookingUnit = 590;
+    const int LegAllocAcctIDSource = 674;
+    const int OnBehalfOfSendingTime = 370;
+    const int AllocStatus = 87;
+    const int ReferencePage = 1448;
+    const int DerivativeExerciseStyle = 1299;
+    const int ApplBegSeqNum = 1182;
+    const int CollRptID = 908;
+    const int IncTaxInd = 416;
+    const int NoBidDescriptors = 398;
+    const int LegCouponPaymentDate = 248;
+    const int TotNoPartyList = 1512;
+    const int PartyListResponseType = 1507;
+    const int NoUnderlyingLegSecurityAltID = 1334;
+    const int ReversalIndicator = 700;
+    const int CheckSum = 10;
+    const int TargetSubID = 57;
+    const int PosReqStatus = 729;
+    const int PriorityIndicator = 638;
+    const int ContextPartySubIDType = 1528;
+    const int UnderlyingLegCFICode = 1344;
+    const int DerivativeTimeUnit = 1271;
+    const int NoNested3PartyIDs = 948;
+    const int LiquidityPctHigh = 403;
+    const int MoneyLaunderingStatus = 481;
+    const int Nested4PartySubID = 1412;
+    const int DerivativeSecurityExchange = 1272;
+    const int LotType = 1093;
+    const int ContIntRptID = 977;
+    const int QuoteCondition = 276;
+    const int ComplexEventStartTime = 1495;
+    const int NoComplexEvents = 1483;
+    const int DerivativeContractMultiplier = 1266;
+    const int DerivativeSecurityStatus = 1256;
+    const int DerivativeProductComplex = 1228;
+    const int TriggerSymbol = 1103;
+    const int UnderlyingLocaleOfIssue = 594;
+    const int SendingTime = 52;
+    const int RelationshipRiskMaturityMonthYear = 1602;
+    const int RelatedPartyAltIDSource = 1571;
+    const int ComplexEventStartDate = 1492;
+    const int UnderlyingRestructuringType = 1453;
+    const int LegUnitOfMeasureQty = 1224;
+    const int NoTrdRegTimestamps = 768;
+    const int SendingDate = 51;
+    const int PartyRelationship = 1515;
+    const int TimeToExpiration = 1189;
+    const int LegAllocQty = 673;
+    const int SettlLocation = 166;
+    const int UnderlyingExerciseStyle = 1419;
+    const int CashSettlAgentContactName = 186;
+    const int LegRepurchaseRate = 252;
+    const int ApplResponseID = 1353;
+    const int NoDerivativeInstrAttrib = 1311;
+    const int DerivativeStrikeMultiplier = 1263;
+    const int LegStrikeCurrency = 942;
+    const int SecurityStatusReqID = 324;
+    const int SecureDataLen = 90;
+    const int DiscretionScope = 846;
+    const int OwnerType = 522;
+    const int Shares = 53;
+    const int Yield = 236;
+    const int QuoteRespID = 693;
+    const int RiskMaturityMonthYear = 1549;
+    const int Nested3PartySubID = 953;
+    const int ApplQueueResolution = 814;
+    const int TrdRegTimestampOrigin = 771;
+    const int Nested2PartyRole = 759;
+    const int Nested2PartyID = 757;
+    const int BidSize = 134;
+    const int LegSymbolSfx = 601;
+    const int QuoteResponseLevel = 301;
+    const int BodyLength = 9;
+    const int ListExecInst = 69;
+    const int ExecAckStatus = 1036;
+    const int SettlDate2 = 193;
+    const int NetGrossInd = 430;
+    const int UnderlyingSecurityAltIDSource = 459;
+    const int TestReqID = 112;
+    const int CxlType = 125;
+    const int UnderlyingCreditRating = 256;
+    const int AvgPxPrecision = 74;
+    const int BenchmarkPriceType = 663;
+    const int DeskTypeSource = 1034;
+    const int DiscretionRoundDirection = 844;
+    const int OrigSecondaryTradeID = 1127;
+    const int ReceivedDeptID = 1030;
+    const int MaturityNetMoney = 890;
+    const int BidDescriptorType = 399;
+    const int RiskEncodedSecurityDescLen = 1620;
+    const int RelationshipRiskSymbol = 1589;
+    const int NoRelatedContextPartyIDs = 1575;
+    const int DerivativeInstrumentPartySubID = 1297;
+    const int NetworkStatusResponseType = 937;
+    const int DateOfBirth = 486;
+    const int RelatedContextPartySubIDType = 1581;
+    const int StartStrikePxRange = 1202;
+    const int UndlyInstrumentPartySubID = 1063;
+    const int SecondaryTradeReportRefID = 881;
+    const int UnderlyingCPRegType = 878;
+    const int SignatureLength = 93;
+    const int OrderQty = 38;
+    const int RelationshipRiskWarningLevelPercent = 1614;
+    const int OriginalNotionalPercentageOutstanding = 1452;
+    const int UnderlyingTimeUnit = 1000;
+    const int EncodedHeadlineLen = 358;
+    const int NoRegistDtls = 473;
+    const int StrategyParameterValue = 960;
+    const int RiskSecurityDesc = 1556;
+    const int NoInstrumentParties = 1018;
+    const int QuoteType = 537;
+    const int NoRiskSecurityAltID = 1540;
+    const int NoStrategyParameters = 957;
+    const int IndividualAllocRejCode = 776;
+    const int DiscretionInst = 388;
+    const int RiskSecurityAltID = 1541;
+    const int TargetPartyRole = 1464;
+    const int CrossPrioritization = 550;
+    const int EncodedListStatusText = 446;
+    const int IOIOthSvc = 24;
+    const int LegIssueDate = 249;
+    const int MDReqRejReason = 281;
+    const int RelationshipRiskPutOrCall = 1606;
+    const int ApplReqType = 1347;
+    const int Country = 421;
+    const int UnderlyingLegSecurityIDSource = 1333;
+    const int FlexProductEligibilityIndicator = 1242;
+    const int AggressorIndicator = 1057;
+    const int ExecPriceAdjustment = 485;
+    const int BusinessRejectReason = 380;
+    const int TradeDate = 75;
+    const int UnderlyingPutOrCall = 315;
+    const int RelationshipRiskSymbolSfx = 1590;
+    const int UnderlyingInstrumentPartyRole = 1061;
+    const int DerivativePositionLimit = 1273;
+    const int TierCode = 994;
+    const int BookingType = 775;
+    const int StipulationValue = 234;
+    const int SettlCurrBidFxRate = 656;
+#endif //FIX_FIELDNUMBERS_H

+ 259 - 0
api/fix/include/cfunc.h

@@ -0,0 +1,259 @@
+#ifndef _CFUNC_H_
+#define _CFUNC_H_
+
+#include "FixValue.h"
+#include "FixValueNumber.h"
+#ifdef _cplusplus
+extern "C" {
+#endif
+
+typedef unsigned int uint;
+typedef signed char schar;
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef long long int64;
+typedef unsigned long long uint64;
+typedef struct SessionID SessionID;
+typedef struct SessionSettings SessionSettings;
+typedef struct Dictionary Dictionary;
+typedef struct Message Message;
+typedef struct AppTradeClient AppTradeClient;
+
+typedef struct IApplication {
+  /// Notification of a session begin created
+  void (*onCreate)(AppTradeClient *, SessionID *);
+  /// Notification of a session successfully logging on
+  void (*onLogon)(AppTradeClient *, SessionID *);
+  /// Notification of a session logging off or disconnecting
+  void (*onLogout)(AppTradeClient *, SessionID *);
+  /// Notification of admin message being sent to target
+  void (*toAdmin)(AppTradeClient *, Message *, SessionID *);
+  /// Notification of app message being sent to target
+  void (*toApp)(AppTradeClient *, Message *, SessionID *);
+  /// Notification of admin message being received from target
+  void (*fromAdmin)(AppTradeClient *, const Message *, SessionID *);
+  /// Notification of app message being received from target
+  void (*fromApp)(AppTradeClient *, const Message *, SessionID *);
+  //为了go的调用方便,封装了这样的一个接口
+  void (*defaultCallBack) (void *pfunc, AppTradeClient *, const Message *, SessionID *);
+  void *onCreateCB;
+  void *onLogonCB;
+  void *onLogoutCB;
+  void *toAdminCB;
+  void *fromAdminCB;
+  void *fromAppCB;
+  void *toAppCB;
+} IApplication;
+
+//预留一点空间,现在测试的情况是最大20
+#define	MAX_BID_ASK_COUNT	25
+typedef struct TickFull
+{
+	double	AskPrice[MAX_BID_ASK_COUNT];
+	double	BidPrice[MAX_BID_ASK_COUNT];
+	double	AskVolume[MAX_BID_ASK_COUNT];
+	double	BidVolume[MAX_BID_ASK_COUNT];
+    char	Symbol[8];
+	int	    Time;
+	int     Millisecond;
+	int     AskCount;
+    int     BidCount;
+	double  LastPx ;
+	double  LastShares ;
+} TickFull;
+
+typedef struct StockInfo
+{
+	char  Symbol[15];
+	int   Position ;
+	char  SecurityExchange[10];
+}StockInfo;
+
+typedef struct AccountInfo
+{
+	double FB;
+	double FAV;
+	double MV;
+	double F;
+	double SV;
+	double FBF;
+}AccountInfo;
+typedef struct OrderInfo
+{
+    char OrderID[32];//Unique identifier for Order as assigned by exchange
+    char SecondaryExecID[32];
+    char ClOrdID[32] ;//Client side order identifier
+    char OrigClOrdID[32];
+    char OrdStatusReqID[32];
+    char ExecID[32] ; //Execution ID for this fill.
+    char Account[16];//Account ID of the current logged in LMAX member
+	char Symbol[16];
+    char SecurityID[8];
+	double AvgPx ;//Calculated average price of all fills on this order.
+	double CumQty;//Contains the cumulated traded quantity for the order through its life.
+	double LastPx ;//Price of this fill 
+	double LastQty;//
+	double OrderQty ;//Number of contracts submitted by the client
+    double LeavesQty ;//成交手数
+    double Price ;//Price per contract
+    char *Text;
+	int OrdRejReason;
+	int TransactTime ;//Time of execution/order creation
+	int Millisecond ;
+    char SecurityIDSource[2];	
+	char TimeInForce ;//Specifies how long the order remains in effect.   0=Good for Day (GFD) 3=Immediate or Cancel (IOC) 4=Fill or Kill (FOK)Limit Orders support TimeInForce values of IOC, FOK, and GFD. Market Orders support TimeInForce values of IOC, FOK.
+    char OrdType;
+    char OrdStatus ;
+	char Side ;//1=BUY ,2=SELL
+    char ExecType ;//Describes the type of execution report. Same possible values as Order Status.   0=NEW 1=PARTIALLY FILL 2=FILL 4=CANCELED 5=REPLACE 8=REJECTED 
+} OrderInfo;
+
+//SessionSettings api
+SessionSettings * NewSessionSettings(const char *file);
+void FreeSessionSettings(SessionSettings *obj);
+Dictionary* SessionSettingsGet(SessionSettings *ss, SessionID *sid);
+
+//Dictionary api
+int DictionaryHas(Dictionary *obj, const char *find);
+const char * DictionaryGetString(Dictionary *obj, const char *find);
+void FreeDictionary(Dictionary *dict);
+
+//message api
+Message * WarpMessage(void *msg);
+void MessageSetField(Message *msg, int field, const char *value);
+int MessageSend(Message *msg);
+char * MessageToStr(const Message *msg);
+void Free(void *);
+const Message * WarpConstMessage(const void *msg);
+void PrintHello(char *data[], int n);
+//SessionID api
+SessionID * WarpSessionID(const void *sid);
+
+IApplication * NewDefaultIApplication();
+void IApplicationSetCB(void *);
+IApplication * NewCBIApplication(void *cb, void *onCreate, void *onLogon, void *onLogout, void *toAdmin, void *toApp, void *fromAdmin, void *fromApp);
+
+IApplication * NewIApplication(void *onCreate, void *onLogon, void *onLogout, void *toAdmin, void *toApp, void *fromAdmin, void *fromApp);
+void FreeIApplication(IApplication *app);
+//application api
+AppTradeClient * NewAppTradeClient(IApplication *app, SessionSettings *setting);
+void FreeAppTradeClient(AppTradeClient * app);
+void AppTradeClientStart(AppTradeClient * app);
+void AppTradeClientStop(AppTradeClient * app);
+int AppTradeClientRun(AppTradeClient * app);
+
+SessionID *AppTradeClientSessionID(AppTradeClient * app);
+const char *AppTradeClientSenderCompID(AppTradeClient * app);
+const char *AppTradeClientTargetCompID(AppTradeClient * app);
+const char *AppTradeClientClOrdID(AppTradeClient * app);
+
+int GetAccountInfo(const Message * msg, AccountInfo* accountinfo,int *bLastRptRequested);
+int GetFieldValue(const Message * msg, int key,char * value);
+int GetMarketData(const Message *msg, TickFull *tick);
+int GetOrderInfo(const Message * msg, OrderInfo * orderinfo);
+int GetAccountStockInfo(const Message * msg, StockInfo * stockinfo ,int *bLastRptRequested);
+int GetMsgType(const Message * msg ,char * cTypeValue);
+
+const char * AppTradeClientOrigClOrdID(AppTradeClient * app, const Message *msg);
+
+
+int AppTradeClientSendOrder(AppTradeClient * trade, const char * aSymbol,const char *clordid, const char side, const char orderType, 
+	                        double qty, double price, const char *account); //,const char * secondaryClOrdID,const char * onBehalfOfCompID
+
+
+int AppTradeClientTradeCaptureReportRequest(AppTradeClient * trade, const char *reqId, int reqType, char subReqType);
+int AppTradeClientOrderStatus(AppTradeClient * trade,
+							const char *aSymbol,
+							const char *clordId, 
+							//const char *ordStatusReqId,
+							const char side,
+							//const char * account,
+							//const char * securitytype,
+							const char * orderid
+							);
+
+int AppTradeClientCancelOrder(AppTradeClient * trade,
+							const char *aSymbol,
+							const char *origClOrdID, 
+							const char *clordid, 
+							const char side,
+							//double qty,
+							const char * account,
+							//const char * securitytype,
+							const char * orderid );
+
+
+int AppTradeCilentOrderCancelReplace(AppTradeClient * trade, 
+									const char *aSymbol,
+									const char * origclordid ,
+									const char *clordid, 
+									const char aHandlInst,
+									const char side, 
+									const char orderType, 
+									double price,
+									double qty ,
+									const char * account,
+									const char * securitytype,
+									const char * orderid 
+									);
+
+int  AppTradeClientCollectiveOrder(AppTradeClient * trade ,
+							const char *clordId, 
+							const char  aHandlInst,
+							const char  ordertype,
+							const char *sideStr,
+							const char *symbolStr,
+							const char *orderQtyStr,
+							const char *priceStr,
+							const char *securityExchangeStr,
+							const char *currencyStr,
+							const char *account,
+							const char *securityTypeStr,
+							const char *accountStr,
+							int   entrustNum 
+							);
+
+int  AppTradeClientCollectiveOrderCancel(AppTradeClient * trade,
+							const char *clordId, 
+							int   entrustNum ,
+							const char *entrustNoStr,
+							const char *securityExchangeStr,
+							const char *currencyStr,
+							const char *account
+							);
+
+int  AppTradeClientCollectiveOrderStatus(AppTradeClient * trade,
+							int   entrustNum ,
+							const char *entrustNoStr,
+							const char *account
+							);
+int  AppTradeClientBatchOrder(AppTradeClient * trade,
+							const char *clordId, 
+							const char  aHandlInst,
+							const char  ordertype,
+							const char **symbolStr,
+							const char **sideStr,
+							const char **orderQtyStr,
+							const char **priceStr,
+							const char **securityExchangeStr,
+							const char **currencyStr,
+							const char **securityTypeStr,
+							const char *account,
+							int   num
+							);
+
+int  AppTradeClientRequestForPositions(AppTradeClient * trade,
+							const char *posReqID, 
+							int         posReqType,
+							const char *account,
+							int         accountType
+							);
+
+int  AppTradeClientMarketData(AppTradeClient * trade, const char *bookId,const char subscriptionRequestType);
+
+
+#ifdef _cplusplus
+}
+#endif
+
+#endif

BIN
api/fix/lib/cfix.lib


BIN
api/fix/lib000000/libcfix.so


BIN
api/fix/lib000000/libsignalsync.so


BIN
api/fix/lib000000/quickfix.lib


+ 2 - 0
api/fix/log/FIX.4.4-DISANBO-XW-MKD.event.current.log

@@ -0,0 +1,2 @@
+20160215-05:33:30.711 : Created session
+20160215-05:33:30.717 : Connecting to 127.0.0.1 on port 8882

+ 1 - 0
api/fix/log/FIX.4.4-DISANBO-XW-MKD.messages.current.log

@@ -0,0 +1 @@
+20160215-05:33:30.736 : 8=FIX.4.49=10135=A34=149=DISANBO52=20160215-05:33:30.72656=XW-MKD98=0108=30141=Y553=disanbo_fix554=1xd4Z110=020

+ 0 - 0
api/fix/log/GLOBAL.event.current.log


+ 0 - 0
api/fix/log/GLOBAL.messages.current.log


+ 28 - 0
api/fix/marketdata/main.go

@@ -0,0 +1,28 @@
+package main
+
+import "tickserver/api/fix"
+import "fmt"
+import "os"
+
+func main() {
+    path := os.Getenv("GOPATH") + "/bin/data/md.cfg"
+    fmt.Println(path)
+    ss , err := fix.NewSessionSettings(path)
+    if err != nil {
+        panic(err)
+    }
+    sourdatach := make(chan *fix.TickFull)
+    fix.InitBroadcast(sourdatach)
+    app := fix.NewMarketInfoApp(sourdatach)
+    trade, err := fix.NewAppTradeClient(app, ss)
+    if err != nil {
+        panic(err)
+    }
+    fmt.Println("run start")
+    trade.Start()
+    trade.Run()
+    fmt.Println("run end")
+    trade.Stop()
+    trade.Free()
+    fmt.Println("stop")
+}

BIN
api/fix/msvcp120.dll


BIN
api/fix/msvcr120.dll


+ 59 - 0
api/fix/order/main.go

@@ -0,0 +1,59 @@
+package main
+
+import "tickserver/api/fix"
+import "fmt"
+import "os"
+import "time"
+
+func main() {
+    path := os.Getenv("GOPATH") + "/bin/data/trade.cfg"
+    fmt.Println(path)
+    ss , err := fix.NewSessionSettings(path)
+    if err != nil {
+        panic(err)
+    }
+    app := fix.NewOrderApp()
+    wait := make(chan int)
+    go func() {
+        app.WaitReady()
+        req := &fix.OrderRequest{}
+        req.BookID = "4001"
+        req.ClOrdID = app.GetTC().ClOrdID()
+        req.Side = fix.Side_SELL
+        req.OrderType = fix.OrdType_LIMIT
+        req.Qty = 1.0
+        req.Price = 1.3174
+        req.TimeInForce = fix.TimeInForce_GOOD_TILL_CANCEL
+        app.SendOrder(req, func (event interface{}) {
+            switch event.(type) {
+                case *fix.OrderStatus : {
+                    data := event.(*fix.OrderStatus)
+                    fmt.Println("send", data)
+                }
+            }
+        })
+
+        time.Sleep(10 * time.Second)
+        app.CancleOrder(req.ClOrdID, 0.5, func (event interface{}) {
+            switch event.(type) {
+                case *fix.OrderStatus : {
+                    data := event.(*fix.OrderStatus)
+                    fmt.Println("cancle", data)
+                }
+            }
+        })
+        wait <- 1
+    }()
+    trade, err := fix.NewAppTradeClient(app, ss)
+    if err != nil {
+        panic(err)
+    }
+    fmt.Println("run start")
+    trade.Start()
+    trade.Run()
+    <-wait
+    fmt.Println("run end")
+    trade.Stop()
+    trade.Free()
+    fmt.Println("stop")
+}

+ 1 - 0
api/fix/somewhere/FIX.4.4-DISANBO-XW-MKD.body

@@ -0,0 +1 @@
+8=FIX.4.49=10135=A34=149=DISANBO52=20160215-05:33:30.72656=XW-MKD98=0108=30141=Y553=disanbo_fix554=1xd4Z110=020

+ 1 - 0
api/fix/somewhere/FIX.4.4-DISANBO-XW-MKD.header

@@ -0,0 +1 @@
+1,0,124 

+ 1 - 0
api/fix/somewhere/FIX.4.4-DISANBO-XW-MKD.seqnums

@@ -0,0 +1 @@
+0000000002 : 0000000001

+ 1 - 0
api/fix/somewhere/FIX.4.4-DISANBO-XW-MKD.session

@@ -0,0 +1 @@
+20160215-05:33:30

+ 1 - 0
api/fix/src/AUTHORS

@@ -0,0 +1 @@
+Oren Miller <oren@quickfixengine.org>

+ 170 - 0
api/fix/src/CCall/Application.cpp

@@ -0,0 +1,170 @@
+/* -*- C++ -*- */
+
+/****************************************************************************
+** Copyright (c) quickfixengine.org  All rights reserved.
+**
+** This file is part of the QuickFIX FIX Engine
+**
+** This file may be distributed under the terms of the quickfixengine.org
+** license as defined by quickfixengine.org and appearing in the file
+** LICENSE included in the packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.quickfixengine.org/LICENSE for licensing information.
+**
+** Contact ask@quickfixengine.org if any conditions of this licensing are
+** not clear to you.
+**
+****************************************************************************/
+
+#ifdef _MSC_VER
+#pragma warning( disable : 4503 4355 4786 )
+#endif
+
+#include "Application.h"
+#include "quickfix/Session.h"
+#include <iostream>
+#include "ufx_security_interface.h"
+void Application::sendMsg(int id, SessionID *sid, Message *msg, const Message *constmsg) {
+    //std::cout << SignalSyncIsStart(sync) << std::endl;
+    if (SignalSyncIsStart(sync) == 0) {
+        return;
+    }
+    callbacks[id].app = this;
+    callbacks[id].id = id;
+    callbacks[id].sid = sid;
+    callbacks[id].msg = msg;
+    callbacks[id].constmsg = constmsg;
+    try {
+        SignalSyncSend(sync, id, &callbacks[id]);
+        SignalSyncDone(sync, id);
+    } catch (std::exception &e) {
+        std::cout << e.what() << std::endl;
+    }
+    //std::cout << "msg end: " << id << std::endl;
+}
+
+void Application::onLogon( const FIX::SessionID& sessionID )
+{
+	SessionID *sid = WarpSessionID(&sessionID);
+    sendMsg(1, sid, NULL, NULL);
+}
+
+void Application::onLogout( const FIX::SessionID& sessionID )
+{
+	SessionID *sid = WarpSessionID(&sessionID);
+    sendMsg(2, sid, NULL, NULL);
+}
+
+void Application::onCreate( const FIX::SessionID& sessionID) {
+    //std::cout << "Application::onCreate" << std::endl;
+	sessionId = WarpSessionID(&sessionID);
+}
+
+void Application::toAdmin( FIX::Message& message, const FIX::SessionID& sessionID) {
+	const FIX::Dictionary& session_settings = settings.get(sessionID);
+	senderCompID = session_settings.getString("SenderCompID");
+	targetCompID = session_settings.getString("TargetCompID");
+	if (FIX::MsgType_Logon == message.getHeader().getField(FIX::FIELD::MsgType)) {
+		message.setField(FIX::EncryptMethod(0));
+		message.setField(FIX::HeartBtInt(30));
+		FIX::Username username;
+		FIX::Password password;
+		if (session_settings.has("Username")) {
+			username = session_settings.getString("Username");
+		}
+		if (session_settings.has("Password")) {
+			password = session_settings.getString("Password");
+		}
+
+
+		message.setField(FIX::Password(password));
+		message.setField(FIX::Username(username));
+		message.setField(FIX::ResetSeqNumFlag(FIX::ResetSeqNumFlag_NO));
+	}
+    std::cout << message << std::endl;
+	SessionID *sid = WarpSessionID(&sessionID);
+	Message *msg = WarpMessage(&message);
+    std::cout << MessageToStr(msg) << std::endl;
+    
+    sendMsg(4, sid, msg, NULL);
+	
+}
+
+void Application::fromAdmin( const FIX::Message& message, const FIX::SessionID& sessionID)
+  throw( FIX::FieldNotFound, FIX::IncorrectDataFormat, FIX::IncorrectTagValue, FIX::RejectLogon ) {
+	  SessionID *sid = WarpSessionID(&sessionID);
+	  const Message *msg = WarpConstMessage(&message);
+      sendMsg(5, sid, NULL, msg);
+}
+
+void Application::fromApp(const FIX::Message& message, const FIX::SessionID& sessionID)
+throw( FIX::FieldNotFound, FIX::IncorrectDataFormat, FIX::IncorrectTagValue, FIX::UnsupportedMessageType ) {
+	SessionID *sid = WarpSessionID(&sessionID);
+	const Message *msg = WarpConstMessage(&message);
+    sendMsg(6, sid, NULL, msg);
+}
+
+void Application::toApp( FIX::Message& message, const FIX::SessionID& sessionID ) throw( FIX::DoNotSend )
+{
+    std::cout <<"toApp:" << message << std::endl;
+    try
+    {
+        FIX::PossDupFlag possDupFlag;
+        message.getHeader().getField( possDupFlag );
+        if ( possDupFlag ) throw FIX::DoNotSend();
+        SessionID *sid = WarpSessionID(&sessionID);
+        Message *msg = WarpMessage(&message);
+        sendMsg(7, sid, msg, NULL);
+    } catch (FIX::FieldNotFound&) {
+
+    }
+}
+
+static void process(void *data) {
+    MsgCallBack *cb = (MsgCallBack *)data;
+    //std::cout << "call: " << cb->id << std::endl;
+    if (cb->id == 1) {
+        cb->app->IApp->onLogon(cb->app->Trade, cb->sid);
+    } else if (cb->id == 2) {
+        cb->app->IApp->onLogout(cb->app->Trade, cb->sid);
+    } else if (cb->id == 4) {
+        if (cb->msg == NULL) {
+            std::cout << "message error: " << cb->id << std::endl;
+            return;
+        }
+        cb->app->IApp->toAdmin(cb->app->Trade, cb->msg, cb->sid);
+    } else if (cb->id == 5) {
+        if (cb->constmsg == NULL) {
+            std::cout << "message error: " << cb->id << std::endl;
+            return;
+        }
+        cb->app->IApp->fromAdmin(cb->app->Trade, cb->constmsg, cb->sid);
+    } else if (cb->id == 6) {
+        if (cb->constmsg == NULL) {
+            std::cout << "message error: " << cb->id << std::endl;
+            return;
+        }
+        cb->app->IApp->fromApp(cb->app->Trade, cb->constmsg, cb->sid);
+    } else if (cb->id == 7) {
+        if (cb->msg == NULL) {
+            std::cout << "message error: " << cb->id << std::endl;
+            return;
+        }
+        cb->app->IApp->toApp(cb->app->Trade, cb->msg, cb->sid);
+    }
+    //std::cout << "call end: " << cb->id << std::endl;
+}
+
+int Application::run() {
+    std::cout << "sync start" << std::endl;
+    SignalSyncStart(sync);
+    while (true) {
+        int ret = SignalSyncProcess(sync, process);
+        if (ret != 1) {
+            return ret;
+        }
+    }
+}

+ 166 - 0
api/fix/src/CCall/Application.h

@@ -0,0 +1,166 @@
+/* -*- C++ -*- */
+
+/****************************************************************************
+** Copyright (c) quickfixengine.org  All rights reserved.
+**
+** This file is part of the QuickFIX FIX Engine
+**
+** This file may be distributed under the terms of the quickfixengine.org
+** license as defined by quickfixengine.org and appearing in the file
+** LICENSE included in the packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.quickfixengine.org/LICENSE for licensing information.
+**
+** Contact ask@quickfixengine.org if any conditions of this licensing are
+** not clear to you.
+**
+****************************************************************************/
+
+#ifndef TRADECLIENT_APPLICATION_H
+#define TRADECLIENT_APPLICATION_H
+
+#include "quickfix/Application.h"
+#include "quickfix/MessageCracker.h"
+#include "quickfix/Values.h"
+#include "quickfix/Mutex.h"
+#include "quickfix/FileStore.h"
+#include "quickfix/SocketInitiator.h"
+
+#include "quickfix/FileLog.h"
+
+#define _cplusplus
+#include "cfunc.h"
+#include "sync.h"
+#include <time.h>
+#include <sstream>
+#include <queue>
+
+#include "HsMessageCracker.h"
+
+class Application;
+class ApplicationEx;
+struct MsgCallBack 
+{
+    Application *app;
+    int id;
+    SessionID *sid;
+    Message *msg;
+    const Message *constmsg;
+};
+
+struct MsgCallBackEx 
+{
+    ApplicationEx *app;
+    int id;
+    SessionID *sid;
+    Message *msg;
+    const Message *constmsg;
+};
+
+class Application : public FIX::Application , FIX::MessageCracker
+{
+public:
+  IApplication *IApp;
+  AppTradeClient *Trade;
+  MsgCallBack callbacks[8];
+
+  
+  int run();
+  Application(AppTradeClient *trade, IApplication *app, const FIX::SessionSettings& _settings): settings(_settings), storeFactory(_settings),logFactory(settings) {
+      std::cout << "create Application" << std::endl;
+	  IApp = app;
+	  Trade = trade;
+	  time_t t;
+	  time(&t);
+	  orderLocalId = int64(t) << 32;
+	  //orderLocalId = 1 ;
+      sync = NewSignalSync(7);
+	  
+  }
+  void sendMsg(int id, SessionID *sid, Message *msg, const Message *constmsg);
+  virtual ~Application() {
+	  delete initiator;
+      FreeSignalSync(sync);
+  };
+
+  void init() {
+	 
+
+      std::cout << "init SocketInitiator start" << std::endl;
+      initiator = new FIX::SocketInitiator(*this, storeFactory, settings,logFactory);
+      std::cout << "init SocketInitiator end" << std::endl;
+  }
+
+  void start() {
+      initiator->start();
+      std::cout << "start SocketInitiator " << std::endl;
+  }
+
+  void stop() {
+      initiator->stop();
+  }
+
+  const std::string & getSenderCompID() {
+      return senderCompID;
+  }
+
+  const std::string & getTargetCompID() {
+      return senderCompID;
+  }
+
+  SessionID * getSessionID() {
+      return sessionId;
+  }
+
+ const std::string & getOrderId() {
+	  /*std::stringstream stream;
+	  stream << std::dec << orderLocalId;
+      orderLocalId++;
+	  orderId = stream.str();
+	  */
+
+	  orderLocalId++;
+	char timebuf[256] = { 0 };
+#ifdef WIN32
+	_i64toa(orderLocalId, timebuf, 10);
+#else
+	sprintf(timebuf, "%lld", orderLocalId);
+#endif
+	std::string str = timebuf;
+	 orderId = str;
+
+	  return orderId;
+ }
+
+private:
+  void onCreate( const FIX::SessionID& );
+  void onLogon( const FIX::SessionID& sessionID );
+  void onLogout( const FIX::SessionID& sessionID );
+  void toAdmin( FIX::Message&, const FIX::SessionID& );
+  
+  void toApp( FIX::Message&, const FIX::SessionID& )
+  throw( FIX::DoNotSend );
+  void fromAdmin( const FIX::Message&, const FIX::SessionID& )
+  throw( FIX::FieldNotFound, FIX::IncorrectDataFormat, FIX::IncorrectTagValue, FIX::RejectLogon );
+  void fromApp( const FIX::Message& message, const FIX::SessionID& sessionID )
+  throw( FIX::FieldNotFound, FIX::IncorrectDataFormat, FIX::IncorrectTagValue, FIX::UnsupportedMessageType );
+  const FIX::SessionSettings& settings;
+  SessionID *sessionId;
+  std::string senderCompID;
+  std::string targetCompID;
+  std::string orderId;
+  FIX::FileStoreFactory storeFactory;
+  FIX::SocketInitiator *initiator;
+  int64 orderLocalId;
+  SignalSync *sync;
+
+  FIX::FileLogFactory logFactory;
+};
+
+
+
+
+#endif

BIN
api/fix/src/CCall/Application.o


+ 62 - 0
api/fix/src/CCall/CCall.def

@@ -0,0 +1,62 @@
+EXPORTS
+
+NewSessionSettings
+FreeSessionSettings
+SessionSettingsGet
+DictionaryHas
+DictionaryGetString
+FreeDictionary
+
+WarpMessage
+MessageSetField
+MessageSend
+MessageToStr
+
+
+WarpConstMessage
+WarpSessionID
+PrintHello
+NewDefaultIApplication
+FreeIApplication
+NewIApplication
+NewCBIApplication
+IApplicationSetCB
+
+NewAppTradeClient
+FreeAppTradeClient
+AppTradeClientStart
+AppTradeClientStop
+AppTradeClientRun
+Free
+
+AppTradeClientSessionID
+AppTradeClientSenderCompID
+AppTradeClientTargetCompID
+AppTradeClientClOrdID
+
+
+GetFieldValue
+GetMarketData
+GetAccountStockInfo
+GetAccountInfo
+GetOrderInfo
+GetMsgType
+
+AppTradeClientOrigClOrdID
+AppTradeClientSendOrder
+AppTradeClientTradeCaptureReportRequest
+
+AppTradeClientOrderStatus
+AppTradeClientCancelOrder
+
+AppTradeCilentOrderCancelReplace
+
+AppTradeClientCollectiveOrder
+AppTradeClientCollectiveOrderCancel
+AppTradeClientCollectiveOrderStatus
+AppTradeClientBatchOrder
+
+
+AppTradeClientRequestForPositions
+AppTradeClientMarketData
+

+ 258 - 0
api/fix/src/CCall/CCall.vcxproj

@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Itanium">
+      <Configuration>Debug</Configuration>
+      <Platform>Itanium</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Itanium">
+      <Configuration>Release</Configuration>
+      <Platform>Itanium</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{33297C73-A579-4E4D-B04A-48993414D2BB}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>CCall</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <OutDir>$(SolutionDir)lib\debug\</OutDir>
+    <IntDir>debug\vs10\</IntDir>
+    <LibraryPath>..\libsecurity;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>D:\dev\ea_sign\go\tester\bin</OutDir>
+    <IntDir>debug\vs10\</IntDir>
+    <TargetName>cfix</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
+    <TargetName>cfix</TargetName>
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <TargetName>cfix</TargetName>
+    <LibraryPath>..\libsecurity;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);</LibraryPath>
+    <TargetName>cfix</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
+    <LinkIncremental>false</LinkIncremental>
+    <LibraryPath>..\libsecurity;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)\include;$(SolutionDir)\sync;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(SolutionDir)\lib\debug%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>ufx_security.lib;quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;sync.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ModuleDefinitionFile>CCall.def</ModuleDefinitionFile>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)\include;$(SolutionDir)\sync;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(SolutionDir)\lib\debug;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;sync.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ModuleDefinitionFile>CCall.def</ModuleDefinitionFile>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)\include;$(SolutionDir)\sync;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>$(SolutionDir)\lib\debug;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;sync.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ModuleDefinitionFile>CCall.def</ModuleDefinitionFile>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)\include;$(SolutionDir)\sync;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalLibraryDirectories>$(SolutionDir)\lib;$(SolutionDir)\lib\release;$(SolutionDir)\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>ufx_security.lib;quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;sync.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ModuleDefinitionFile>CCall.def</ModuleDefinitionFile>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)\include;$(SolutionDir)\sync;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>quickfix.lib;sync.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ModuleDefinitionFile>CCall.def</ModuleDefinitionFile>
+      <AdditionalLibraryDirectories>E:\XW6\cfix - bak\fix\lib; $(SolutionDir)\lib;$(SolutionDir)\lib\release;$(SolutionDir)\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(SolutionDir)\include;$(SolutionDir)\sync;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>quickfix.lib;sync.lib;</AdditionalDependencies>
+      <ModuleDefinitionFile>CCall.def</ModuleDefinitionFile>
+      <AdditionalLibraryDirectories>$(SolutionDir)\lib;</AdditionalLibraryDirectories>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="Application.h" />
+    <ClInclude Include="cfunc.h" />
+    <ClInclude Include="FixValue.h" />
+    <ClInclude Include="FixValueNumber.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="Application.cpp" />
+    <ClCompile Include="cfunc.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="CCall.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 44 - 0
api/fix/src/CCall/CCall.vcxproj.filters

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="cfunc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Application.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="FixValueNumber.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="FixValue.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="cfunc.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Application.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="CCall.def">
+      <Filter>Resource Files</Filter>
+    </None>
+  </ItemGroup>
+</Project>

+ 3 - 0
api/fix/src/CCall/CCall.vcxproj.user

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+</Project>

+ 4520 - 0
api/fix/src/CCall/FixValue.h

@@ -0,0 +1,4520 @@
+#ifndef __FIX_VALUES_H__
+#define __FIX_VALUES_H__
+
+  const int DeliveryForm_BOOKENTRY = 1;
+  const int DeliveryForm_BEARER = 2;
+  const int DeliveryForm_BOOK_ENTRY = 1;
+  const int ExecRestatementReason_GTRENEW = 1;
+  const int ExecRestatementReason_WAREHOUSE_RECAP = 10;
+  const int ExecRestatementReason_CANCELEDNOTBEST = 9;
+  const int ExecRestatementReason_CANCEL_ON_SYSTEM_FAILURE = 7;
+  const int ExecRestatementReason_CXLTRADINGHALT = 6;
+  const int ExecRestatementReason_PARTIAL_DECLINE_OF_ORDERQTY = 5;
+  const int ExecRestatementReason_GT_CORPORATE_ACTION = 0;
+  const int ExecRestatementReason_PEG_REFRESH = 11;
+  const int ExecRestatementReason_VERBAL = 2;
+  const int ExecRestatementReason_CANCELED_NOT_BEST = 9;
+  const int ExecRestatementReason_CANCEL_ON_TRADING_HALT = 6;
+  const int ExecRestatementReason_REPX = 3;
+  const int ExecRestatementReason_MRKTOPTION = 8;
+  const int ExecRestatementReason_VERBAL_CHANGE = 2;
+  const int ExecRestatementReason_PARTDEC = 5;
+  const int ExecRestatementReason_CXLSYSTEMFAILURE = 7;
+  const int ExecRestatementReason_GTCORPACT = 0;
+  const int ExecRestatementReason_OTHER = 99;
+  const int ExecRestatementReason_BROKER_OPTION = 4;
+  const int ExecRestatementReason_WAREHOUSERECAP = 10;
+  const int ExecRestatementReason_BRKROPT = 4;
+  const int ExecRestatementReason_REPRICING_OF_ORDER = 3;
+  const int ExecRestatementReason_MARKET = 8;
+  const int ExecRestatementReason_GT_RENEWAL = 1;
+  const int AllocIntermedReqType_PENDING_RELEASE = 2;
+  const int AllocIntermedReqType_PENDING_REVERSAL = 3;
+  const int AllocIntermedReqType_ACCOUNTLEVELREJECT = 6;
+  const int AllocIntermedReqType_PENDINGACCEPT = 1;
+  const int AllocIntermedReqType_BLOCK_LEVEL_REJECT = 5;
+  const int AllocIntermedReqType_ACCOUNT_LEVEL_REJECT = 6;
+  const int AllocIntermedReqType_BLOCKLEVELREJECT = 5;
+  const int AllocIntermedReqType_PENDING_ACCEPT = 1;
+  const int AllocIntermedReqType_PENDINGREVERSAL = 3;
+  const int AllocIntermedReqType_PENDINGRELEASE = 2;
+  const int AllocIntermedReqType_ACCEPT = 4;
+  const int SecurityListTypeSource_GICS = 3;
+  const int SecurityListTypeSource_NAICS = 2;
+  const int SecurityListTypeSource_ICB = 1;
+  const int CollInquiryQualifier_PARTIALLY_ASSIGNED = 5;
+  const int CollInquiryQualifier_OUTSTANDING_TRADES = 7;
+  const int CollInquiryQualifier_SUBSTITUTIONELIGIBLE = 3;
+  const int CollInquiryQualifier_TRADE_DATE = 0;
+  const int CollInquiryQualifier_FULLYASSIGNED = 6;
+  const int CollInquiryQualifier_SUBSTITUTION_ELIGIBLE = 3;
+  const int CollInquiryQualifier_FULLY_ASSIGNED = 6;
+  const int CollInquiryQualifier_NOTASSIGNED = 4;
+  const int CollInquiryQualifier_GCINSTRUMENT = 1;
+  const int CollInquiryQualifier_NOT_ASSIGNED = 4;
+  const int CollInquiryQualifier_COLLATERAL_INSTRUMENT = 2;
+  const int CollInquiryQualifier_OUTSTANDINGTRADES = 7;
+  const int CollInquiryQualifier_TRADEDATE = 0;
+  const int CollInquiryQualifier_GC_INSTRUMENT = 1;
+  const int CollInquiryQualifier_PARTIALLYASSIGNED = 5;
+  const int CollInquiryQualifier_COLLATERALINSTRUMENT = 2;
+  const int ContingencyType_ONE_UPDATES_THE_OTHER_4 = 4;
+  const int ContingencyType_ONE_TRIGGERS_THE_OTHER = 2;
+  const int ContingencyType_ONE_CANCELS_THE_OTHER = 1;
+  const int ContingencyType_ONE_UPDATES_THE_OTHER_3 = 3;
+  const char EmailType_NEW = '0';
+  const char EmailType_REPLY = '1';
+  const char EmailType_ADMIN_REPLY = '2';
+  const char EmailType_ADMINREPLY = '2';
+  const char IOIQltyInd_MEDIUM = 'M';
+  const char IOIQltyInd_HIGH = 'H';
+  const char IOIQltyInd_LOW = 'L';
+  const int MultiLegRptTypeReq_REPORT_BY_INSTRUMENT_LEGS_BELONGING_TO_THE_MULTILEG_SECURITY_ONLY = 2;
+  const int MultiLegRptTypeReq_REPORT_BY_MULTILEG_SECURITY_AND_BY_INSTRUMENT_LEGS_BELONGING_TO_THE_MULTILEG_SECURITY = 1;
+  const int MultiLegRptTypeReq_REPORT_BY_MULITLEG_SECURITY_ONLY = 0;
+  const int AccountType_ACCOUNTCUSTOMER = 1;
+  const int AccountType_HOUSE_TRADER = 3;
+  const int AccountType_ACCOUNT_IS_CARRIED_ON_CUSTOMER_SIDE_OF_THE_BOOKS = 1;
+  const int AccountType_ACCOUNT_IS_CARRIED_ON_NON_CUSTOMER_SIDE_OF_BOOKS = 2;
+  const int AccountType_FLOOR_TRADER = 4;
+  const int AccountType_JOINT_BACK_OFFICE_ACCOUNT = 8;
+  const int AccountType_HOUSETRADER = 3;
+  const int AccountType_FLOORTRADER = 4;
+  const int AccountType_ACCOUNTNONCUSTOMERCROSS = 6;
+  const int AccountType_ACCOUNT_IS_CARRIED_ON_NON_CUSTOMER_SIDE_OF_BOOKS_AND_IS_CROSS_MARGINED = 6;
+  const int AccountType_ACCOUNTNONCUSTOMER = 2;
+  const int AccountType_ACCOUNT_IS_CARRIED_ON_CUSTOMER_SIDE_OF_BOOKS = 1;
+  const int AccountType_HOUSETRADERCROSS = 7;
+  const int AccountType_JOINTBOACCT = 8;
+  const int AccountType_JOINT_BACKOFFICE_ACCOUNT = 8;
+  const int AccountType_ACCOUNT_IS_HOUSE_TRADER_AND_IS_CROSS_MARGINED = 7;
+  const int HaltReasonInt_ADDITIONAL_INFORMATION = 3;
+  const int HaltReasonInt_NEWS_PENDING = 4;
+  const int HaltReasonInt_ORDER_INFLUX = 1;
+  const int HaltReasonInt_NEWS_DISSEMINATION = 0;
+  const int HaltReasonInt_EQUIPMENT_CHANGEOVER = 5;
+  const int HaltReasonInt_ORDER_IMBALANCE = 2;
+  const char ClearingFeeIndicator_3RDYEARDELEGATE[] = "3";
+  const char ClearingFeeIndicator_FULLASSOCIATEMEMBER[] = "F";
+  const char ClearingFeeIndicator_106H_AND_106J_FIRMS[] = "H";
+  const char ClearingFeeIndicator_4THYEARDELEGATE[] = "4";
+  const char ClearingFeeIndicator_5THYEARDELEGATE[] = "5";
+  const char ClearingFeeIndicator_EQUITYCLEARINGMEMBER[] = "E";
+  const char ClearingFeeIndicator_GIMIDEMCOMMEMBERSHIP[] = "I";
+  const char ClearingFeeIndicator_2NDYEARDELEGATE[] = "2";
+  const char ClearingFeeIndicator_1ST_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "1";
+  const char ClearingFeeIndicator_1STYEARDELEGATE[] = "1";
+  const char ClearingFeeIndicator_106H106J[] = "H";
+  const char ClearingFeeIndicator_GIM_IDEM_AND_COM_MEMBERSHIP_INTEREST_HOLDERS[] = "I";
+  const char ClearingFeeIndicator_2ND_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "2";
+  const char ClearingFeeIndicator_4TH_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "4";
+  const char ClearingFeeIndicator_3RD_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "3";
+  const char ClearingFeeIndicator_LESSEE_106F_EMPLOYEES[] = "L";
+  const char ClearingFeeIndicator_6THYEARDELEGATE[] = "9";
+  const char ClearingFeeIndicator_NON_MEMBER_AND_CUSTOMER[] = "C";
+  const char ClearingFeeIndicator_5TH_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "5";
+  const char ClearingFeeIndicator_FULL_AND_ASSOCIATE_MEMBER_TRADING_FOR_OWN_ACCOUNT_AND_AS_FLOOR_BROKERS[] = "F";
+  const char ClearingFeeIndicator_CBOE_MEMBER[] = "B";
+  const char ClearingFeeIndicator_1ST_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "1";
+  const char ClearingFeeIndicator_5TH_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "5";
+  const char ClearingFeeIndicator_NONMEMBERCUSTOMER[] = "C";
+  const char ClearingFeeIndicator_LESSEE_AND_106F_EMPLOYEES[] = "L";
+  const char ClearingFeeIndicator_FULL_AND_ASSOCIATE_MEMBER_TRADING_FOR_OWN_ACCOUNT_AND_AS_FLOOR[] = "F";
+  const char ClearingFeeIndicator_3RD_YEAR_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "3";
+  const char ClearingFeeIndicator_2ND_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "2";
+  const char ClearingFeeIndicator_CBOEMEMBER[] = "B";
+  const char ClearingFeeIndicator_LESSEE106F[] = "L";
+  const char ClearingFeeIndicator_ALLOTHERS[] = "M";
+  const char ClearingFeeIndicator_EQUITY_MEMBER_AND_CLEARING_MEMBER[] = "E";
+  const char ClearingFeeIndicator_ALL_OTHER_OWNERSHIP_TYPES[] = "M";
+  const char ClearingFeeIndicator_6TH_YEAR_AND_BEYOND_DELEGATE_TRADING_FOR_HIS_OWN_ACCOUNT[] = "9";
+  const char ClearingFeeIndicator_4TH_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "4";
+  const char ClearingFeeIndicator_6TH_YEAR_DELEGATE_TRADING_FOR_OWN_ACCOUNT[] = "9";
+  const int BidType_DISCLOSED_STYLE = 2;
+  const int BidType_NONDISC = 1;
+  const int BidType_NO_BIDDING_PROCESS = 3;
+  const int BidType_DISC = 2;
+  const int BidType_DISCLOSED_SYTLE = 2;
+  const int BidType_NOBID = 3;
+  const int BidType_NON_DISCLOSED_STYLE = 1;
+  const int QuotePriceType_PER_SHARE = 2;
+  const int QuotePriceType_BASISPOINTSRELATIVETOBENCHMARK = 6;
+  const int QuotePriceType_TEDPRICE = 7;
+  const int QuotePriceType_PERSHARE = 2;
+  const int QuotePriceType_YIELD = 10;
+  const int QuotePriceType_FIXED_AMOUNT = 3;
+  const int QuotePriceType_TED_YIELD = 8;
+  const int QuotePriceType_PREMIUM = 5;
+  const int QuotePriceType_FIXEDAMOUNT = 3;
+  const int QuotePriceType_YIELDSPREADSWAPS = 9;
+  const int QuotePriceType_TEDYIELD = 8;
+  const int QuotePriceType_DISCOUNT = 4;
+  const int QuotePriceType_YIELD_SPREAD = 9;
+  const int QuotePriceType_TED_PRICE = 7;
+  const int QuotePriceType_PERCENT = 1;
+  const int QuotePriceType_SPREAD = 6;
+  const int MultilegPriceMethod_CONTRACT_WEIGHTED_AVERAGE_PRICE = 4;
+  const int MultilegPriceMethod_REVERSED_NET_PRICE = 1;
+  const int MultilegPriceMethod_MULTIPLIED_PRICE = 5;
+  const int MultilegPriceMethod_INDIVIDUAL = 3;
+  const int MultilegPriceMethod_YIELD_DIFFERENCE = 2;
+  const int MultilegPriceMethod_NET_PRICE = 0;
+  const int ListMethod_PRE_LISTED_ONLY = 0;
+  const int ListMethod_USER_REQUESTED = 1;
+  const char MDImplicitDelete_NO = 'N';
+  const char MDImplicitDelete_YES = 'Y';
+  const int RoutingType_BLOCKLIST = 4;
+  const int RoutingType_TARGET_LIST = 2;
+  const int RoutingType_TARGET_FIRM = 1;
+  const int RoutingType_TARGETFIRM = 1;
+  const int RoutingType_TARGETLIST = 2;
+  const int RoutingType_BLOCK_LIST = 4;
+  const int RoutingType_BLOCK_FIRM = 3;
+  const int RoutingType_BLOCKFIRM = 3;
+  const char BidTradeType_RISKTRADE = 'R';
+  const char BidTradeType_VWAPGUARANTEE = 'G';
+  const char BidTradeType_AGENCY = 'A';
+  const char BidTradeType_GUARANTEEDCLOSE = 'J';
+  const char BidTradeType_VWAP_GUARANTEE = 'G';
+  const char BidTradeType_RISK_TRADE = 'R';
+  const char BidTradeType_GUARANTEED_CLOSE = 'J';
+  const int OrdRejReason_INCORRECT_ALLOCATED_QUANTITY = 14;
+  const int OrdRejReason_DUPLICATE_OF_A_VERBALLY_COMMUNICATED_ORDER = 7;
+  const int OrdRejReason_DUPLICATEVERBAL = 7;
+  const int OrdRejReason_ORDER_EXCEEDS_LIMIT = 3;
+  const int OrdRejReason_EXCHANGE_CLOSED = 2;
+  const int OrdRejReason_DUPLICATE = 6;
+  const int OrdRejReason_SURVEILLENCE_OPTION = 12;
+  const int OrdRejReason_UNKNOWN_ORDER = 5;
+  const int OrdRejReason_INCORRECTALLOCATEDQUANTITY = 14;
+  const int OrdRejReason_TOOLATE = 4;
+  const int OrdRejReason_UNSUPPORTED_ORDER_CHARACTERISTIC = 11;
+  const int OrdRejReason_DUPLICATE_ORDER = 6;
+  const int OrdRejReason_TOO_LATE_TO_ENTER = 4;
+  const int OrdRejReason_INCORRECT_QUANTITY = 13;
+  const int OrdRejReason_UNKNOWNSYM = 1;
+  const int OrdRejReason_STALE = 8;
+  const int OrdRejReason_UNKNOWN_ACCOUNT = 15;
+  const int OrdRejReason_INVALID_PRICE_INCREMENT = 18;
+  const int OrdRejReason_BROKEROPT = 0;
+  const int OrdRejReason_EXCEEDSLIM = 3;
+  const int OrdRejReason_INVALID_INVESTOR_ID = 10;
+  const int OrdRejReason_UNKNOWN_SYMBOL = 1;
+  const int OrdRejReason_INCORRECTQUANTITY = 13;
+  const int OrdRejReason_UNKNOWNACCOUNTS = 15;
+  const int OrdRejReason_OTHER = 99;
+  const int OrdRejReason_BROKER = 0;
+  const int OrdRejReason_BROKER_OPTION = 0;
+  const int OrdRejReason_SURVEILLENCE = 12;
+  const int OrdRejReason_EXCHCLOSED = 2;
+  const int OrdRejReason_PRICE_EXCEEDS_CURRENT_PRICE_BAND = 16;
+  const int OrdRejReason_INVINVID = 10;
+  const int OrdRejReason_UNSUPPORDERCHAR = 11;
+  const int OrdRejReason_TRADEALONGREQ = 9;
+  const int OrdRejReason_UNKNOWN = 5;
+  const int OrdRejReason_TRADE_ALONG_REQUIRED = 9;
+  const int OrdRejReason_STALE_ORDER = 8;
+  const int MaturityMonthYearIncrementUnits_WEEKS = 2;
+  const int MaturityMonthYearIncrementUnits_MONTHS = 0;
+  const int MaturityMonthYearIncrementUnits_YEARS = 3;
+  const int MaturityMonthYearIncrementUnits_DAYS = 1;
+  const char DisplayWhen_EXHAUST = '2';
+  const char DisplayWhen_IMMEDIATE = '1';
+  const int ApplQueueAction_END_SESSION = 3;
+  const int ApplQueueAction_QUEUEFLUSHED = 1;
+  const int ApplQueueAction_QUEUE_FLUSHED = 1;
+  const int ApplQueueAction_ENDSESSION = 3;
+  const int ApplQueueAction_OVERLAYLAST = 2;
+  const int ApplQueueAction_OVERLAY_LAST = 2;
+  const int ApplQueueAction_NOACTIONTAKEN = 0;
+  const int ApplQueueAction_NO_ACTION_TAKEN = 0;
+  const char RegistTransType_REPLACE = '1';
+  const char RegistTransType_NEW = '0';
+  const char RegistTransType_CANCEL = '2';
+  const int PriceType_PRODUCT_TICKS_IN_HALFS = 13;
+  const int PriceType_FIXEDCABINETTRADEPRICE = 10;
+  const int PriceType_PER_SHARE = 2;
+  const int PriceType_PCT = 1;
+  const int PriceType_VARIABLECABINETTRADEPRICE = 11;
+  const int PriceType_PRODUCT_TICKS_IN_FOURTHS = 14;
+  const int PriceType_TEDPRICE = 7;
+  const int PriceType_YIELD = 9;
+  const int PriceType_TED_YIELD = 8;
+  const int PriceType_PREMIUM = 5;
+  const int PriceType_FIXED_AMOUNT = 3;
+  const int PriceType_TEDYIELD = 8;
+  const int PriceType_DISCOUNT = 4;
+  const int PriceType_PRODUCT_TICKS_IN_SIXTY_FORTHS = 18;
+  const int PriceType_PRODUCT_TICKS_IN_ONE_TWENTY_EIGHTS = 19;
+  const int PriceType_CPS = 2;
+  const int PriceType_PERCENTAGE = 1;
+  const int PriceType_PRODUCT_TICKS_IN_EIGHTS = 15;
+  const int PriceType_PRODUCT_TICKS_IN_THIRTY_SECONDS = 17;
+  const int PriceType_ABS = 3;
+  const int PriceType_VARIABLE_CABINET_TRADE_PRICE = 11;
+  const int PriceType_PER_UNIT = 2;
+  const int PriceType_PRODUCT_TICKS_IN_SIXTEENTHS = 16;
+  const int PriceType_TED_PRICE = 7;
+  const int PriceType_FIXED_CABINET_TRADE_PRICE = 10;
+  const int PriceType_SPREAD = 6;
+  const int PriceType_BASIS_POINTS_RELATIVE_TO_BENCHMARK = 6;
+  const int SettlObligMode_PRELIMINARY = 1;
+  const int SettlObligMode_FINAL = 2;
+  const char SecurityUpdateAction_DELETE = 'D';
+  const char SecurityUpdateAction_ADD = 'A';
+  const char SecurityUpdateAction_MODIFY = 'M';
+  const int NetworkRequestType_STOP_SUBSCRIBING = 4;
+  const int NetworkRequestType_LEVELOFDETAIL = 8;
+  const int NetworkRequestType_SUBSCRIBE = 2;
+  const int NetworkRequestType_SNAPSHOT = 1;
+  const int NetworkRequestType_STOPSUBSCRIBING = 4;
+  const int NetworkRequestType_LEVEL_OF_DETAIL_THEN_NOCOMPIDS_BECOMES_REQUIRED = 8;
+  const int PartyRole_TRADER_MNEMONIC = 53;
+  const int PartyRole_ACCEPTABLE_COUNTERPARTY = 56;
+  const int PartyRole_HOST_COMPETENT_AUTHORITY = 68;
+  const int PartyRole_CONTRATRADER = 37;
+  const int PartyRole_EXECUTINGFIRM = 1;
+  const int PartyRole_CUSTOMER_ACCOUNT = 24;
+  const int PartyRole_POSITIONACCOUNT = 38;
+  const int PartyRole_REPORT_ORIGINATOR = 62;
+  const int PartyRole_CONTRAFIRM = 17;
+  const int PartyRole_EXECUTION_VENUE = 73;
+  const int PartyRole_INTERMEDIARY = 29;
+  const int PartyRole_ORDER_ENTRY_OPERATOR_ID = 44;
+  const int PartyRole_INTRODUCING_BROKER = 60;
+  const int PartyRole_FOREIGN_FIRM = 46;
+  const int PartyRole_HOME_COMPETENT_AUTHORITY = 69;
+  const int PartyRole_EXECUTINGSYSTEM = 16;
+  const int PartyRole_SECONDARY_ACCOUNT_NUMBER = 45;
+  const int PartyRole_INVESTMENT_FIRM = 67;
+  const int PartyRole_CONTRA_CLEARING_FIRM = 18;
+  const int PartyRole_CONTRA_POSITION_ACCOUNT = 41;
+  const int PartyRole_SYSTEMATIC_INTERNALISER = 63;
+  const int PartyRole_EXCHANGE = 22;
+  const int PartyRole_INTERNAL_CARRY_ACCOUNT = 43;
+  const int PartyRole_LOCATE = 8;
+  const int PartyRole_CORRESPONDENTCLEARINGORGANIZATION = 25;
+  const int PartyRole_ORDER_ORIGINATION_TRADER = 11;
+  const int PartyRole_SUB_CUSTODIAN = 31;
+  const int PartyRole_ENTERING_UNIT = 58;
+  const int PartyRole_STEP_OUT_FIRM = 80;
+  const int PartyRole_COMPETENT_AUTHORITY_OF_THE_TRANSACTION = 71;
+  const int PartyRole_SENDER_LOCATION = 54;
+  const int PartyRole_REGULATED_MARKET = 65;
+  const int PartyRole_UNACCEPTABLE_SETTLING_COUNTERPARTY = 85;
+  const int PartyRole_SETTLEMENTLOCATION = 10;
+  const int PartyRole_COMPETENT_AUTHORITY_OF_THE_MOST_RELEVANT_MARKET_IN_TERMS_OF_LIQUIDITY = 70;
+  const int PartyRole_QUOTE_ORIGINATOR = 61;
+  const int PartyRole_CLEARING_ORGANIZATION = 21;
+  const int PartyRole_SESSION_ID = 55;
+  const int PartyRole_MARKET_MAKER = 66;
+  const int PartyRole_INTERESTED_PARTY = 33;
+  const int PartyRole_TRANSFER_TO_FIRM = 40;
+  const int PartyRole_CONTRA_TRADER = 37;
+  const int PartyRole_ENTERINGTRADER = 36;
+  const int PartyRole_ENTERING_TRADER = 36;
+  const int PartyRole_LARGE_TRADER_REPORTABLE_ACCOUNT = 52;
+  const int PartyRole_BENEFICIARY = 32;
+  const int PartyRole_CONTRA_INVESTOR_ID = 39;
+  const int PartyRole_FORIEGN_FIRM = 46;
+  const int PartyRole_SETTLEMENT_LOCATION = 10;
+  const int PartyRole_CLEARINGORGANIZATION = 21;
+  const int PartyRole_EXECUTING_SYSTEM = 16;
+  const int PartyRole_CLEARING_FIRM = 4;
+  const int PartyRole_PLEDGEE_ACCOUNT = 51;
+  const int PartyRole_CLIENT_ID = 3;
+  const int PartyRole_ENTERING_FIRM = 7;
+  const int PartyRole_ALLOCENTITY = 39;
+  const int PartyRole_INVESTOR_ID = 5;
+  const int PartyRole_CLEARINGFIRM = 4;
+  const int PartyRole_CORRESPONDANT_CLEARING_FIRM = 15;
+  const int PartyRole_SUBCUSTODIAN = 31;
+  const int PartyRole_BUYER_SELLER = 27;
+  const int PartyRole_CLEARING_ACCOUNT = 83;
+  const int PartyRole_ENTERINGFIRM = 7;
+  const int PartyRole_PRIME_BROKER_PROVIDING_GENERAL_TRADE_SERVICES = 79;
+  const int PartyRole_CORRESPONDENT_CLEARING_ORGANIZATION = 25;
+  const int PartyRole_ACCEPTABLE_SETTLING_COUNTERPARTY = 84;
+  const int PartyRole_CUSTOMERACCOUNT = 24;
+  const int PartyRole_MARKET_DATA_ENTRY_ORIGINATOR = 74;
+  const int PartyRole_INTRODUCINGFIRM = 6;
+  const int PartyRole_EXECUTING_UNIT = 59;
+  const int PartyRole_CENTRAL_REGISTRATION_DEPOSITORY = 82;
+  const int PartyRole_INTERESTEDPARTY = 33;
+  const int PartyRole_LOCATION_ID = 75;
+  const int PartyRole_ORDERORIGINATOR = 13;
+  const int PartyRole_CORRESPONDENT_BROKER = 26;
+  const int PartyRole_ASSET_MANAGER = 49;
+  const int PartyRole_MULTILATERAL_TRADING_FACILITY = 64;
+  const int PartyRole_SPONSORINGFIRM = 19;
+  const int PartyRole_ORDER_ORIGINATION_FIRM = 13;
+  const int PartyRole_CONTRA_EXCHANGE = 42;
+  const int PartyRole_INVESTORID = 5;
+  const int PartyRole_FUNDMANAGER = 9;
+  const int PartyRole_REGULATORYBODY = 34;
+  const int PartyRole_CONTRA_FIRM = 17;
+  const int PartyRole_BROKER_OF_CREDIT = 2;
+  const int PartyRole_LIQUIDITYPROVIDER = 35;
+  const int PartyRole_GIVEUPCLEARINGFIRM = 14;
+  const int PartyRole_CONTRACLEARINGFIRM = 18;
+  const int PartyRole_CLAIMING_ACCOUNT = 48;
+  const int PartyRole_INTRODUCING_FIRM = 6;
+  const int PartyRole_GIVEUP_CLEARING_FIRM = 14;
+  const int PartyRole_EXECUTINGTRADER = 12;
+  const int PartyRole_UNDERLYING_CONTRA_FIRM = 20;
+  const int PartyRole_EXECUTING_FIRM = 1;
+  const int PartyRole_AGENT = 30;
+  const int PartyRole_LIQUIDITY_PROVIDER = 35;
+  const int PartyRole_POSITION_ACCOUNT = 38;
+  const int PartyRole_BROKEROFCREDIT = 2;
+  const int PartyRole_THIRD_PARTY_ALLOCATION_FIRM = 47;
+  const int PartyRole_CLIENTID = 3;
+  const int PartyRole_PLEDGOR_ACCOUNT = 50;
+  const int PartyRole_REPORTING_INTERMEDIARY = 72;
+  const int PartyRole_EXECUTING_TRADER = 12;
+  const int PartyRole_CUSTODIAN = 28;
+  const int PartyRole_BROKERCLEARINGID = 81;
+  const int PartyRole_CORRESPONDENTBROKER = 26;
+  const int PartyRole_LOCATE_LENDING_FIRM = 8;
+  const int PartyRole_INITIATINGTRADER = 11;
+  const int PartyRole_REGULATORY_BODY = 34;
+  const int PartyRole_UNACCEPTABLE_COUNTERPARTY = 57;
+  const int PartyRole_CORRESPONDANTCLEARINGFIRM = 15;
+  const int PartyRole_FUND_MANAGER_CLIENT_ID = 9;
+  const int PartyRole_BUYERSELLERRECEIVERDELIVERER = 27;
+  const int PartyRole_DESK_ID = 76;
+  const int PartyRole_ALLOCATION_ENTITY = 78;
+  const int PartyRole_MARKET_DATA_MARKET = 77;
+  const int PartyRole_SPONSORING_FIRM = 19;
+  const int PartyRole_LOCATELENDINGFIRM = 8;
+  const int PartyRole_UNDRCONTRAFIRM = 20;
+  const char AssignmentMethod_PRO_RATA = 'P';
+  const char AssignmentMethod_RANDOM = 'R';
+  const char AssignmentMethod_PRORATA = 'P';
+  const int StrategyParameterType_MONTHYEAR = 18;
+  const int StrategyParameterType_TZTIMEONLY = 27;
+  const int StrategyParameterType_PRICE = 8;
+  const int StrategyParameterType_QTY = 7;
+  const int StrategyParameterType_BOOLEAN = 13;
+  const int StrategyParameterType_MULTIPLECHARVALUE = 15;
+  const int StrategyParameterType_CHAR = 12;
+  const int StrategyParameterType_NUMINGROUP = 3;
+  const int StrategyParameterType_TAGNUM = 5;
+  const int StrategyParameterType_COUNTRY = 25;
+  const int StrategyParameterType_TENOR = 29;
+  const int StrategyParameterType_LOCALMKTTIME = 21;
+  const int StrategyParameterType_INT = 1;
+  const int StrategyParameterType_LOCALMKTDATE = 21;
+  const int StrategyParameterType_EXCHANGE = 17;
+  const int StrategyParameterType_LANGUAGE = 26;
+  const int StrategyParameterType_MONTH_YEAR = 18;
+  const int StrategyParameterType_PERCENTAGE = 11;
+  const int StrategyParameterType_LENGTH = 2;
+  const int StrategyParameterType_TZTIMESTAMP = 28;
+  const int StrategyParameterType_MULTIPLESTRINGVALUE = 24;
+  const int StrategyParameterType_UTCTIMESTAMP = 19;
+  const int StrategyParameterType_DATA = 23;
+  const int StrategyParameterType_CURRENCY = 16;
+  const int StrategyParameterType_STRING = 14;
+  const int StrategyParameterType_AMT = 10;
+  const int StrategyParameterType_FLOAT = 6;
+  const int StrategyParameterType_UTCDATE = 22;
+  const int StrategyParameterType_UTCTIMEONLY = 20;
+  const int StrategyParameterType_SEQNUM = 4;
+  const int StrategyParameterType_UTCDATEONLY = 22;
+  const int StrategyParameterType_PRICEOFFSET = 9;
+  const int EncryptMethod_PGP_DES_MD5 = 5;
+  const int EncryptMethod_PGPDESMD5SEEAPPNOTEONFIXWEBSITE = 5;
+  const int EncryptMethod_PKCS_DES = 3;
+  const int EncryptMethod_NONEOTHER = 0;
+  const int EncryptMethod_PKCSDESPROPRIETARY = 3;
+  const int EncryptMethod_PGPDESDEFUNCT = 4;
+  const int EncryptMethod_PEMDESMD5SEEAPPNOTEONFIXWEBSITENAFORFIXMLNOTUSED = 6;
+  const int EncryptMethod_PKCS = 1;
+  const int EncryptMethod_PGP_DES = 4;
+  const int EncryptMethod_NONE = 0;
+  const int EncryptMethod_DES = 2;
+  const int EncryptMethod_PKCSPROPRIETARY = 1;
+  const int EncryptMethod_NONE_OTHER = 0;
+  const int EncryptMethod_DESECBMODE = 2;
+  const int EncryptMethod_PEM_DES_MD5 = 6;
+  const char PosAmtType_ACCRUED_COUPON_AMOUNT[] = "ACPN";
+  const char PosAmtType_PREMIUM_AMOUNT[] = "PREM";
+  const char PosAmtType_STARTOFDAYMARKTOMARKETAMOUNT[] = "SMTM";
+  const char PosAmtType_INCREMENTALMARKTOMARKETAMOUNT[] = "IMTM";
+  const char PosAmtType_CASHAMOUNTCORPORATEEVENT[] = "CASH";
+  const char PosAmtType_INCREMENTAL_COLLATERALIZED_MARK_TO_MARKET[] = "ICMTM";
+  const char PosAmtType_TOTAL_BANKED_AMOUNT[] = "BANK";
+  const char PosAmtType_FINAL_MARK_TO_MARKET_AMOUNT[] = "FMTM";
+  const char PosAmtType_SETTLEMENT_VALUE[] = "SETL";
+  const char PosAmtType_VALUEADJUSTEDAMOUNT[] = "VADJ";
+  const char PosAmtType_CASH_AMOUNT[] = "CASH";
+  const char PosAmtType_PREMIUMAMOUNT[] = "PREM";
+  const char PosAmtType_INITIAL_TRADE_COUPON_AMOUNT[] = "ICPN";
+  const char PosAmtType_INCREMENTAL_ACCRUED_COUPON[] = "IACPN";
+  const char PosAmtType_START_OF_DAY_MARK_TO_MARKET_AMOUNT[] = "SMTM";
+  const char PosAmtType_VALUE_ADJUSTED_AMOUNT[] = "VADJ";
+  const char PosAmtType_CASHRESIDUALAMOUNT[] = "CRES";
+  const char PosAmtType_COLLATERALIZED_MARK_TO_MARKET[] = "CMTM";
+  const char PosAmtType_CASH_RESIDUAL_AMOUNT[] = "CRES";
+  const char PosAmtType_COMPENSATION_AMOUNT[] = "DLV";
+  const char PosAmtType_TRADE_VARIATION_AMOUNT[] = "TVAR";
+  const char PosAmtType_TRADEVARIATIONAMOUNT[] = "TVAR";
+  const char PosAmtType_FINALMARKTOMARKETAMOUNT[] = "FMTM";
+  const char PosAmtType_COUPON_AMOUNT[] = "CPN";
+  const char PosAmtType_TOTAL_COLLATERALIZED_AMOUNT[] = "COLAT";
+  const char PosAmtType_INCREMENTAL_MARK_TO_MARKET_AMOUNT[] = "IMTM";
+  const char ResetSeqNumFlag_NO = 'N';
+  const char ResetSeqNumFlag_YES = 'Y';
+  const int CollInquiryResult_NO_COLLATERAL_FOUND_FOR_THE_ORDER_SPECIFIED = 7;
+  const int CollInquiryResult_NOCOLLATERALFOUNDFORTHEORDERSPECIFIED = 7;
+  const int CollInquiryResult_NOCOLLATERALFOUNDFORTHETRADESPECIFIED = 6;
+  const int CollInquiryResult_INVALIDORUNKNOWNINSTRUMENT = 1;
+  const int CollInquiryResult_INVALID_DESTINATION_REQUESTED = 5;
+  const int CollInquiryResult_INVALIDORUNKNOWNCOLLATERALTYPE = 2;
+  const int CollInquiryResult_UNAUTHORIZED_FOR_COLLATERAL_INQUIRY = 9;
+  const int CollInquiryResult_INVALIDTRANSPORTTYPEREQUESTED = 4;
+  const int CollInquiryResult_INVALIDPARTIES = 3;
+  const int CollInquiryResult_INVALID_OR_UNKNOWN_COLLATERAL_TYPE = 2;
+  const int CollInquiryResult_INVALIDDESTINATIONREQUESTED = 5;
+  const int CollInquiryResult_SUCCESSFUL = 0;
+  const int CollInquiryResult_INVALID_OR_UNKNOWN_INSTRUMENT = 1;
+  const int CollInquiryResult_COLLATERAL_INQUIRY_TYPE_NOT_SUPPORTED = 8;
+  const int CollInquiryResult_OTHER = 99;
+  const int CollInquiryResult_UNAUTHORIZEDFORCOLLATERALINQUIRY = 9;
+  const int CollInquiryResult_COLLATERALINQUIRYTYPENOTSUPPORTED = 8;
+  const int CollInquiryResult_INVALID_PARTIES = 3;
+  const int CollInquiryResult_INVALID_TRANSPORT_TYPE_REQUESTED = 4;
+  const int CollInquiryResult_NO_COLLATERAL_FOUND_FOR_THE_TRADE_SPECIFIED = 6;
+  const int CollAsgnRespType_DECLINED = 2;
+  const int CollAsgnRespType_RECEIVED = 0;
+  const int CollAsgnRespType_REJECTED = 3;
+  const int CollAsgnRespType_ACCEPTED = 1;
+  const char UnsolicitedIndicator_NO = 'N';
+  const char UnsolicitedIndicator_YES = 'Y';
+  const int QuoteEntryRejectReason_UNKNWNSYM = 1;
+  const int QuoteEntryRejectReason_EXCHCLSD = 2;
+  const int QuoteEntryRejectReason_EXHCNAGE = 2;
+  const int QuoteEntryRejectReason_DUPORD = 6;
+  const int QuoteEntryRejectReason_INVALID_PRICE = 8;
+  const int QuoteEntryRejectReason_TOOLATE = 4;
+  const int QuoteEntryRejectReason_INVBIDASK = 7;
+  const int QuoteEntryRejectReason_NOT_AUTHORIZED_TO_QUOTE_SECURITY = 9;
+  const int QuoteEntryRejectReason_TOO_LATE_TO_ENTER = 4;
+  const int QuoteEntryRejectReason_QUOTE_EXCEEDS_LIMIT = 3;
+  const int QuoteEntryRejectReason_ORDEXCLIM = 3;
+  const int QuoteEntryRejectReason_UNKNORD = 5;
+  const int QuoteEntryRejectReason_INVPX = 8;
+  const int QuoteEntryRejectReason_EXCHANGE = 2;
+  const int QuoteEntryRejectReason_UNKNOWN_SYMBOL = 1;
+  const int QuoteEntryRejectReason_NOTAUTH = 9;
+  const int QuoteEntryRejectReason_OTHER = 99;
+  const int QuoteEntryRejectReason_INVALID_BID_ASK_SPREAD = 7;
+  const int QuoteEntryRejectReason_UNKNOWN_QUOTE = 5;
+  const int QuoteEntryRejectReason_DUPLICATE_QUOTE = 6;
+  const char OrderCapacity_PROPRIETARY = 'G';
+  const char OrderCapacity_RISKLESS_PRINCIPAL = 'R';
+  const char OrderCapacity_AGENT_FOR_OTHER_MEMBER = 'W';
+  const char OrderCapacity_PRINCIPAL = 'P';
+  const char OrderCapacity_AGENCY = 'A';
+  const char OrderCapacity_INDIVIDUAL = 'I';
+  const char OrderCapacity_AGENTOTHERMEMBER = 'W';
+  const char OrderCapacity_RISKLESSPRINCIPAL = 'R';
+  const int QuoteAckStatus_CANCELED_FOR_UNDERLYING = 3;
+  const int QuoteAckStatus_CANCELED_ALL = 4;
+  const int QuoteAckStatus_CANCELED_FOR_SECURITY_TYPE = 2;
+  const int QuoteAckStatus_REJECTED = 5;
+  const int QuoteAckStatus_CANCELED_FOR_SYMBOL = 1;
+  const int QuoteAckStatus_ACCEPTED = 0;
+  const int UserRequestType_CHANGE_PASSWORD_FOR_USER = 3;
+  const int UserRequestType_CHANGEPASSWORDFORUSER = 3;
+  const int UserRequestType_LOGOFFUSER = 2;
+  const int UserRequestType_LOG_OFF_USER = 2;
+  const int UserRequestType_REQUEST_INDIVIDUAL_USER_STATUS = 4;
+  const int UserRequestType_REQUESTINDIVIDUALUSERSTATUS = 4;
+  const int UserRequestType_LOGONUSER = 1;
+  const int UserRequestType_LOG_ON_USER = 1;
+  const int TradeReportTransType_REPLACE = 2;
+  const int TradeReportTransType_NEW = 0;
+  const int TradeReportTransType_REVERSE = 4;
+  const int TradeReportTransType_CANCEL = 1;
+  const int TradeReportTransType_CANCEL_DUE_TO_BACK_OUT_OF_TRADE = 5;
+  const int TradeReportTransType_RELEASE = 3;
+  const char AdvSide_CROSS = 'X';
+  const char AdvSide_TRADE = 'T';
+  const char AdvSide_BUY = 'B';
+  const char AdvSide_SELL = 'S';
+  const int CoveredOrUncovered_COVERED = 0;
+  const int CoveredOrUncovered_UNCOVERED = 1;
+  const int AcctIDSource_TFMGSPTA = 3;
+  const int AcctIDSource_TFM = 3;
+  const int AcctIDSource_DTCCCODE = 5;
+  const int AcctIDSource_SIDCODE = 2;
+  const int AcctIDSource_OMGEOALERTID = 4;
+  const int AcctIDSource_BIC = 1;
+  const int AcctIDSource_OTHER = 99;
+  const int AcctIDSource_OMGEO = 4;
+  const int AcctIDSource_SID_CODE = 2;
+  const int AcctIDSource_DTCC_CODE = 5;
+  const int TradeRequestType_UNMATCHED_TRADES_THAT_MATCH_CRITERIA = 2;
+  const int TradeRequestType_ALL_TRADES = 0;
+  const int TradeRequestType_MATCHED_TRADES_MATCHING_CRITERIA_PROVIDED_ON_REQUEST = 1;
+  const int TradeRequestType_UNREPORTEDTRADES = 3;
+  const int TradeRequestType_ALLTRADES = 0;
+  const int TradeRequestType_ADVISORIESMATCH = 4;
+  const int TradeRequestType_MATCHEDTRADES = 1;
+  const int TradeRequestType_UNMATCHEDTRADES = 2;
+  const int TradeRequestType_UNREPORTED_TRADES_THAT_MATCH_CRITERIA = 3;
+  const int TradeRequestType_ADVISORIES_THAT_MATCH_CRITERIA = 4;
+  const int TradSesStatus_PRECLOSE = 5;
+  const int TradSesStatus_HALTED = 1;
+  const int TradSesStatus_REQREJ = 6;
+  const int TradSesStatus_REQUEST_REJECTED = 6;
+  const int TradSesStatus_OPEN = 2;
+  const int TradSesStatus_PREOPEN = 4;
+  const int TradSesStatus_PRE_OPEN = 4;
+  const int TradSesStatus_UNKNOWN = 0;
+  const int TradSesStatus_PRE_CLOSE = 5;
+  const int TradSesStatus_CLOSED = 3;
+  const int PegPriceType_LAST_PEG = 1;
+  const int PegPriceType_PRIMARY_PEG = 5;
+  const int PegPriceType_OPENING_PEG = 3;
+  const int PegPriceType_FIXED_PEG_TO_LOCAL_BEST_BID_OR_OFFER_AT_TIME_OF_ORDER = 6;
+  const int PegPriceType_TRAILING_STOP_PEG = 8;
+  const int PegPriceType_PEG_TO_LIMIT_PRICE = 9;
+  const int PegPriceType_MID_PRICE_PEG = 2;
+  const int PegPriceType_MARKET_PEG = 4;
+  const int PegPriceType_PEG_TO_VWAP = 7;
+  const int StreamAsgnRejReason_NO_AVAILABLE_STREAM = 3;
+  const int StreamAsgnRejReason_EXCEEDS_MAXIMUM_SIZE = 1;
+  const int StreamAsgnRejReason_UNKNOWN_CLIENT = 0;
+  const int StreamAsgnRejReason_UNKNOWN_OR_INVALID_CURRENCY_PAIR = 2;
+  const int StreamAsgnRejReason_OTHER = 99;
+  const char ValuationMethod_FUTURES_STYLE_WITH_AN_ATTACHED_CASH_ADJUSTMENT[] = "FUTDA";
+  const char ValuationMethod_PREMIUM_STYLE[] = "EQTY";
+  const char ValuationMethod_CDS_IN_DELIVERY[] = "CDSD";
+  const char ValuationMethod_CDS_STYLE_COLLATERALIZATION_OF_MARKET_TO_MARKET_AND_COUPON[] = "CDS";
+  const char ValuationMethod_FUTURES_STYLE_MARK_TO_MARKET[] = "FUT";
+  const char TriggerType_SPECIFIED_TRADING_SESSION = '2';
+  const char TriggerType_NEXT_AUCTION = '3';
+  const char TriggerType_PRICE_MOVEMENT = '4';
+  const char TriggerType_PARTIAL_EXECUTION = '1';
+  const char PriceProtectionScope_LOCAL = '1';
+  const char PriceProtectionScope_NONE = '0';
+  const char PriceProtectionScope_GLOBAL = '3';
+  const char PriceProtectionScope_NATIONAL = '2';
+  const int TradeReportRejectReason_SUCCESSFULDEFAULT = 0;
+  const int TradeReportRejectReason_UNAUTHORIZED_TO_REPORT_TRADES = 3;
+  const int TradeReportRejectReason_SUCCESSFUL = 0;
+  const int TradeReportRejectReason_INVALID_PARTY_ONFORMATION = 1;
+  const int TradeReportRejectReason_UNKNOWN_INSTRUMENT = 2;
+  const int TradeReportRejectReason_OTHER = 99;
+  const int TradeReportRejectReason_INVALIDTRADETYPE = 4;
+  const int TradeReportRejectReason_UNKNOWNINSTRUMENT = 2;
+  const int TradeReportRejectReason_INVALID_TRADE_TYPE = 4;
+  const int TradeReportRejectReason_UNAUTHORIZEDTOREPORTTRADES = 3;
+  const int TradeReportRejectReason_INVALIDPARTYINFORMATION = 1;
+  const int SecurityListType_NEWSPAPER_LIST = 4;
+  const int SecurityListType_TRADING_LIST = 2;
+  const int SecurityListType_INDUSTRY_CLASSIFICATION = 1;
+  const int SecurityListType_MARKET = 3;
+  const int QuoteRejectReason_QUOTE_LOCKED = 11;
+  const int QuoteRejectReason_UNKNSYM = 1;
+  const int QuoteRejectReason_EXCHCLSD = 2;
+  const int QuoteRejectReason_DUPORD = 6;
+  const int QuoteRejectReason_INVALID_OR_UNKNOWN_ISSUER_OF_UNDERLYING_SECURITY = 13;
+  const int QuoteRejectReason_INVALID_PRICE = 8;
+  const int QuoteRejectReason_TOOLATE = 4;
+  const int QuoteRejectReason_NOT_AUTHORIZED_TO_QUOTE_SECURITY = 9;
+  const int QuoteRejectReason_TOO_LATE_TO_ENTER = 4;
+  const int QuoteRejectReason_UNKNORD = 5;
+  const int QuoteRejectReason_INVPX = 8;
+  const int QuoteRejectReason_EXCHANGE = 2;
+  const int QuoteRejectReason_INVSPREAD = 7;
+  const int QuoteRejectReason_UNKNOWN_SYMBOL = 1;
+  const int QuoteRejectReason_NOTAUTH = 9;
+  const int QuoteRejectReason_OTHER = 99;
+  const int QuoteRejectReason_INVALID_BID_ASK_SPREAD = 7;
+  const int QuoteRejectReason_UNKNOWN_QUOTE = 5;
+  const int QuoteRejectReason_INVALID_OR_UNKNOWN_SECURITY_ISSUER = 12;
+  const int QuoteRejectReason_ORDEXLIM = 3;
+  const int QuoteRejectReason_DUPLICATE_QUOTE = 6;
+  const int QuoteRejectReason_PRICE_EXCEEDS_CURRENT_PRICE_BAND = 10;
+  const int QuoteRejectReason_QUOTE_REQUEST_EXCEEDS_LIMIT = 3;
+  const char PossResend_NO = 'N';
+  const char PossResend_YES = 'Y';
+  const int QuantityType_SHARES = 1;
+  const int QuantityType_CURRENTFACE = 3;
+  const int QuantityType_PAR = 8;
+  const int QuantityType_BONDS = 2;
+  const int QuantityType_ORIGINALFACE = 4;
+  const int QuantityType_CONTRACTS = 6;
+  const int QuantityType_OTHER = 7;
+  const int QuantityType_CURRENCY = 5;
+  const int ComplexEventPriceBoundaryMethod_GREATER_THAN_OR_EQUAL_TO_COMPLEXEVENTPRICE = 4;
+  const int ComplexEventPriceBoundaryMethod_EQUAL_TO_COMPLEXEVENTPRICE = 3;
+  const int ComplexEventPriceBoundaryMethod_LESS_THAN_COMPLEXEVENTPRICE = 1;
+  const int ComplexEventPriceBoundaryMethod_GREATER_THAN_COMPLEXEVENTPRICE = 5;
+  const int ComplexEventPriceBoundaryMethod_LESS_THAN_OR_EQUAL_TO_COMPLEXEVENTPRICE = 2;
+  const int ImpliedMarketIndicator_BOTH_IMPLIED_IN_AND_IMPLIED_OUT = 3;
+  const int ImpliedMarketIndicator_NOT_IMPLIED = 0;
+  const int ImpliedMarketIndicator_IMPLIED_OUT = 2;
+  const int ImpliedMarketIndicator_IMPLIED_IN = 1;
+  const int QuoteRequestType_AUTOMATIC = 2;
+  const int QuoteRequestType_MAN = 1;
+  const int QuoteRequestType_AUTO = 2;
+  const int QuoteRequestType_MANUAL = 1;
+  const int SecurityRequestResult_INSTRUMENTUNAVAILABLE = 4;
+  const int SecurityRequestResult_NO_INSTRUMENTS_FOUND_THAT_MATCH_SELECTION_CRITERIA = 2;
+  const int SecurityRequestResult_NOT_AUTHORIZED_TO_RETRIEVE_INSTRUMENT_DATA = 3;
+  const int SecurityRequestResult_INSTRUMENT_DATA_TEMPORARILY_UNAVAILABLE = 4;
+  const int SecurityRequestResult_VALID_REQUEST = 0;
+  const int SecurityRequestResult_VALIDREQ = 0;
+  const int SecurityRequestResult_NOINSTRUMENTSFOUND = 2;
+  const int SecurityRequestResult_INVALID_OR_UNSUPPORTED_REQUEST = 1;
+  const int SecurityRequestResult_NOTAUTHORIZED = 3;
+  const int SecurityRequestResult_NOTSUPPORTED = 5;
+  const int SecurityRequestResult_INVALIDREQ = 1;
+  const int SecurityRequestResult_REQUEST_FOR_INSTRUMENT_DATA_NOT_SUPPORTED = 5;
+  const char OrderRestrictions_ISSUER_HOLDING = 'B';
+  const char OrderRestrictions_NON_INDEXARBITRAGE = '3';
+  const char OrderRestrictions_EXMRKTPART = '8';
+  const char OrderRestrictions_ACTING_AS_MARKET_MAKER_OR_SPECIALIST_IN_THE_SECURITY = '5';
+  const char OrderRestrictions_NON_ALGORITHMIC = 'D';
+  const char OrderRestrictions_EXTNERAL_INTER_CONNECTED_MARKET_LINKAGE = '9';
+  const char OrderRestrictions_NON_INDEX_ARBITRAGE = '3';
+  const char OrderRestrictions_ACTING_AS_MARKET_MAKER_OF_SPECIALIST_IN_THE_UNDERLYING_SECURITY_OF_A_DERIVATIVE_SEUCIRTY = '6';
+  const char OrderRestrictions_PROGRAM_TRADE = '1';
+  const char OrderRestrictions_ISSUE_PRICE_STABILIZATION = 'C';
+  const char OrderRestrictions_INDEXARBITRAGE = '2';
+  const char OrderRestrictions_ACTMMDERIV = '6';
+  const char OrderRestrictions_FORENTITY = '7';
+  const char OrderRestrictions_CROSS = 'F';
+  const char OrderRestrictions_PROGRAMTRADE = '1';
+  const char OrderRestrictions_RISKARB = 'A';
+  const char OrderRestrictions_EXTERNAL_INTER_CONNECTED_MARKET_LINKAGE = '9';
+  const char OrderRestrictions_FOREIGN_ENTITY = '7';
+  const char OrderRestrictions_COMPETINGMARKETMAKER = '4';
+  const char OrderRestrictions_EXINTMRKTLINK = '9';
+  const char OrderRestrictions_INDEX_ARBITRAGE = '2';
+  const char OrderRestrictions_EXTERNAL_MARKET_PARTICIPANT = '8';
+  const char OrderRestrictions_ALGORITHMIC = 'E';
+  const char OrderRestrictions_ACTMM = '5';
+  const char OrderRestrictions_ACTING_AS_MARKET_MAKER_OR_SPECIALIST_IN_THE_UNDERLYING_SECURITY_OF_A_DERIVATIVE_SECURITY = '6';
+  const char OrderRestrictions_RISKLESS_ARBITRAGE = 'A';
+  const char OrderRestrictions_COMPETING_MARKET_MAKER = '4';
+  const char ListExecInstType_WAIT_FOR_EXECUT_INSTRUCTION = '2';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_SELL_DRIVEN = '3';
+  const char ListExecInstType_IMMED = '1';
+  const char ListExecInstType_WAIT = '2';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_BUY_DRIVEN_CASH_WITHDRAW = '5';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_3 = '3';
+  const char ListExecInstType_IMMEDIATE = '1';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_4 = '4';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_5 = '5';
+  const char ListExecInstType_EXCHANGE_SWITCH_CIV_ORDER_BUY_DRIVEN_CASH_TOP_UP = '4';
+  const char ListExecInstType_EXCHCIVBUYTOP = '4';
+  const char ListExecInstType_EXCHCIVBUYWD = '5';
+  const char ListExecInstType_EXCHCIVSELL = '3';
+  const char ListExecInstType_WAIT_FOR_EXECUTE_INSTRUCTION = '2';
+  const int DistribPaymentMethod_FED_WIRE = 7;
+  const int DistribPaymentMethod_ACH_CREDIT = 9;
+  const int DistribPaymentMethod_EUROCLEAR = 3;
+  const int DistribPaymentMethod_TELEGRAPHICTRANSFER = 6;
+  const int DistribPaymentMethod_ACHCREDIT = 9;
+  const int DistribPaymentMethod_TELEGRAPHIC_TRANSFER = 6;
+  const int DistribPaymentMethod_FEDWIRE = 7;
+  const int DistribPaymentMethod_CHEQUE = 5;
+  const int DistribPaymentMethod_DIRECT_CREDIT = 8;
+  const int DistribPaymentMethod_CREST = 1;
+  const int DistribPaymentMethod_BPAY = 10;
+  const int DistribPaymentMethod_CLEARSTREAM = 4;
+  const int DistribPaymentMethod_DIRECTCREDITBECSBACS = 8;
+  const int DistribPaymentMethod_HIGHVALUECLEARINGSYSTEMHVACS = 11;
+  const int DistribPaymentMethod_NSCC = 2;
+  const int DistribPaymentMethod_HIGH_VALUE_CLEARING_SYSTEM_HVACS = 11;
+  const int DistribPaymentMethod_REINVESTINFUND = 12;
+  const int DistribPaymentMethod_REINVEST_IN_FUND = 12;
+  const int OrderHandlingInstSource_NASD_OATS = 1;
+  const int AffirmStatus_CONFIRMREJECTED = 2;
+  const int AffirmStatus_CONFIRM_REJECTED_IE_NOT_AFFIRMED = 2;
+  const int AffirmStatus_AFFIRMED = 3;
+  const int AffirmStatus_RECEIVED = 1;
+  const int OrigCustOrderCapacity_CLEARING_FIRM_TRADING_FOR_ITS_PROPRIETARY_ACCOUNT = 2;
+  const int OrigCustOrderCapacity_MEMBER_TRADING_FOR_THEIR_OWN_ACCOUNT = 1;
+  const int OrigCustOrderCapacity_MEMBER_TRADING_FOR_ANOTHER_MEMBER = 3;
+  const int OrigCustOrderCapacity_ALL_OTHER = 4;
+  const int AllocMethod_GUARANTOR = 2;
+  const int AllocMethod_AUTOMATIC = 1;
+  const int AllocMethod_MANUAL = 3;
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_SECURITY = '1';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_ISSUER_OF_UNDERLYING_SECURITY = 'C';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_SECURITY_GROUP = 'A';
+  const char MassCancelResponse_CXLORDERSSECURITYTYPE = '5';
+  const char MassCancelResponse_CXLORDERSUNDERLYINGSECURITY = '2';
+  const char MassCancelResponse_CXLORDERSTRDSESSION = '6';
+  const char MassCancelResponse_CXLALLORDERS = '7';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_MARKET = '8';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_MARKET_SEGMENT = '9';
+  const char MassCancelResponse_CXLREQREJ = '0';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_SECURITYTYPE = '5';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_TRADING_SESSION = '6';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_AN_UNDERLYING_SECURITY = '2';
+  const char MassCancelResponse_CXLORDERSSECURITY = '1';
+  const char MassCancelResponse_CXLORDERSPRODUCT = '3';
+  const char MassCancelResponse_CANCEL_ALL_ORDERS = '7';
+  const char MassCancelResponse_CANCEL_REQUEST_REJECTED = '0';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_SECURITIES_ISSUER = 'B';
+  const char MassCancelResponse_CXLORDERSCFICODE = '4';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_CFICODE = '4';
+  const char MassCancelResponse_CANCEL_ORDERS_FOR_A_PRODUCT = '3';
+  const int StreamAsgnReqType_STREAM_ASSIGNMENT_FOR_NEW_CUSTOMER = 1;
+  const int StreamAsgnReqType_STREAM_ASSIGNMENT_FOR_EXISTING_CUSTOMER = 2;
+  const char SymbolSfx_EUCP_WITH_LUMP_SUM_INTEREST_RATHER_THAN_DISCOUNT_PRICE[] = "CD";
+  const char SymbolSfx_EUCPLUMPSUMINTEREST[] = "CD";
+  const char SymbolSfx_WHENISSUED[] = "WI";
+  const char SymbolSfx_WHEN_ISSUED_FOR_A_SECURITY_TO_BE_REISSUED_UNDER_AN_OLD_CUSIP_OR_ISIN[] = "WI";
+  const char ExDestinationIDSource_PROPRIETARY = 'D';
+  const char ExDestinationIDSource_GENERALLY_ACCEPTED_MARKET_PARTICIPANT_IDENTIFIER = 'C';
+  const char ExDestinationIDSource_BIC = 'B';
+  const char ExDestinationIDSource_MIC = 'G';
+  const char ExDestinationIDSource_ISO_COUNTRY_CODE = 'E';
+  const int SecurityListRequestType_ALLSECURITIES = 4;
+  const int SecurityListRequestType_MARKETID_OR_MARKETID_PLUS_MARKETSEGMENTID = 5;
+  const int SecurityListRequestType_SECURITYTYPECFICODE = 1;
+  const int SecurityListRequestType_SYMBOL = 0;
+  const int SecurityListRequestType_SECURITYTYPE_AND_OR_CFICODE = 1;
+  const int SecurityListRequestType_TRADINGSESSIONID = 3;
+  const int SecurityListRequestType_ALL_SECURITIES = 4;
+  const int SecurityListRequestType_PRODUCT = 2;
+  const int CollAsgnReason_FORWARDCOLLATERALDEMAND = 5;
+  const int CollAsgnReason_ADVERSETAXEVENT = 7;
+  const int CollAsgnReason_MARGINDEFICIENCY = 3;
+  const int CollAsgnReason_TIME_WARNING = 2;
+  const int CollAsgnReason_TIMEWARNING = 2;
+  const int CollAsgnReason_ADVERSE_TAX_EVENT = 7;
+  const int CollAsgnReason_MARGINEXCESS = 4;
+  const int CollAsgnReason_MARGIN_DEFICIENCY = 3;
+  const int CollAsgnReason_SCHEDULED = 1;
+  const int CollAsgnReason_INITIAL = 0;
+  const int CollAsgnReason_FORWARD_COLLATERAL_DEMAND = 5;
+  const int CollAsgnReason_EVENTOFDEFAULT = 6;
+  const int CollAsgnReason_MARGIN_EXCESS = 4;
+  const int CollAsgnReason_EVENT_OF_DEFAULT = 6;
+  const int SettlPriceType_FINAL = 1;
+  const int SettlPriceType_THEORETICAL = 2;
+  const char DealingCapacity_RISKLESS_PRINCIPAL = 'R';
+  const char DealingCapacity_PRINCIPAL = 'P';
+  const char DealingCapacity_AGENT = 'A';
+  const int RateSourceType_SECONDARY = 1;
+  const int RateSourceType_PRIMARY = 0;
+  const char AggregatedBook_NO = 'N';
+  const char AggregatedBook_YES = 'Y';
+  const int PosQtyStatus_SUBMITTED = 0;
+  const int PosQtyStatus_REJECTED = 2;
+  const int PosQtyStatus_ACCEPTED = 1;
+  const char MsgType_TradingSessionStatusRequest[] = "g";
+  const char MsgType_ListStatus[] = "N";
+  const char MsgType_Email[] = "C";
+  const char MsgType_ListExecute[] = "L";
+  const char MsgType_Confirmation[] = "AK";
+  const char MsgType_NewOrderMultileg[] = "AB";
+  const char MsgType_IndicationofInterest[] = "6";
+  const char MsgType_MarketDataIncrementalRefresh[] = "X";
+  const char MsgType_TradeCaptureReport[] = "AE";
+  const char MsgType_RequestForPositionsAck[] = "AO";
+  const char MsgType_StreamAssignmentRequest[] = "CC";
+  const char MsgType_SecurityListRequest[] = "x";
+  const char MsgType_CollateralReport[] = "BA";
+  const char MsgType_PositionMaintenanceReport[] = "AM";
+  const char MsgType_PositionReport[] = "AP";
+  const char MsgType_StreamAssignmentReportACK[] = "CE";
+  const char MsgType_UserRequest[] = "BE";
+  const char MsgType_PositionMaintenanceRequest[] = "AL";
+  const char MsgType_NetworkCounterpartySystemStatusResponse[] = "BD";
+  const char MsgType_NewOrderCross[] = "s";
+  const char MsgType_AdjustedPositionReport[] = "BL";
+  const char MsgType_Logon[] = "A";
+  const char MsgType_IOI[] = "6";
+  const char MsgType_ListStrikePrice[] = "m";
+  const char MsgType_BidRequest[] = "k";
+  const char MsgType_TradingSessionStatus[] = "h";
+  const char MsgType_RegistrationInstructionsResponse[] = "p";
+  const char MsgType_Advertisement[] = "7";
+  const char MsgType_MassQuote[] = "i";
+  const char MsgType_Logout[] = "5";
+  const char MsgType_AllocationReport[] = "AS";
+  const char MsgType_SecurityDefinitionUpdateReport[] = "BP";
+  const char MsgType_ListStatusRequest[] = "M";
+  const char MsgType_BusinessMessageReject[] = "j";
+  const char MsgType_ConfirmationAck[] = "AU";
+  const char MsgType_TestRequest[] = "1";
+  const char MsgType_SecurityList[] = "y";
+  const char MsgType_ListCancelRequest[] = "K";
+  const char MsgType_News[] = "B";
+  const char MsgType_TradingSessionListUpdateReport[] = "BS";
+  const char MsgType_Heartbeat[] = "0";
+  const char MsgType_QuoteAcknowledgement[] = "b";
+  const char MsgType_AllocationReportAck[] = "AT";
+  const char MsgType_ConfirmationRequest[] = "BH";
+  const char MsgType_OrderMassActionReport[] = "BZ";
+  const char MsgType_CollateralInquiry[] = "BB";
+  const char MsgType_SecurityTypeRequest[] = "v";
+  const char MsgType_NewOrderList[] = "E";
+  const char MsgType_ExecutionAcknowledgement[] = "BN";
+  const char MsgType_TradingSessionListRequest[] = "BI";
+  const char MsgType_SecurityTypes[] = "w";
+  const char MsgType_MarketDefinition[] = "BU";
+  const char MsgType_SequenceReset[] = "4";
+  const char MsgType_CollateralResponse[] = "AZ";
+  const char MsgType_MassQuoteAcknowledgement[] = "b";
+  const char MsgType_QuoteResponse[] = "AJ";
+  const char MsgType_QuoteStatusRequest[] = "a";
+  const char MsgType_QuoteCancel[] = "Z";
+  const char MsgType_ContraryIntentionReport[] = "BO";
+  const char MsgType_PartyDetailsListReport[] = "CG";
+  const char MsgType_PartyDetailsListRequest[] = "CF";
+  const char MsgType_CrossOrderCancelRequest[] = "u";
+  const char MsgType_NewOrderSingle[] = "D";
+  const char MsgType_DerivativeSecurityListRequest[] = "z";
+  const char MsgType_CollateralRequest[] = "AX";
+  const char MsgType_UserNotification[] = "CB";
+  const char MsgType_UserResponse[] = "BF";
+  const char MsgType_DontKnowTrade[] = "Q";
+  const char MsgType_TradeCaptureReportAck[] = "AR";
+  const char MsgType_ApplicationMessageRequest[] = "BW";
+  const char MsgType_MultilegOrderCancelReplace[] = "AC";
+  const char MsgType_OrderCancelReject[] = "9";
+  const char MsgType_ExecutionReport[] = "8";
+  const char MsgType_QuoteStatusReport[] = "AI";
+  const char MsgType_ResendRequest[] = "2";
+  const char MsgType_Quote[] = "S";
+  const char MsgType_SettlementInstructionRequest[] = "AV";
+  const char MsgType_SecurityListUpdateReport[] = "BK";
+  const char MsgType_AllocationInstructionAlert[] = "BM";
+  const char MsgType_TradeCaptureReportRequestAck[] = "AQ";
+  const char MsgType_AllocationInstruction[] = "J";
+  const char MsgType_Allocation[] = "J";
+  const char MsgType_ApplicationMessageReport[] = "BY";
+  const char MsgType_RegistrationInstructions[] = "o";
+  const char MsgType_SecurityDefinition[] = "d";
+  const char MsgType_SecurityDefinitionRequest[] = "c";
+  const char MsgType_SecurityStatus[] = "f";
+  const char MsgType_DerivativeSecurityList[] = "AA";
+  const char MsgType_NetworkCounterpartySystemStatusRequest[] = "BC";
+  const char MsgType_MarketDefinitionRequest[] = "BT";
+  const char MsgType_Reject[] = "3";
+  const char MsgType_DerivativeSecurityListUpdateReport[] = "BR";
+  const char MsgType_QuoteRequestReject[] = "AG";
+  const char MsgType_OrderMassStatusRequest[] = "AF";
+  const char MsgType_ApplicationMessageRequestAck[] = "BX";
+  const char MsgType_SecurityStatusRequest[] = "e";
+  const char MsgType_AllocationACK[] = "P";
+  const char MsgType_MarketDefinitionUpdateReport[] = "BV";
+  const char MsgType_CrossOrderCancelReplaceRequest[] = "t";
+  const char MsgType_OrderMassCancelReport[] = "r";
+  const char MsgType_AssignmentReport[] = "AW";
+  const char MsgType_BidResponse[] = "l";
+  const char MsgType_RequestForPositions[] = "AN";
+  const char MsgType_SettlementObligationReport[] = "BQ";
+  const char MsgType_OrderMassCancelRequest[] = "q";
+  const char MsgType_TradingSessionList[] = "BJ";
+  const char MsgType_OrderStatusRequest[] = "H";
+  const char MsgType_CollateralAssignment[] = "AY";
+  const char MsgType_StreamAssignmentReport[] = "CD";
+  const char MsgType_OrderMassActionRequest[] = "CA";
+  const char MsgType_AllocationAck[] = "P";
+  const char MsgType_QuoteRequest[] = "R";
+  const char MsgType_CollateralInquiryAck[] = "BG";
+  const char MsgType_MarketDataSnapshotFullRefresh[] = "W";
+  const char MsgType_SettlementInstructions[] = "T";
+  const char MsgType_OrderCancelReplaceRequest[] = "G";
+  const char MsgType_TradeCaptureReportRequest[] = "AD";
+  const char MsgType_RFQRequest[] = "AH";
+  const char MsgType_OrderCancelRequest[] = "F";
+  const char MsgType_MultilegOrderCancelReplaceRequest[] = "AC";
+  const char MsgType_AllocationInstructionAck[] = "P";
+  const char MsgType_MarketDataRequest[] = "V";
+  const char MsgType_MarketDataRequestReject[] = "Y";
+  const char MultiLegReportingType_SINGLE = '1';
+  const char MultiLegReportingType_MULTILEG = '3';
+  const char MultiLegReportingType_SINGLE_SECURITY = '1';
+  const char MultiLegReportingType_MULTI_LEG_SECURITY = '3';
+  const char MultiLegReportingType_INDIVLEG = '2';
+  const char MultiLegReportingType_INDIVIDUAL_LEG_OF_A_MULTI_LEG_SECURITY = '2';
+  const char MultiLegReportingType_INDIVIDUAL_LEG_OF_A_MULTILEG_SECURITY = '2';
+  const char IDSource_EXCHANGE_SYMBOL[] = "8";
+  const char IDSource_RIC_CODE[] = "5";
+  const char IDSource_ISO_CURRENCY_CODE[] = "6";
+  const char IDSource_ISIN_NUMBER[] = "4";
+  const char IDSource_SEDOL[] = "2";
+  const char IDSource_ISO_COUNTRY_CODE[] = "7";
+  const char IDSource_CONSOLIDATED_TAPE_ASSOCIATION[] = "9";
+  const char IDSource_QUIK[] = "3";
+  const char IDSource_CUSIP[] = "1";
+  const char OrdStatus_NEW = '0';
+  const char OrdStatus_CALCULATED = 'B';
+  const char OrdStatus_PENDINGNEW = 'A';
+  const char OrdStatus_PENDING_CANCEL = '6';
+  const char OrdStatus_PARTIAL = '1';
+  const char OrdStatus_PENDING_CANCEL_REPLACE = '6';
+  const char OrdStatus_PENDING_NEW = 'A';
+  const char OrdStatus_STOPPED = '7';
+  const char OrdStatus_FILLED = '2';
+  const char OrdStatus_PENDING_REPLACE = 'E';
+  const char OrdStatus_CANCELED = '4';
+  const char OrdStatus_ACCEPTED_FOR_BIDDING = 'D';
+  const char OrdStatus_SUSPENDED = '9';
+  const char OrdStatus_DONE = '3';
+  const char OrdStatus_REJECTED = '8';
+  const char OrdStatus_PARTIALLY_FILLED = '1';
+  const char OrdStatus_EXPIRED = 'C';
+  const char OrdStatus_REPLACED = '5';
+  const char OrdStatus_DONE_FOR_DAY = '3';
+  const char OrdStatus_ACCEPTBIDDING = 'D';
+  const char OrdStatus_PENDINGREP = 'E';
+  const int CustomerOrFirm_FIRM = 1;
+  const int CustomerOrFirm_CUSTOMER = 0;
+  const int AdjustmentType_DELTA_MINUS = 2;
+  const int AdjustmentType_DELTAPLUS = 1;
+  const int AdjustmentType_DELTA_PLUS = 1;
+  const int AdjustmentType_DELTAMINUS = 2;
+  const int AdjustmentType_FINAL = 3;
+  const int AdjustmentType_PROCESSREQUESTASMARGINDISPOSITION = 0;
+  const int AdjustmentType_PROCESS_REQUEST_AS_MARGIN_DISPOSITION = 0;
+  const char AsOfIndicator_TRUE = '1';
+  const char AsOfIndicator_FALSE = '0';
+  const int MassActionScope_ALL_ORDERS_FOR_A_MARKET_SEGMENT = 9;
+  const int MassActionScope_ALL_ORDERS_FOR_A_MARKET = 8;
+  const int MassActionScope_ALL_ORDERS_FOR_AN_UNDERLYING_SECURITY = 2;
+  const int MassActionScope_ALL_ORDERS = 7;
+  const int MassActionScope_ALL_ORDERS_FOR_A_CFICODE = 4;
+  const int MassActionScope_CANCEL_FOR_ISSUER_OF_UNDERLYING_SECURITY = 12;
+  const int MassActionScope_ALL_ORDERS_FOR_A_SECURITY = 1;
+  const int MassActionScope_ALL_ORDERS_FOR_A_TRADING_SESSION = 6;
+  const int MassActionScope_CANCEL_FOR_SECURITY_ISSUER = 11;
+  const int MassActionScope_ALL_ORDERS_FOR_A_SECURITY_GROUP = 10;
+  const int MassActionScope_ALL_ORDERS_FOR_A_PRODUCT = 3;
+  const int MassActionScope_ALL_ORDERS_FOR_A_SECURITYTYPE = 5;
+  const char VenueType_PIT = 'P';
+  const char VenueType_EX_PIT = 'X';
+  const char VenueType_ELECTRONIC = 'E';
+  const int MassActionType_CANCEL_ORDERS = 3;
+  const int MassActionType_RELEASE_ORDERS_FROM_SUSPENSION = 2;
+  const int MassActionType_SUSPEND_ORDERS = 1;
+  const int PosMaintResult_SUCCESSFULCOMPLETION = 0;
+  const int PosMaintResult_SUCCESSFUL_COMPLETION = 0;
+  const int PosMaintResult_OTHER = 99;
+  const int PosMaintResult_REJECTED = 1;
+  const char IOIShares_MEDIUM[] = "M";
+  const char IOIShares_LARGE[] = "L";
+  const char IOIShares_SMALL[] = "S";
+  const int PegOffsetType_PRICE = 0;
+  const int PegOffsetType_BASISPOINTS = 1;
+  const int PegOffsetType_PRICE_TIER = 3;
+  const int PegOffsetType_TICKS = 2;
+  const int PegOffsetType_PRICETIERLEVEL = 3;
+  const int PegOffsetType_BASIS_POINTS = 1;
+  const int MassCancelRejectReason_INVALID_OR_UNKOWN_MARKET_SEGMENT = 8;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITY = 1;
+  const int MassCancelRejectReason_INVALIDSECURITY = 1;
+  const int MassCancelRejectReason_MASS_CANCEL_NOT_SUPPORTED = 0;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITY_GROUP = 9;
+  const int MassCancelRejectReason_INVALID_OR_UNKOWN_UNDERLYING_SECURITY = 2;
+  const int MassCancelRejectReason_INVALIDPRODUCT = 3;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_ISSUER_OF_UNDERLYING_SECURITY = 11;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITYTYPE = 5;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_CFICODE = 4;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_TRADING_SESSION = 6;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_MARKET = 7;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITY_TYPE = 5;
+  const int MassCancelRejectReason_INVALIDUNDERLYING = 2;
+  const int MassCancelRejectReason_OTHER = 99;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_SECURITY_ISSUER = 10;
+  const int MassCancelRejectReason_INVALIDCFICODE = 4;
+  const int MassCancelRejectReason_INVALIDSECURITYTYPE = 5;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_PRODUCT = 3;
+  const int MassCancelRejectReason_INVALID_OR_UNKNOWN_UNDERLYING = 2;
+  const int MassCancelRejectReason_INVALIDTRDSESSION = 6;
+  const int MassCancelRejectReason_MASSCXLNOTSUPPORTED = 0;
+  const int ResponseTransportType_OUTOFBAND = 1;
+  const int ResponseTransportType_INBAND = 0;
+  const int ResponseTransportType_OUT_OF_BAND = 1;
+  const int TradSesStatusRejReason_UNKNOWN_OR_INVALID_TRADINGSESSIONID = 1;
+  const int TradSesStatusRejReason_UNKNOWNTRADINGSESSIONID = 1;
+  const int TradSesStatusRejReason_OTHER = 99;
+  const int TrdRegTimestampType_EXECUTION_TIME = 1;
+  const int TrdRegTimestampType_BROKEREXECUTION = 5;
+  const int TrdRegTimestampType_BROKERRECEIPT = 4;
+  const int TrdRegTimestampType_TIMEIN = 2;
+  const int TrdRegTimestampType_TIME_IN = 2;
+  const int TrdRegTimestampType_TIMEOUT = 3;
+  const int TrdRegTimestampType_SUBMISSION_TO_CLEARING = 7;
+  const int TrdRegTimestampType_BROKER_RECEIPT = 4;
+  const int TrdRegTimestampType_DESK_RECEIPT = 6;
+  const int TrdRegTimestampType_EXECUTIONTIME = 1;
+  const int TrdRegTimestampType_BROKER_EXECUTION = 5;
+  const int TrdRegTimestampType_TIME_OUT = 3;
+  const char ApplVerID_FIX50SP1[] = "8";
+  const char ApplVerID_FIX27[] = "0";
+  const char ApplVerID_FIX50SP2[] = "9";
+  const char ApplVerID_FIX50[] = "7";
+  const char ApplVerID_FIX40[] = "2";
+  const char ApplVerID_FIX41[] = "3";
+  const char ApplVerID_FIX30[] = "1";
+  const char ApplVerID_FIX42[] = "4";
+  const char ApplVerID_FIX43[] = "5";
+  const char ApplVerID_FIX44[] = "6";
+  const char HandlInst_MANUAL_ORDER_BEST_EXECUTION = '3';
+  const char HandlInst_AUTOEXECPUB = '2';
+  const char HandlInst_AUTOMATED_EXECUTION_ORDER_PRIVATE_NO_BROKER_INTERVENTION = '1';
+  const char HandlInst_AUTOEXECPRIV = '1';
+  const char HandlInst_AUTOMATED_EXECUTION_ORDER_PUBLIC_BROKER_INTERVENTION_OK = '2';
+  const char HandlInst_MANUAL = '3';
+  const char TradingSessionSubID_POST_TRADING[] = "5";
+  const char TradingSessionSubID_INTRADAY_AUCTION[] = "6";
+  const char TradingSessionSubID_PRE_TRADING[] = "1";
+  const char TradingSessionSubID_QUIESCENT[] = "7";
+  const char TradingSessionSubID_3[] = "3";
+  const char TradingSessionSubID_OPENING_OR_OPENING_AUCTION[] = "2";
+  const char TradingSessionSubID_CLOSING_OR_CLOSING_AUCTION[] = "4";
+  const char MDEntryType_SWAP_VALUE_FACTOR = 'S';
+  const char MDEntryType_OPEN_INTEREST = 'C';
+  const char MDEntryType_COMPOSITE_UNDERLYING_PRICE = 'D';
+  const char MDEntryType_SESSION_HIGH_BID = 'N';
+  const char MDEntryType_INDEXVALUE = '3';
+  const char MDEntryType_OPENINTEREST = 'C';
+  const char MDEntryType_CLOSING_PRICE = '5';
+  const char MDEntryType_PRIOR_SETTLE_PRICE = 'M';
+  const char MDEntryType_TRADING_SESSION_VWAP_PRICE = '9';
+  const char MDEntryType_TRADING_SESSION_LOW_PRICE = '8';
+  const char MDEntryType_SETTLE_HIGH_PRICE = 'K';
+  const char MDEntryType_IMBALANCE = 'A';
+  const char MDEntryType_FIXING_PRICE = 'W';
+  const char MDEntryType_CASH_RATE = 'X';
+  const char MDEntryType_CLOSING = '5';
+  const char MDEntryType_OPENING = '4';
+  const char MDEntryType_OPENING_PRICE = '4';
+  const char MDEntryType_TRADINGHIGH = '7';
+  const char MDEntryType_TRADEVOLUME = 'B';
+  const char MDEntryType_TRADE = '2';
+  const char MDEntryType_CUMULATIVE_VALUE_ADJUSTMENT_FOR_SHORT_POSITIONS = 'V';
+  const char MDEntryType_SIMULATED_SELL_PRICE = 'E';
+  const char MDEntryType_EMPTY_BOOK = 'J';
+  const char MDEntryType_AUCTION_CLEARING_PRICE = 'Q';
+  const char MDEntryType_BID = '0';
+  const char MDEntryType_RECOVERY_RATE_FOR_SHORT = 'a';
+  const char MDEntryType_SIMULATED_BUY_PRICE = 'F';
+  const char MDEntryType_EARLY_PRICES = 'P';
+  const char MDEntryType_TRADINGLOW = '8';
+  const char MDEntryType_TRADING_SESSION_HIGH_PRICE = '7';
+  const char MDEntryType_INDEX_VALUE = '3';
+  const char MDEntryType_RECOVERY_RATE_FOR_LONG = 'Z';
+  const char MDEntryType_DAILY_VALUE_ADJUSTMENT_FOR_LONG_POSITIONS = 'R';
+  const char MDEntryType_MID_PRICE = 'H';
+  const char MDEntryType_SETTLEMENT = '6';
+  const char MDEntryType_RECOVERY_RATE = 'Y';
+  const char MDEntryType_CUMULATIVE_VALUE_ADJUSTMENT_FOR_LONG_POSITIONS = 'T';
+  const char MDEntryType_DAILY_VALUE_ADJUSTMENT_FOR_SHORT_POSITIONS = 'U';
+  const char MDEntryType_TRADE_VOLUME = 'B';
+  const char MDEntryType_MARGIN_RATE = 'G';
+  const char MDEntryType_SETTLE_LOW_PRICE = 'L';
+  const char MDEntryType_SESSION_LOW_OFFER = 'O';
+  const char MDEntryType_TRADINGVWAP = '9';
+  const char MDEntryType_SETTLEMENT_PRICE = '6';
+  const char MDEntryType_OFFER = '1';
+  const int PegMoveType_FLOATING = 0;
+  const int PegMoveType_FIXED = 1;
+  const int AvgPxIndicator_NOAVERAGEPRICING = 0;
+  const int AvgPxIndicator_NO_AVERAGE_PRICING = 0;
+  const int AvgPxIndicator_LASTTRADEAVERAGEPRICEGROUP = 2;
+  const int AvgPxIndicator_TRADE_IS_PART_OF_AN_AVERAGE_PRICE_GROUP_IDENTIFIED_BY_THE_TRADELINKID = 1;
+  const int AvgPxIndicator_TRADEAVERAGEPRICEGROUP = 1;
+  const int AvgPxIndicator_LAST_TRADE_IS_THE_AVERAGE_PRICE_GROUP_IDENTIFIED_BY_THE_TRADELINKID = 2;
+  const char CancellationRights_NO_WAIVER_AGREEMENT = 'M';
+  const char CancellationRights_NO_M = 'M';
+  const char CancellationRights_NO_N = 'N';
+  const char CancellationRights_NOINSTIT = 'O';
+  const char CancellationRights_NO_INSTITUTIONAL = 'O';
+  const char CancellationRights_YES = 'Y';
+  const char CancellationRights_NO_O = 'O';
+  const char CancellationRights_NOEXECONLY = 'N';
+  const char CancellationRights_NO_EXECUTION_ONLY = 'N';
+  const char CancellationRights_NOWAIVER = 'M';
+  const char ExecPriceType_CREATIONPRICEADJAMT = 'E';
+  const char ExecPriceType_CREATION_PRICE = 'C';
+  const char ExecPriceType_CREATIONPRICE = 'C';
+  const char ExecPriceType_SINGLEPRICE = 'S';
+  const char ExecPriceType_CREATION_PRICE_PLUS_ADJUSTMENT_PERCENT = 'D';
+  const char ExecPriceType_OFFERPRICE = 'O';
+  const char ExecPriceType_BIDPRICE = 'B';
+  const char ExecPriceType_OFFER_PRICE_MINUS_ADJUSTMENT = 'P';
+  const char ExecPriceType_CREATIONPRICEADJPCT = 'D';
+  const char ExecPriceType_OFFER_PRICE_MINUS_ADJUSTMENT_AMOUNT = 'Q';
+  const char ExecPriceType_OFFERPRICEMINUSADJAMT = 'Q';
+  const char ExecPriceType_CREATION_PRICE_PLUS_ADJUSTMENT_AMOUNT = 'E';
+  const char ExecPriceType_OFFER_PRICE_MINUS_ADJUSTMENT_PERCENT = 'P';
+  const char ExecPriceType_OFFERPRICEMINUSADJPCT = 'P';
+  const char ExecPriceType_BID_PRICE = 'B';
+  const char ExecPriceType_SINGLE_PRICE = 'S';
+  const char ExecPriceType_CREATION_PRICE_PLUS_ADJUSTMENT = 'D';
+  const char ExecPriceType_OFFER_PRICE = 'O';
+  const int AllocSettlInstType_PHONEFORINSTRUCTIONS = 4;
+  const int AllocSettlInstType_SSIDBIDSPROVIDED = 3;
+  const int AllocSettlInstType_FULLDETAILSPROVIDED = 2;
+  const int AllocSettlInstType_USEDEFAULTINSTRUCTIONS = 0;
+  const int AllocSettlInstType_SSI_DB_IDS_PROVIDED = 3;
+  const int AllocSettlInstType_PHONE_FOR_INSTRUCTIONS = 4;
+  const int AllocSettlInstType_DERIVE_FROM_PARAMETERS_PROVIDED = 1;
+  const int AllocSettlInstType_FULL_DETAILS_PROVIDED = 2;
+  const int AllocSettlInstType_USE_DEFAULT_INSTRUCTIONS = 0;
+  const int AllocSettlInstType_DERIVEFROMPARAMETERSPROVIDED = 1;
+  const int StatsType_AVERAGE_PRICE = 3;
+  const int StatsType_HIGH = 2;
+  const int StatsType_EXCHANGE_LAST = 1;
+  const int StatsType_TURNOVER = 4;
+  const int TradSesMode_SIMULATED = 2;
+  const int TradSesMode_PRODUCTION = 3;
+  const int TradSesMode_TESTING = 1;
+  const char SettlInstSource_INSTITUTIONS_INSTRUCTIONS = '2';
+  const char SettlInstSource_BROKERS_INSTRUCTIONS = '1';
+  const char SettlInstSource_INVESTORCIV = '3';
+  const char SettlInstSource_INVESTOR = '3';
+  const char SettlInstSource_INSTINSTR = '2';
+  const char SettlInstSource_BROKERINSTR = '1';
+  const int ExpType_DIFFERENCE = 5;
+  const int ExpType_FINAL_WILL_BE_EXERCISED = 3;
+  const int ExpType_NON_AUTO_EXERCISE = 2;
+  const int ExpType_CONTRARY_INTENTION = 4;
+  const int ExpType_AUTO_EXERCISE = 1;
+  const char SettlInstTransType_REPLACE = 'R';
+  const char SettlInstTransType_NEW = 'N';
+  const char SettlInstTransType_RESTATE = 'T';
+  const char SettlInstTransType_CANCEL = 'C';
+  const int TradeRequestResult_TRADEREQUESTTYPENOTSUPPORTED = 8;
+  const int TradeRequestResult_INVALIDORUNKNOWNINSTRUMENT = 1;
+  const int TradeRequestResult_INVALID_DESTINATION_REQUESTED = 5;
+  const int TradeRequestResult_UNAUTHORIZED_ROR_TRADE_CAPTURE_REPORT_REQUEST = 9;
+  const int TradeRequestResult_INVALIDTRANSPORTTYPEREQUESTED = 4;
+  const int TradeRequestResult_INVALIDPARTIES = 3;
+  const int TradeRequestResult_INVALIDDESTINATIONREQUESTED = 5;
+  const int TradeRequestResult_SUCCESSFUL = 0;
+  const int TradeRequestResult_INVALID_OR_UNKNOWN_INSTRUMENT = 1;
+  const int TradeRequestResult_OTHER = 99;
+  const int TradeRequestResult_INVALID_TYPE_OF_TRADE_REQUESTED = 2;
+  const int TradeRequestResult_INVALID_PARTIES = 3;
+  const int TradeRequestResult_UNAUTHORIZEDFORTRADECAPTUREREPORTREQUEST = 9;
+  const int TradeRequestResult_NOT_AUTHORIZED = 9;
+  const int TradeRequestResult_INVALID_TRANSPORT_TYPE_REQUESTED = 4;
+  const int TradeRequestResult_INVALIDTYPEOFTRADEREQUESTED = 2;
+  const int TradeRequestResult_TRADEREQUESTTYPE_NOT_SUPPORTED = 8;
+  const char TestMessageIndicator_NO = 'N';
+  const char TestMessageIndicator_YES = 'Y';
+  const int ExpirationCycle_TRADING_ELIGIBILITY_EXPIRATION_SPECIFIED_IN_THE_DATE_AND_TIME_FIELDS_EVENTDATE = 2;
+  const int ExpirationCycle_EXPIREONTRADINGSESSIONOPEN = 1;
+  const int ExpirationCycle_EXPIRE_ON_TRADING_SESSION_CLOSE = 0;
+  const int ExpirationCycle_EXPIRE_ON_TRADING_SESSION_OPEN = 1;
+  const int ExpirationCycle_EXPIREONTRADINGSESSIONCLOSE = 0;
+  const int AllocCancReplaceReason_ORIGINALDETAILSINCORRECT = 1;
+  const int AllocCancReplaceReason_CHANGE_IN_UNDERLYING_ORDER_DETAILS = 2;
+  const int AllocCancReplaceReason_OTHER = 99;
+  const int AllocCancReplaceReason_ORIGINAL_DETAILS_INCOMPLETE_INCORRECT = 1;
+  const int AllocCancReplaceReason_CHANGEINUNDERLYINGORDERDETAILS = 2;
+  const int CxlRejReason_DUPLICATE_CLORDID = 6;
+  const int CxlRejReason_UNABLETOPROCESS = 4;
+  const int CxlRejReason_PRICE_EXCEEDS_CURRENT_PRICE = 7;
+  const int CxlRejReason_DUPCLORDID = 6;
+  const int CxlRejReason_DUPLICATE_CLORDID_RECEIVED = 6;
+  const int CxlRejReason_UNKNOWN_ORDER = 1;
+  const int CxlRejReason_TOO_LATE_TO_CANCEL = 0;
+  const int CxlRejReason_TOOLATE = 0;
+  const int CxlRejReason_ORIGORDMODTIME = 5;
+  const int CxlRejReason_INVALID_PRICE_INCREMENT = 18;
+  const int CxlRejReason_BROKEROPT = 2;
+  const int CxlRejReason_ALREADYPENDINGCXL = 3;
+  const int CxlRejReason_OTHER = 99;
+  const int CxlRejReason_BROKER = 2;
+  const int CxlRejReason_BROKER_OPTION = 2;
+  const int CxlRejReason_UNABLE_TO_PROCESS_ORDER_MASS_CANCEL_REQUEST = 4;
+  const int CxlRejReason_ORDER_ALREADY_IN_PENDING_CANCEL_OR_PENDING_REPLACE_STATUS = 3;
+  const int CxlRejReason_PRICE_EXCEEDS_CURRENT_PRICE_BAND = 8;
+  const int CxlRejReason_ORIGORDMODTIMEMISMATCH = 5;
+  const int CxlRejReason_ORIGORDMODTIME_DID_NOT_MATCH_LAST_TRANSACTTIME_OF_ORDER = 5;
+  const int CxlRejReason_UNKNOWN = 1;
+  const int RespondentType_SPECIFIED_MARKET_PARTICIPANTS = 2;
+  const int RespondentType_ALL_MARKET_MAKERS = 3;
+  const int RespondentType_ALL_MARKET_PARTICIPANTS = 1;
+  const int RespondentType_PRIMARY_MARKET_MAKER = 4;
+  const char DKReason_NO_MATCHING_ORDER = 'D';
+  const char DKReason_UNKNOWNSYMBOL = 'A';
+  const char DKReason_PRICE_EXCEEDS_LIMIT = 'E';
+  const char DKReason_QUANTITYEXCEEDSORDER = 'C';
+  const char DKReason_QUANTITY_EXCEEDS_ORDER = 'C';
+  const char DKReason_UNKNOWN_SYMBOL = 'A';
+  const char DKReason_OTHER = 'Z';
+  const char DKReason_WRONGSIDE = 'B';
+  const char DKReason_CALCULATIONDIFFERENCE = 'F';
+  const char DKReason_PRICEEXCEEDSLIMIT = 'E';
+  const char DKReason_WRONG_SIDE = 'B';
+  const char DKReason_CALCULATION_DIFFERENCE = 'F';
+  const char DKReason_NOMATCH = 'D';
+  const char PositionEffect_DEFAULT = 'D';
+  const char PositionEffect_CLOSE = 'C';
+  const char PositionEffect_CLOSE_BUT_NOTIFY_ON_OPEN = 'N';
+  const char PositionEffect_OPEN = 'O';
+  const char PositionEffect_FIFO = 'F';
+  const char PositionEffect_ROLLED = 'R';
+  const char TriggerAction_ACTIVATE = '1';
+  const char TriggerAction_MODIFY = '2';
+  const char TriggerAction_CANCEL = '3';
+  const int ClearingInstruction_BILATERALNETTINGONLY = 2;
+  const int ClearingInstruction_SPECIALTRADE = 4;
+  const int ClearingInstruction_EXCLUDE_FROM_ALL_NETTING = 1;
+  const int ClearingInstruction_AUTOMATIC_POSTING_MODE = 9;
+  const int ClearingInstruction_EXCLEARING = 3;
+  const int ClearingInstruction_MULTILATERAL_NETTING = 5;
+  const int ClearingInstruction_CLEARAGAINSTCENTRALCOUNTERPARTY = 6;
+  const int ClearingInstruction_EXCLUDE_FROM_CENTRAL_COUNTERPARTY = 7;
+  const int ClearingInstruction_AUTOMATIC_GIVE_UP_MODE = 10;
+  const int ClearingInstruction_CUSTOMER_TRADE = 12;
+  const int ClearingInstruction_AUTOMATICPOSTINGMODETRADEPOSTINGTOTHEPOSITIONACCOUNTNUMBERSPECIFIED = 9;
+  const int ClearingInstruction_EX_CLEARING = 3;
+  const int ClearingInstruction_QUALIFIEDSERVICEREPRESENTATIVEQSR = 11;
+  const int ClearingInstruction_MULTILATERALNETTING = 5;
+  const int ClearingInstruction_PROCESSNORMALLY = 0;
+  const int ClearingInstruction_EXCLUDEFROMALLNETTING = 1;
+  const int ClearingInstruction_SELFCLEARING = 13;
+  const int ClearingInstruction_CLEAR_AGAINST_CENTRAL_COUNTERPARTY = 6;
+  const int ClearingInstruction_BILATERAL_NETTING_ONLY = 2;
+  const int ClearingInstruction_EXCLUDEFROMCENTRALCOUNTERPARTY = 7;
+  const int ClearingInstruction_MANUALMODEPREPOSTINGANDORPREGIVEUP = 8;
+  const int ClearingInstruction_CUSTOMERTRADE = 12;
+  const int ClearingInstruction_PROCESS_NORMALLY = 0;
+  const int ClearingInstruction_SPECIAL_TRADE = 4;
+  const int ClearingInstruction_MANUAL_MODE = 8;
+  const int ClearingInstruction_QUALIFIED_SERVICE_REPRESENTATIVE_QSR = 11;
+  const int ClearingInstruction_AUTOMATICGIVEUPMODETRADEGIVEUPTOTHEGIVEUPDESTINATIONNUMBERSPECIFIED = 10;
+  const int ClearingInstruction_SELF_CLEARING = 13;
+  const char OpenCloseSettlFlag_SESSION_OPEN = '1';
+  const char OpenCloseSettlFlag_EXPECTED_ENTRY = '3';
+  const char OpenCloseSettlFlag_THEORETICALPRICE = '5';
+  const char OpenCloseSettlFlag_ENTRYFROMPREVBUSINESSDAY = '4';
+  const char OpenCloseSettlFlag_DAILY_OPEN = '0';
+  const char OpenCloseSettlFlag_DAILYOPEN = '0';
+  const char OpenCloseSettlFlag_THEORETICAL_PRICE_VALUE = '5';
+  const char OpenCloseSettlFlag_DELIVERY_SETTLEMENT_ENTRY = '2';
+  const char OpenCloseSettlFlag_ENTRY_FROM_PREVIOUS_BUSINESS_DAY = '4';
+  const char OpenCloseSettlFlag_DELIVERYSETTLEMENT = '2';
+  const char OpenCloseSettlFlag_SESSIONOPEN = '1';
+  const char OpenCloseSettlFlag_EXPECTEDENTRY = '3';
+  const int DiscretionMoveType_FLOATING = 0;
+  const int DiscretionMoveType_FIXED = 1;
+  const int MDUpdateType_INCREMENTAL_REFRESH = 1;
+  const int MDUpdateType_FULL_REFRESH = 0;
+  const int MDUpdateType_FULL = 0;
+  const int MDUpdateType_INCREMENTAL = 1;
+  const char TickDirection_MINUS_TICK = '2';
+  const char TickDirection_ZERO_PLUS_TICK = '1';
+  const char TickDirection_ZERO_MINUS_TICK = '3';
+  const char TickDirection_PLUS_TICK = '0';
+  const char TickDirection_PLUS = '0';
+  const char TickDirection_ZEROPLUS = '1';
+  const char TickDirection_MINUS = '2';
+  const char TickDirection_ZEROMINUS = '3';
+  const char YieldType_MARK_TO_MARKET_YIELD[] = "MARK";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_QUARTER[] = "LASTQUARTER";
+  const char YieldType_YIELD_TO_MATURITY[] = "MATURITY";
+  const char YieldType_YIELDTOTENDERDATE[] = "TENDER";
+  const char YieldType_PREVIOUS_CLOSE_YIELD[] = "PREVCLOSE";
+  const char YieldType_COMPOUND_YIELD_THE_YIELD_OF_CERTAIN_JAPANESE_BONDS_BASED_ON_ITS_PRICE_CERTAIN_JAPANESE_BONDS_HAVE_IRREGULAR_FIRST_OR_LAST_COUPONS_AND_THE_YIELD_IS_CALCULATED_COMPOUND_FOR_THESE_IRREGULAR_PERIODS[] = "COMPOUND";
+  const char YieldType_YIELDTOSHORTESTAVERAGELIFE[] = "SHORTAVGLIFE";
+  const char YieldType_YIELD_AT_ISSUE[] = "ATISSUE";
+  const char YieldType_YIELD_TO_NEXT_REFUND[] = "NEXTREFUND";
+  const char YieldType_YIELDATISSUE[] = "ATISSUE";
+  const char YieldType_CLOSINGYIELD[] = "CLOSE";
+  const char YieldType_GVNTEQUIVALENTYIELD[] = "GOVTEQUIV";
+  const char YieldType_ANNUALYIELD[] = "ANNUAL";
+  const char YieldType_AFTER_TAX_YIELD[] = "AFTERTAX";
+  const char YieldType_GVNT_EQUIVALENT_YIELD[] = "GOVTEQUIV";
+  const char YieldType_YIELDCHANGESINCECLOSE[] = "CHANGE";
+  const char YieldType_YIELDTOMATURITY[] = "MATURITY";
+  const char YieldType_YIELD_TO_SHORTEST_AVERAGE_LIFE_SAME_AS_AVGLIFE_ABOVE[] = "SHORTAVGLIFE";
+  const char YieldType_YIELD_CHANGE_SINCE_CLOSE_THE_CHANGE_IN_THE_YIELD_SINCE_THE_PREVIOUS_DAYS_CLOSING_YIELD[] = "CHANGE";
+  const char YieldType_SEMI[] = "SEMIANNUAL";
+  const char YieldType_CURRENT_YIELD_ANNUAL_INTEREST_ON_A_BOND_DIVIDED_BY_THE_MARKET_VALUE_THE_ACTUAL_INCOME_RATE_OF_RETURN_AS_OPPOSED_TO_THE_COUPON_RATE_EXPRESSED_AS_A_PERCENTAGE[] = "CURRENT";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_YEAR[] = "LASTYEAR";
+  const char YieldType_YIELD_TO_NEXT_CALL[] = "CALL";
+  const char YieldType_YIELD_CHANGE_SINCE_CLOSE[] = "CHANGE";
+  const char YieldType_PROCEEDS_YIELD[] = "PROCEEDS";
+  const char YieldType_YIELD_TO_MATURITY_THE_YIELD_OF_A_BOND_TO_ITS_MATURITY_DATE[] = "MATURITY";
+  const char YieldType_TAX_EQUIVALENT_YIELD_THE_AFTER_TAX_YIELD_GROSSED_UP_BY_THE_MAXIMUM_FEDERAL_TAX_RATE_OF_396_FOR_COMPARISON_TO_TAXABLE_YIELDS[] = "TAXEQUIV";
+  const char YieldType_INVERSE_FLOATER_BOND_YIELD_INVERSE_FLOATER_SEMI_ANNUAL_BOND_EQUIVALENT_RATE[] = "INVERSEFLOATER";
+  const char YieldType_CURRENT_YIELD[] = "CURRENT";
+  const char YieldType_SIMPLEYIELD[] = "SIMPLE";
+  const char YieldType_TRUEGROSSYIELD[] = "GROSS";
+  const char YieldType_COMPOUND_YIELD[] = "COMPOUND";
+  const char YieldType_CLOSINGYIELDMOSTRECENTYEAR[] = "LASTYEAR";
+  const char YieldType_BOOK_YIELD_THE_YIELD_OF_A_SECURITY_CALCULATED_BY_USING_ITS_BOOK_VALUE_INSTEAD_OF_THE_CURRENT_MARKET_PRICE_THIS_TERM_IS_TYPICALLY_USED_IN_THE_US_DOMESTIC_MARKET[] = "BOOK";
+  const char YieldType_YIELD_TO_NEXT_PUT_THE_YIELD_TO_THE_DATE_AT_WHICH_THE_BOND_HOLDER_CAN_NEXT_PUT_THE_BOND_TO_THE_ISSUER[] = "PUT";
+  const char YieldType_GOVERNMENT_EQUIVALENT_YIELD_ASK_YIELD_BASED_ON_SEMI_ANNUAL_COUPONS_COMPOUNDING_IN_ALL_PERIODS_AND_ACTUAL_ACTUAL_CALENDAR[] = "GOVTEQUIV";
+  const char YieldType_YIELD_TO_TENDER_DATE_THE_YIELD_ON_A_MUNICIPAL_BOND_TO_ITS_MANDATORY_TENDER_DATE[] = "TENDER";
+  const char YieldType_YIELD_TO_AVG_MATURITY[] = "AVGMATURITY";
+  const char YieldType_YIELD_TO_TENDER_DATE[] = "TENDER";
+  const char YieldType_PROCEEDSYIELD[] = "PROCEEDS";
+  const char YieldType_OPEN_AVERAGE_YIELD_THE_AVERAGE_YIELD_OF_THE_RESPECTIVE_SECURITIES_IN_THE_PORTFOLIO[] = "OPENAVG";
+  const char YieldType_ANNUAL_YIELD[] = "ANNUAL";
+  const char YieldType_YIELD_TO_WORST[] = "WORST";
+  const char YieldType_BOOK_YIELD[] = "BOOK";
+  const char YieldType_YIELD_TO_NEXT_PUT[] = "PUT";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_MONTH_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE_AS_OF_THE_MOST_RECENT_MONTHS_END[] = "LASTMONTH";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_YEAR_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE_AS_OF_THE_MOST_RECENT_YEARS_END[] = "LASTYEAR";
+  const char YieldType_OPENAVERAGEYIELD[] = "OPENAVG";
+  const char YieldType_TRUE_YIELD[] = "TRUE";
+  const char YieldType_TAX_EQUIVALENT_YIELD[] = "TAXEQUIV";
+  const char YieldType_TRUE_GROSS_YIELD[] = "GROSS";
+  const char YieldType_INVERSE_FLOATER_BOND_YIELD[] = "INVERSEFLOATER";
+  const char YieldType_TRUE_YIELD_THE_YIELD_CALCULATED_WITH_COUPON_DATES_MOVED_FROM_A_WEEKEND_OR_HOLIDAY_TO_THE_NEXT_VALID_SETTLEMENT_DATE[] = "TRUE";
+  const char YieldType_SEMI_ANNUAL_YIELD_THE_YIELD_OF_A_BOND_WHOSE_COUPON_PAYMENTS_ARE_REINVESTED_SEMI_ANNUALLY[] = "SEMIANNUAL";
+  const char YieldType_AFTERTAXYIELD[] = "AFTERTAX";
+  const char YieldType_CLOSING_YIELD_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE[] = "CLOSE";
+  const char YieldType_YIELDTOWORSTCONVENTION[] = "WORST";
+  const char YieldType_PREVIOUS_CLOSE_YIELD_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE_1_DAY_AGO[] = "PREVCLOSE";
+  const char YieldType_COMPOUNDYIELD[] = "COMPOUND";
+  const char YieldType_YIELD_VALUE_OF_1_32_THE_AMOUNT_THAT_THE_YIELD_WILL_CHANGE_FOR_A_1_32ND_CHANGE_IN_PRICE[] = "VALUE1/32";
+  const char YieldType_YIELD_TO_LONGEST_AVERAGE[] = "LONGEST";
+  const char YieldType_PREVIOUSCLOSEYIELD[] = "PREVCLOSE";
+  const char YieldType_CLOSINGYIELDMOSTRECENTMONTH[] = "LASTMONTH";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_MONTH[] = "LASTMONTH";
+  const char YieldType_YIELD_TO_AVERAGE_LIFE_THE_YIELD_ASSUMING_THAT_ALL_SINKS[] = "AVGLIFE";
+  const char YieldType_CLOSING_YIELD_MOST_RECENT_QUARTER_THE_YIELD_OF_A_BOND_BASED_ON_THE_CLOSING_PRICE_AS_OF_THE_MOST_RECENT_QUARTERS_END[] = "LASTQUARTER";
+  const char YieldType_YIELD_TO_SHORTEST_AVERAGE[] = "SHORTEST";
+  const char YieldType_TAXEQUIVALENTYIELD[] = "TAXEQUIV";
+  const char YieldType_MOSTRECENTCLOSINGYIELD[] = "LASTCLOSE";
+  const char YieldType_MARKTOMARKETYIELD[] = "MARK";
+  const char YieldType_CURRENTYIELD[] = "CURRENT";
+  const char YieldType_OPEN_AVERAGE_YIELD[] = "OPENAVG";
+  const char YieldType_TRUE_GROSS_YIELD_YIELD_CALCULATED_USING_THE_PRICE_INCLUDING_ACCRUED_INTEREST_WHERE_COUPON_DATES_ARE_MOVED_FROM_HOLIDAYS_AND_WEEKENDS_TO_THE_NEXT_TRADING_DAY[] = "GROSS";
+  const char YieldType_YIELD_WITH_INFLATION_ASSUMPTION[] = "INFLATION";
+  const char YieldType_YIELDTONEXTREFUNDSINKING[] = "NEXTREFUND";
+  const char YieldType_PROCEEDS_YIELD_THE_CD_EQUIVALENT_YIELD_WHEN_THE_REMAINING_TIME_TO_MATURITY_IS_LESS_THAN_TWO_YEARS[] = "PROCEEDS";
+  const char YieldType_YIELD_TO_LONGEST_AVERAGE_LIFE_THE_YIELD_ASSUMING_ONLY_MANDATORY_SINKS_ARE_TAKEN_THIS_RESULTS_IN_A_LOWER_PAYDOWN_OF_DEBT_THE_YIELD_IS_THEN_CALCULATED_TO_THE_FINAL_PAYMENT_DATE[] = "LONGAVGLIFE";
+  const char YieldType_MARK_TO_MARKET_YIELD_AN_ADJUSTMENT_IN_THE_VALUATION_OF_A_SECURITIES_PORTFOLIO_TO_REFLECT_THE_CURRENT_MARKET_VALUES_OF_THE_RESPECTIVE_SECURITIES_IN_THE_PORTFOLIO[] = "MARK";
+  const char YieldType_SIMPLE_YIELD[] = "SIMPLE";
+  const char YieldType_YIELD_TO_AVERAGE_MATURITY[] = "AVGMATURITY";
+  const char YieldType_YIELD_TO_WORST_CONVENTION_THE_LOWEST_YIELD_TO_ALL_POSSIBLE_REDEMPTION_DATE_SCENARIOS[] = "WORST";
+  const char YieldType_YIELD_TO_NEXT_CALL_THE_YIELD_OF_A_BOND_TO_THE_NEXT_POSSIBLE_CALL_DATE[] = "CALL";
+  const char YieldType_YIELDTOAVGMATURITY[] = "AVGMATURITY";
+  const char YieldType_YIELDTOLONGESTAVERAGELIFE[] = "LONGAVGLIFE";
+  const char YieldType_ANNUAL_YIELD_THE_ANNUAL_INTEREST_OR_DIVIDEND_INCOME_AN_INVESTMENT_EARNS_EXPRESSED_AS_A_PERCENTAGE_OF_THE_INVESTMENTS_TOTAL_VALUE[] = "ANNUAL";
+  const char YieldType_SEMI_ANNUAL_YIELD[] = "SEMIANNUAL";
+  const char YieldType_MOST_RECENT_CLOSING_YIELD[] = "LASTCLOSE";
+  const char YieldType_YIELD_TO_SHORTEST_AVERAGE_LIFE[] = "SHORTAVGLIFE";
+  const char YieldType_CLOSING_YIELD[] = "CLOSE";
+  const char YieldType_YIELDINFLATIONASSUMPTION[] = "INFLATION";
+  const char YieldType_YIELD_WITH_INFLATION_ASSUMPTION_BASED_ON_PRICE_THE_RETURN_AN_INVESTOR_WOULD_REQUIRE_ON_A_NORMAL_BOND_THAT_WOULD_MAKE_THE_REAL_RETURN_EQUAL_TO_THAT_OF_THE_INFLATION_INDEXED_BOND_ASSUMING_A_CONSTANT_INFLATION_RATE[] = "INFLATION";
+  const char YieldType_TRUEYIELD[] = "TRUE";
+  const char YieldType_CLOSINGYIELDMOSTRECENTQUARTER[] = "LASTQUARTER";
+  const char YieldType_YIELD_VALUE_OF_1_32[] = "VALUE1_32";
+  const char YieldType_YIELD_TO_LONGEST_AVERAGE_LIFE[] = "LONGAVGLIFE";
+  const char YieldType_INVFLOATERBONDYIELD[] = "INVERSEFLOATER";
+  const char YieldType_MOST_RECENT_CLOSING_YIELD_THE_LAST_AVAILABLE_YIELD_STORED_IN_HISTORY_COMPUTED_USING_PRICE[] = "LASTCLOSE";
+  const char YieldType_YIELDTONEXTPUT[] = "PUT";
+  const char YieldType_YIELDTONEXTCALL[] = "CALL";
+  const char YieldType_SIMPLE_YIELD_THE_YIELD_OF_A_BOND_ASSUMING_NO_REINVESTMENT_OF_COUPON_PAYMENTS[] = "SIMPLE";
+  const char YieldType_BOOKYIELD[] = "BOOK";
+  const char YieldType_YIELDVALUEOF132[] = "VALUE1_32";
+  const int PegScope_NATIONAL_XXCLUDING_LOCAL = 4;
+  const int PegScope_NATIONAL_EXCLUDING_LOCAL = 4;
+  const int PegScope_LOCAL = 1;
+  const int PegScope_NATIONALEXCLUDINGLOCAL = 4;
+  const int PegScope_GLOBAL = 3;
+  const int PegScope_NATIONAL = 2;
+  const int PegScope_LOCALEXCHANGEECNATS = 1;
+  const int SettlDeliveryType_TRI_PARTY = 2;
+  const int SettlDeliveryType_HOLD_IN_CUSTODY = 3;
+  const int SettlDeliveryType_FREE = 1;
+  const int SettlDeliveryType_VERSUS_PAYMENT_DELIVER = 0;
+  const int SettlDeliveryType_FREE_DELIVER = 1;
+  const int SettlDeliveryType_VERSUS_PAYMENT = 0;
+  const int DiscretionLimitType_STRICT = 1;
+  const int DiscretionLimitType_ORWORSE = 2;
+  const int DiscretionLimitType_OR_BETTER = 0;
+  const int DiscretionLimitType_OR_WORSE = 2;
+  const int DiscretionLimitType_ORBETTER = 0;
+  const int PartyDetailsRequestResult_UNSUPPORTED_PARTYLISTRESPONSETYPE = 3;
+  const int PartyDetailsRequestResult_PARTIES_OR_PARTY_DETAILS_DATA_TEMPORARILY_UNAVAILABLE = 5;
+  const int PartyDetailsRequestResult_VALID_REQUEST = 0;
+  const int PartyDetailsRequestResult_REQUEST_FOR_PARTIES_DATA_NOT_SUPPORTED = 6;
+  const int PartyDetailsRequestResult_NO_PARTIES_OR_PARTY_DETAILS_FOUND_THAT_MATCH_SELECTION_CRITERIA = 2;
+  const int PartyDetailsRequestResult_INVALID_OR_UNSUPPORTED_REQUEST = 1;
+  const int PartyDetailsRequestResult_OTHER = 99;
+  const int PartyDetailsRequestResult_NOT_AUTHORIZED_TO_RETRIEVE_PARTIES_OR_PARTY_DETAILS_DATA = 4;
+  const char ExerciseMethod_AUTOMATIC = 'A';
+  const char ExerciseMethod_MANUAL = 'M';
+  const char WorkingIndicator_NO = 'N';
+  const char WorkingIndicator_YES = 'Y';
+  const int SideMultiLegReportingType_INDIVIDUALLEGOFAMULTILEGSECURITY = 2;
+  const int SideMultiLegReportingType_SINGLE_SECURITY = 1;
+  const int SideMultiLegReportingType_MULTILEG_SECURITY = 3;
+  const int SideMultiLegReportingType_INDIVIDUAL_LEG_OF_A_MULTILEG_SECURITY = 2;
+  const int SideMultiLegReportingType_MULTILEGSECURITY = 3;
+  const int SideMultiLegReportingType_SINGLESECURITY = 1;
+  const int ConfirmRejReason_MISSINGSETTLEMENTINSTRUCTIONS = 2;
+  const int ConfirmRejReason_MISSING_SETTLEMENT_INSTRUCTIONS = 2;
+  const int ConfirmRejReason_MISMATCHEDACCOUNT = 1;
+  const int ConfirmRejReason_MISMATCHED_ACCOUNT = 1;
+  const int ConfirmRejReason_OTHER = 99;
+  const char BidRequestTransType_NEW = 'N';
+  const char BidRequestTransType_NO = 'N';
+  const char BidRequestTransType_CANCEL = 'C';
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_SECURITY = 1;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_SECURITY_GROUP = 9;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_ISSUER_OF_UNDERLYING_SECURITY = 11;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_SECURITYTYPE = 5;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_CFICODE = 4;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_UNDERLYING_SECURITY = 2;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_TRADING_SESSION = 6;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_MARKET_SEGMENT = 8;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_MARKET = 7;
+  const int MassActionRejectReason_MASS_ACTION_NOT_SUPPORTED = 0;
+  const int MassActionRejectReason_OTHER = 99;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_SECURITY_ISSUER = 10;
+  const int MassActionRejectReason_INVALID_OR_UNKNOWN_PRODUCT = 3;
+  const int CollApplType_GENERAL = 1;
+  const int CollApplType_SPECIFIC_DEPOSIT = 0;
+  const int ConfirmType_CONFIRMATION = 2;
+  const int ConfirmType_CONFIRMATION_REQUEST_REJECTED = 3;
+  const int ConfirmType_CONFIRMATIONREQUESTREJECTED = 3;
+  const int ConfirmType_STATUS = 1;
+  const int MDQuoteType_INDICATIVE = 0;
+  const int MDQuoteType_RESTRICTED_TRADEABLE = 2;
+  const int MDQuoteType_INDICATIVE_AND_TRADEABLE = 4;
+  const int MDQuoteType_TRADEABLE = 1;
+  const int MDQuoteType_COUNTER = 3;
+  const int QtyType_CONTRACTS = 1;
+  const int QtyType_UNITS_OF_MEASURE_PER_TIME_UNIT = 2;
+  const int QtyType_UNITS = 0;
+  const int QuoteRespType_END_TRADE = 7;
+  const int QuoteRespType_HITLIFT = 1;
+  const int QuoteRespType_HIT_LIFT = 1;
+  const int QuoteRespType_COVER = 4;
+  const int QuoteRespType_DONE_AWAY = 5;
+  const int QuoteRespType_DONEAWAY = 5;
+  const int QuoteRespType_TIMED_OUT = 8;
+  const int QuoteRespType_PASS = 6;
+  const int QuoteRespType_EXPIRED = 3;
+  const int QuoteRespType_COUNTER = 2;
+  const char IOINaturalFlag_NO = 'N';
+  const char IOINaturalFlag_YES = 'Y';
+  const char SettlObligSource_INSTRUCTIONS_OF_BROKER = '1';
+  const char SettlObligSource_INVESTOR = '3';
+  const char SettlObligSource_INSTRUCTIONS_FOR_INSTITUTION = '2';
+  const int TrdSubType_ON_HOURS_TRADE = 34;
+  const int TrdSubType_INTERIM_PROTECTED_TRADE = 38;
+  const int TrdSubType_K = 16;
+  const int TrdSubType_LC = 17;
+  const int TrdSubType_WN = 31;
+  const int TrdSubType_CONVERTED_SWAP = 36;
+  const int TrdSubType_B = 15;
+  const int TrdSubType_M = 18;
+  const int TrdSubType_RT = 28;
+  const int TrdSubType_ONSET_DUE_TO_AN_ALLOCATION = 6;
+  const int TrdSubType_CMTA = 0;
+  const int TrdSubType_INTERNAL_TRANSFER_OR_ADJUSTMENT = 1;
+  const int TrdSubType_DIFFERENTIAL_SPREAD = 7;
+  const int TrdSubType_TRANSACTION_FROM_EXERCISE = 9;
+  const int TrdSubType_TRANSACTION_FROM_ASSIGNMENT = 10;
+  const int TrdSubType_N = 19;
+  const int TrdSubType_IMPLIED_SPREAD_LEG_EXECUTED_AGAINST_AN_OUTRIGHT = 8;
+  const int TrdSubType_NR = 21;
+  const int TrdSubType_SW = 29;
+  const int TrdSubType_OTC_QUOTE = 35;
+  const int TrdSubType_ADVISORY_FOR_CONTRA_SIDE = 4;
+  const int TrdSubType_OFFSET_DUE_TO_AN_ALLOCATION = 5;
+  const int TrdSubType_P = 22;
+  const int TrdSubType_CROSSED_TRADE = 37;
+  const int TrdSubType_PA = 23;
+  const int TrdSubType_EXTERNAL_TRANSFER_OR_TRANSFER_OF_ACCOUNT = 2;
+  const int TrdSubType_R = 26;
+  const int TrdSubType_RO = 27;
+  const int TrdSubType_WT = 32;
+  const int TrdSubType_OFF_HOURS_TRADE = 33;
+  const int TrdSubType_REJECT_FOR_SUBMITTING_SIDE = 3;
+  const int TrdSubType_ONSET_DUT_TO_AN_ALLOCATION = 6;
+  const int TrdSubType_AI = 14;
+  const int TrdSubType_PC = 24;
+  const int TrdSubType_PN = 25;
+  const int TrdSubType_LARGE_IN_SCALE = 39;
+  const int TrdSubType_NM = 20;
+  const int TrdSubType_T = 30;
+  const int TrdSubType_ACATS = 11;
+  const char ExecTransType_NEW = '0';
+  const char ExecTransType_CORRECT = '2';
+  const char ExecTransType_CANCEL = '1';
+  const char ExecTransType_STATUS = '3';
+  const char DayBookingInst_CAN_TRIGGER_BOOKING_WITHOUT_REFERENCE_TO_THE_ORDER_INITIATOR = '0';
+  const char DayBookingInst_ACCUMULATE = '2';
+  const char DayBookingInst_SPEAK_WITH_ORDER_INITIATOR_BEFORE_BOOKING_SPEAK_FIRST = '1';
+  const char DayBookingInst_CAN_TRIGGER_BOOKING_WITHOUT_REFERENCE_TO_THE_ORDER_INITIATOR_AUTO = '0';
+  const char DayBookingInst_SPEAK_WITH_ORDER_INITIATOR_BEFORE_BOOKING = '1';
+  const int FlowScheduleType_NERC_EASTERN_OFF_PEAK = 0;
+  const int FlowScheduleType_NERC_WESTERN_PEAK = 4;
+  const int FlowScheduleType_NERC_EASTERN_PEAK = 3;
+  const int FlowScheduleType_NERC_CALENDAR_ALL_DAYS_IN_MONTH = 2;
+  const int FlowScheduleType_NERC_WESTERN_OFF_PEAK = 1;
+  const int MDOriginType_CROSS = 2;
+  const int MDOriginType_OFF_BOOK = 1;
+  const int MDOriginType_BOOK = 0;
+  const int CollInquiryStatus_ACCEPTED_WITH_WARNINGS = 1;
+  const int CollInquiryStatus_COMPLETED = 2;
+  const int CollInquiryStatus_ACCEPTEDWITHWARNINGS = 1;
+  const int CollInquiryStatus_REJECTED = 4;
+  const int CollInquiryStatus_COMPLETEDWITHWARNINGS = 3;
+  const int CollInquiryStatus_ACCEPTED = 0;
+  const int CollInquiryStatus_COMPLETED_WITH_WARNINGS = 3;
+  const int CPProgram_3A3 = 1;
+  const int CPProgram_OTHER = 99;
+  const int CPProgram_3 = 1;
+  const int CPProgram_42 = 2;
+  const int CPProgram_4 = 2;
+  const int PosReqType_POSITIONS = 0;
+  const int PosReqType_BACKOUT_MESSAGE = 5;
+  const int PosReqType_DELTA_POSITIONS = 6;
+  const int PosReqType_SETTLEMENT_ACTIVITY = 4;
+  const int PosReqType_TRADES = 1;
+  const int PosReqType_EXERCISES = 2;
+  const int PosReqType_ASSIGNMENTS = 3;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_AN_UNDERLYING_SECURITY = 2;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_SECURITY = 1;
+  const int MassStatusReqType_STATUSSECURITYTYPE = 5;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_CFICODE = 4;
+  const int MassStatusReqType_STATUSTRDSESSION = 6;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_PARTYID = 8;
+  const int MassStatusReqType_STATUS_FOR_SECURITY_ISSUER = 9;
+  const int MassStatusReqType_STATUSCFICODE = 4;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_TRADING_SESSION = 6;
+  const int MassStatusReqType_STATUSUNDERLYINGSECURITY = 2;
+  const int MassStatusReqType_STATUSPARTYID = 8;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_PRODUCT = 3;
+  const int MassStatusReqType_STATUS_FOR_ORDERS_FOR_A_SECURITYTYPE = 5;
+  const int MassStatusReqType_STATUS_FOR_ALL_ORDERS = 7;
+  const int MassStatusReqType_STATUS_FOR_ISSUER_OF_UNDERLYING_SECURITY = 10;
+  const int MassStatusReqType_STATUSSECURITY = 1;
+  const int MassStatusReqType_STATUSPRODUCT = 3;
+  const int MassStatusReqType_STATUSALLORDERS = 7;
+  const char SubscriptionRequestType_DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST = '2';
+  const char SubscriptionRequestType_SNAPSHOT_PLUS_UPDATES = '1';
+  const char SubscriptionRequestType_SNAPSHOTUPDATE = '1';
+  const char SubscriptionRequestType_SNAPSHOT = '0';
+  const char SubscriptionRequestType_UNSUBSCRIBE = '2';
+  const int NewsCategory_MARKETPLACE_NEWS = 1;
+  const int NewsCategory_TECHNICAL_NEWS = 3;
+  const int NewsCategory_COMPANY_NEWS = 0;
+  const int NewsCategory_OTHER_NEWS = 99;
+  const int NewsCategory_FINANCIAL_MARKET_NEWS = 2;
+  const char IOIQty_MEDIUM[] = "M";
+  const char IOIQty_1000000000[] = "0";
+  const char IOIQty_LARGE[] = "L";
+  const char IOIQty_SMALL[] = "S";
+  const char IOIQty_UNDISCLOSED_QUANTITY[] = "U";
+  const int ApplResponseError_USER_NOT_AUTHORIZED_FOR_APPLICATION = 2;
+  const int ApplResponseError_APPLICATION_DOES_NOT_EXIST = 0;
+  const int ApplResponseError_MESSAGES_REQUESTED_ARE_NOT_AVAILABLE = 1;
+  const char TriggerPriceDirection_TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_DOWN_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE = 'D';
+  const char TriggerPriceDirection_TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_UP_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE = 'U';
+  const int LastLiquidityInd_ADDEDLIQUIDITY = 1;
+  const int LastLiquidityInd_LIQUIDITY_ROUTED_OUT = 3;
+  const int LastLiquidityInd_LIQUIDITYROUTEDOUT = 3;
+  const int LastLiquidityInd_AUCTION = 4;
+  const int LastLiquidityInd_REMOVEDLIQUIDITY = 2;
+  const int LastLiquidityInd_ADDED_LIQUIDITY = 1;
+  const int LastLiquidityInd_REMOVED_LIQUIDITY = 2;
+  const int StrikePriceDeterminationMethod_STRIKE_SET_TO_AVERAGE_OF_UNDERLYING_SETTLEMENT_PRICE_ACROSS_THE_LIFE_OF_THE_OPTION = 3;
+  const int StrikePriceDeterminationMethod_STRIKE_SET_AT_EXPIRATION_TO_UNDERLYING_OR_OTHER_VALUE = 2;
+  const int StrikePriceDeterminationMethod_FIXED_STRIKE = 1;
+  const int StrikePriceDeterminationMethod_STRIKE_SET_TO_OPTIMAL_VALUE = 4;
+  const int TargetStrategy_MININIZEMARKETIMPACT = 3;
+  const int TargetStrategy_RESERVEDANDAVAILABLEFORBILATERALLYAGREEDUPONUSERDEFINEDVALUES = 1000;
+  const int TargetStrategy_PARTICIPATE = 2;
+  const int TargetStrategy_MININIZE_MARKET_IMPACT = 3;
+  const int TargetStrategy_VWAP = 1;
+  const char DueToRelated_NO = 'N';
+  const char DueToRelated_YES = 'Y';
+  const char UnderlyingCashType_DIFF[] = "DIFF";
+  const char UnderlyingCashType_FIXED[] = "FIXED";
+  const int CustOrderCapacity_CLEARING_FIRM_TRADING_FOR_ITS_PROPRIETARY_ACCOUNT = 2;
+  const int CustOrderCapacity_MEMBER_TRADING_FOR_THEIR_OWN_ACCOUNT = 1;
+  const int CustOrderCapacity_MEMBER_TRADING_FOR_ANOTHER_MEMBER = 3;
+  const int CustOrderCapacity_ALL_OTHER = 4;
+  const char OwnershipType_JOINT_TRUSTEES = '2';
+  const char OwnershipType_JOINT_INVESTORS = 'J';
+  const char OwnershipType_TENANTS_IN_COMMON = 'T';
+  const char UnitOfMeasure_US_DOLLARS[] = "USD";
+  const char UnitOfMeasure_TROY_OUNCES[] = "oz_tr";
+  const char UnitOfMeasure_TONS[] = "tn";
+  const char UnitOfMeasure_BILLION_CUBIC_FEET[] = "Bcf";
+  const char UnitOfMeasure_ONE_MILLION_BTU[] = "MMBtu";
+  const char UnitOfMeasure_MEGAWATT_HOURS[] = "MWh";
+  const char UnitOfMeasure_MILLION_BARRELS[] = "MMbbl";
+  const char UnitOfMeasure_GALLONS[] = "Gal";
+  const char UnitOfMeasure_BARRELS[] = "Bbl";
+  const char UnitOfMeasure_POUNDS[] = "lbs";
+  const char UnitOfMeasure_METRIC_TONS[] = "t";
+  const char UnitOfMeasure_ALLOWANCES[] = "Alw";
+  const char UnitOfMeasure_BUSHELS[] = "Bu";
+  const int SecDefStatus_INVALID_DEFINITION_REQUEST = 4;
+  const int SecDefStatus_PENDING_APPROVAL = 0;
+  const int SecDefStatus_APPROVED = 1;
+  const int SecDefStatus_UNAUTHORIZEDREQUEST = 3;
+  const int SecDefStatus_PENDINGAPPROVAL = 0;
+  const int SecDefStatus_UNAUTHORIZED_REQUEST = 3;
+  const int SecDefStatus_INVALIDDEFINITIONREQUEST = 4;
+  const int SecDefStatus_APPROVEDACCEPTED = 1;
+  const int SecDefStatus_REJECTED = 2;
+  const char SettlmntTyp_WHEN_AND_IF_ISSUED = '7';
+  const char SettlmntTyp_T_PLUS_1 = 'A';
+  const char SettlmntTyp_FUTURE = '6';
+  const char SettlmntTyp_SELLERS_OPTION = '8';
+  const char SettlmntTyp_T_PLUS_2 = '3';
+  const char SettlmntTyp_T_PLUS_3 = '4';
+  const char SettlmntTyp_T_PLUS_4 = '5';
+  const char SettlmntTyp_REGULAR = '0';
+  const char SettlmntTyp_T_PLUS_5 = '9';
+  const char SettlmntTyp_WHEN_ISSUED = '7';
+  const char SettlmntTyp_NEXT_DAY = '2';
+  const char SettlmntTyp_CASH = '1';
+  const int TradePublishIndicator_DO_NOT_PUBLISH_TRADE = 0;
+  const int TradePublishIndicator_DEFERRED_PUBLICATION = 2;
+  const int TradePublishIndicator_PUBLISH_TRADE = 1;
+  const int ApplResponseType_MESSAGES_NOT_AVAILABLE = 2;
+  const int ApplResponseType_APPLICATION_DOES_NOT_EXIST = 1;
+  const int ApplResponseType_REQUEST_SUCCESSFULLY_PROCESSED = 0;
+  const int StandInstDbType_SID = 1;
+  const int StandInstDbType_DTC_SID = 1;
+  const int StandInstDbType_CUSTODIAN = 3;
+  const int StandInstDbType_ALERT = 2;
+  const int StandInstDbType_ACCOUNTNET = 4;
+  const int StandInstDbType_A_GLOBAL_CUSTODIAN = 3;
+  const int StandInstDbType_THOMSON_ALERT = 2;
+  const int StandInstDbType_OTHER = 0;
+  const int QuoteEntryStatus_CROSS_MARKET_WARNING = 13;
+  const int QuoteEntryStatus_LOCKED_MARKET_WARNING = 12;
+  const int QuoteEntryStatus_CANCELED_DUE_TO_CROSS_MARKET = 15;
+  const int QuoteEntryStatus_CANCELED_DUE_TO_LOCK_MARKET = 14;
+  const int QuoteEntryStatus_REJECTED = 5;
+  const int QuoteEntryStatus_EXPIRED = 7;
+  const int QuoteEntryStatus_REMOVED_FROM_MARKET = 6;
+  const int QuoteEntryStatus_ACCEPTED = 0;
+  const int QuoteEntryStatus_ACTIVE = 16;
+  const char TriggerPriceType_BEST_MID = '6';
+  const char TriggerPriceType_BEST_BID_OR_LAST_TRADE = '4';
+  const char TriggerPriceType_BEST_BID = '3';
+  const char TriggerPriceType_BEST_OFFER_OR_LAST_TRADE = '5';
+  const char TriggerPriceType_BEST_OFFER = '1';
+  const char TriggerPriceType_LAST_TRADE = '2';
+  const int SideTrdSubTyp_EXTERNAL_TRANSFER = 2;
+  const int SideTrdSubTyp_TRANSACTION_FROM_ASSIGNMENT = 10;
+  const int SideTrdSubTyp_TRANSACTION_FROM_EXERCISE = 9;
+  const int SideTrdSubTyp_DIFFERENTIAL_SPREAD = 7;
+  const int SideTrdSubTyp_ONSET_DUE_TO_AN_ALLOCATION = 6;
+  const int SideTrdSubTyp_REJECT_FOR_SUBMITTING_TRADE = 3;
+  const int SideTrdSubTyp_CMTA = 0;
+  const int SideTrdSubTyp_IMPLIED_SPREAD_LEG_EXECUTED_AGAINST_AN_OUTRIGHT = 8;
+  const int SideTrdSubTyp_INTERNAL_TRANSFER = 1;
+  const int SideTrdSubTyp_OFFSET_DUE_TO_AN_ALLOCATION = 5;
+  const int SideTrdSubTyp_ADVISORY_FOR_CONTRA_SIDE = 4;
+  const int SettlInstReqRejCode_UNABLE_TO_PROCESS_REQUEST = 0;
+  const int SettlInstReqRejCode_NOMATCHINGSETTLEMENTINSTRUCTIONSFOUND = 2;
+  const int SettlInstReqRejCode_UNKNOWNACCOUNT = 1;
+  const int SettlInstReqRejCode_UNABLETOPROCESSREQUEST = 0;
+  const int SettlInstReqRejCode_UNKNOWN_ACCOUNT = 1;
+  const int SettlInstReqRejCode_NO_MATCHING_SETTLEMENT_INSTRUCTIONS_FOUND = 2;
+  const int SettlInstReqRejCode_OTHER = 99;
+  const char Urgency_FLASH = '1';
+  const char Urgency_NORMAL = '0';
+  const char Urgency_BACKGROUND = '2';
+  const int CollAsgnTransType_REPLACE = 1;
+  const int CollAsgnTransType_NEW = 0;
+  const int CollAsgnTransType_REVERSE = 4;
+  const int CollAsgnTransType_CANCEL = 2;
+  const int CollAsgnTransType_RELEASE = 3;
+  const int PaymentMethod_FED_WIRE = 7;
+  const int PaymentMethod_ACHCREDIT = 13;
+  const int PaymentMethod_TELEGRAPHICTRANSFER = 6;
+  const int PaymentMethod_DIRECTDEBITBECS = 9;
+  const int PaymentMethod_EUROCLEAR = 3;
+  const int PaymentMethod_ACH_CREDIT = 13;
+  const int PaymentMethod_TELEGRAPHIC_TRANSFER = 6;
+  const int PaymentMethod_FEDWIRE = 7;
+  const int PaymentMethod_CREDITCARD = 11;
+  const int PaymentMethod_DIRECT_DEBIT = 9;
+  const int PaymentMethod_CREDIT_CARD = 11;
+  const int PaymentMethod_CHEQUE = 5;
+  const int PaymentMethod_DIRECT_CREDIT = 10;
+  const int PaymentMethod_CREST = 1;
+  const int PaymentMethod_HIGH_VALUE_CLEARING_SYSTEM = 15;
+  const int PaymentMethod_DEBITCARD = 8;
+  const int PaymentMethod_CLEARSTREAM = 4;
+  const int PaymentMethod_BPAY = 14;
+  const int PaymentMethod_HIGHVALUECLEARINGSYSTEMHVACS = 15;
+  const int PaymentMethod_NSCC = 2;
+  const int PaymentMethod_DEBIT_CARD = 8;
+  const int PaymentMethod_ACHDEBIT = 12;
+  const int PaymentMethod_DIRECTCREDITBECS = 10;
+  const int PaymentMethod_ACH_DEBIT = 12;
+  const char TriggerPriceTypeScope_LOCAL = '1';
+  const char TriggerPriceTypeScope_NONE = '0';
+  const char TriggerPriceTypeScope_GLOBAL = '3';
+  const char TriggerPriceTypeScope_NATIONAL = '2';
+  const int PegLimitType_STRICT = 1;
+  const int PegLimitType_ORWORSE = 2;
+  const int PegLimitType_OR_BETTER = 0;
+  const int PegLimitType_OR_WORSE = 2;
+  const int PegLimitType_ORBETTER = 0;
+  const char Side_BORROW = 'G';
+  const char Side_SELLPLUS = '4';
+  const char Side_BUY_MINUS = '3';
+  const char Side_BUYMIN = '3';
+  const char Side_ASDEFINED = 'B';
+  const char Side_SUBSCRIBE = 'D';
+  const char Side_CROSS_SHORT_EXEMPT = 'A';
+  const char Side_UNDISCLOSED = '7';
+  const char Side_SELLSHT = '5';
+  const char Side_SELLSHTEX = '6';
+  const char Side_CROSSSHORTEX = 'A';
+  const char Side_CROSS = '8';
+  const char Side_SELL_SHORT_EXEMPT = '6';
+  const char Side_UNDISC = '7';
+  const char Side_CROSSSHORT = '9';
+  const char Side_BORROWFINANCING = 'G';
+  const char Side_BUY = '1';
+  const char Side_CROSS_SHORT_EXXMPT = 'A';
+  const char Side_SELL = '2';
+  const char Side_LEND = 'F';
+  const char Side_SELL_SHORT = '5';
+  const char Side_OPPOSITE = 'C';
+  const char Side_CROSS_SHORT = '9';
+  const char Side_SELL_PLUS = '4';
+  const char Side_REDEEM = 'E';
+  const char Side_LENDFINANCING = 'F';
+  const char Side_AS_DEFINED = 'B';
+  const int ContAmtType_COMMISSIONAMT = 1;
+  const int ContAmtType_FUNDBASEDRENEWALCOMM = 11;
+  const int ContAmtType_INITIALCHARGEPCT = 4;
+  const int ContAmtType_EXITCHARGEAMT = 9;
+  const int ContAmtType_EXIT_CHARGE = 10;
+  const int ContAmtType_DILUTION_LEVY_AMOUNT = 7;
+  const int ContAmtType_DILUTION_LEVY_PERCENT = 8;
+  const int ContAmtType_DISCOUNT_AMOUNT = 5;
+  const int ContAmtType_COMMISSION = 2;
+  const int ContAmtType_INITIAL_CHARGE_PERCENT = 4;
+  const int ContAmtType_DILUTIONLEVYAMT = 7;
+  const int ContAmtType_DILUTION_LEVY = 8;
+  const int ContAmtType_COMMISSION_AMOUNT = 1;
+  const int ContAmtType_NET_SETTLEMENT_AMOUNT = 15;
+  const int ContAmtType_EXITCHARGEPCT = 10;
+  const int ContAmtType_COMMISSIONPCT = 2;
+  const int ContAmtType_FUND_BASED_RENEWAL_COMMISSION = 11;
+  const int ContAmtType_DISCOUNT = 6;
+  const int ContAmtType_FUNDBASEDRENEWALCOMMAMTORD = 13;
+  const int ContAmtType_DISCOUNTPCT = 6;
+  const int ContAmtType_FUND_BASED_RENEWAL_COMMISSION_AMOUNT_13 = 13;
+  const int ContAmtType_EXIT_CHARGE_AMOUNT = 9;
+  const int ContAmtType_INITIAL_CHARGE = 4;
+  const int ContAmtType_EXIT_CHARGE_PERCENT = 10;
+  const int ContAmtType_DISCOUNT_PERCENT = 6;
+  const int ContAmtType_INITIALCHARGEAMT = 3;
+  const int ContAmtType_DILUTIONLEVYPCT = 8;
+  const int ContAmtType_FUND_BASED_RENEWAL_COMMISSION_AMOUNT_14 = 14;
+  const int ContAmtType_FUNDBASEDRENEWALCOMMAMTPROJ = 14;
+  const int ContAmtType_NETSETTLEMENTAMOUNT = 15;
+  const int ContAmtType_PROJECTEDFUNDVALUE = 12;
+  const int ContAmtType_DISCOUNTAMT = 5;
+  const int ContAmtType_FUND_BASED_RENEWAL_COMMISSION_PERCENT = 11;
+  const int ContAmtType_COMMISSION_PERCENT = 2;
+  const int ContAmtType_PROJECTED_FUND_VALUE = 12;
+  const int ContAmtType_INITIAL_CHARGE_AMOUNT = 3;
+  const char OrderCategory_IMPLIED_ORDER = '7';
+  const char OrderCategory_STREAMING_PRICE = '9';
+  const char OrderCategory_QUOTE_REQUEST = '6';
+  const char OrderCategory_CROSS_ORDER = '8';
+  const char OrderCategory_MULTILEG_ORDER = '4';
+  const char OrderCategory_PRIVATELY_NEGOTIATED_TRADE = '3';
+  const char OrderCategory_QUOTE = '2';
+  const char OrderCategory_ORDER = '1';
+  const char OrderCategory_LINKED_ORDER = '5';
+  const char AdvTransType_REPLACE[] = "R";
+  const char AdvTransType_NEW[] = "N";
+  const char AdvTransType_ADVCANCEL[] = "C";
+  const char AdvTransType_ADVREPLACE[] = "R";
+  const char AdvTransType_ADVNEW[] = "N";
+  const char AdvTransType_CANCEL[] = "C";
+  const char PublishTrdIndicator_NO = 'N';
+  const char PublishTrdIndicator_YES = 'Y';
+  const int SecurityResponseType_ACCPTSECPROPREV = 2;
+  const int SecurityResponseType_SECLISTTYPESRET = 3;
+  const int SecurityResponseType_LIST_OF_SECURITIES_RETURNED_PER_REQUEST = 4;
+  const int SecurityResponseType_LIST_OF_SECURITY_TYPES_RETURNED_PER_REQUEST = 3;
+  const int SecurityResponseType_ACCEPT_SECURITY_PROPOSAL_WITH_REVISIONS_AS_INDICATED_IN_THE_MESSAGE = 2;
+  const int SecurityResponseType_ACCEPT_SECURITY_PROPOSAL_AS_IS = 1;
+  const int SecurityResponseType_ACCPTSECPROP = 1;
+  const int SecurityResponseType_REJECT_SECURITY_PROPOSAL = 5;
+  const int SecurityResponseType_SECLISTRET = 4;
+  const int SecurityResponseType_REJSECPROP = 5;
+  const int SecurityResponseType_CAN_NOT_MATCH_SELECTION_CRITERIA = 6;
+  const int SecurityResponseType_CANNOT_MATCH_SELECTION_CRITERIA = 6;
+  const int SecurityResponseType_NOMATCH = 6;
+  const int SessionStatus_PASSWORD_EXPIRED = 8;
+  const int SessionStatus_SESSION_LOGOUT_COMPLETE = 4;
+  const int SessionStatus_INVALID_USERNAME_OR_PASSWORD = 5;
+  const int SessionStatus_SESSION_ACTIVE = 0;
+  const int SessionStatus_SESSION_PASSWORD_CHANGED = 1;
+  const int SessionStatus_ACCOUNT_LOCKED = 6;
+  const int SessionStatus_LOGONS_ARE_NOT_ALLOWED_AT_THIS_TIME = 7;
+  const int SessionStatus_SESSION_PASSWORD_DUE_TO_EXPIRE = 2;
+  const int SessionStatus_NEW_SESSION_PASSWORD_DOES_NOT_COMPLY_WITH_POLICY = 3;
+  const int AllocAccountType_JBO = 8;
+  const int AllocAccountType_HOUSE_TRADER = 3;
+  const int AllocAccountType_ACCOUNT_IS_CARRIED_ON_NON_CUSTOMER_SIDE_OF_BOOKS = 2;
+  const int AllocAccountType_FLOOR_TRADER = 4;
+  const int AllocAccountType_ACCOUNTISHOUSETRADERANDISCROSSMARGINED = 7;
+  const int AllocAccountType_ACCOUNTISCARRIEDONCUSTOMERSIDEOFBOOKS = 1;
+  const int AllocAccountType_JOINT_BACK_OFFICE_ACCOUNT = 8;
+  const int AllocAccountType_ACCOUNTISCARRIEDONNONCUSTOMERSIDEOFBOOKSANDISCROSSMARGINED = 6;
+  const int AllocAccountType_HOUSETRADER = 3;
+  const int AllocAccountType_FLOORTRADER = 4;
+  const int AllocAccountType_ACCOUNT_IS_CARRIED_ON_NON_CUSTOMER_SIDE_OF_BOOKS_AND_IS_CROSS_MARGINED = 6;
+  const int AllocAccountType_ACCOUNT_IS_CARRIED_PN_CUSTOMER_SIDE_OF_BOOKS = 1;
+  const int AllocAccountType_ACCOUNTISCARRIEDONNONCUSTOMERSIDEOFBOOKS = 2;
+  const int AllocAccountType_ACCOUNT_IS_HOUSE_TRADER_AND_IS_CROSS_MARGINED = 7;
+  const char AllocTransType_REPLACE = '1';
+  const char AllocTransType_NEW = '0';
+  const char AllocTransType_CALCULATED = '4';
+  const char AllocTransType_PRELIMINARY = '3';
+  const char AllocTransType_CALCULATEDWITHOUTPRELIMINARY = '5';
+  const char AllocTransType_CANCEL = '2';
+  const char AllocTransType_REVERSAL = '6';
+  const char AllocTransType_CALCULATED_WITHOUT_PRELIMINARY = '5';
+  const int ExpirationQtyType_DIFFERENCE = 5;
+  const int ExpirationQtyType_FINAL_WILL_BE_EXERCISED = 3;
+  const int ExpirationQtyType_NON_AUTO_EXERCISE = 2;
+  const int ExpirationQtyType_CONTRARY_INTENTION = 4;
+  const int ExpirationQtyType_AUTO_EXERCISE = 1;
+  const int AllocHandlInst_FORWARDMATCH = 3;
+  const int AllocHandlInst_FORWARD_AND_MATCH = 3;
+  const int AllocHandlInst_FORWARD = 2;
+  const int AllocHandlInst_MATCH = 1;
+  const int TradeRequestStatus_COMPLETED = 1;
+  const int TradeRequestStatus_REJECTED = 2;
+  const int TradeRequestStatus_ACCEPTED = 0;
+  const char PreallocMethod_DO_NOT_PRO_RATA_DISCUSS_FIRST = '1';
+  const char PreallocMethod_PRO_RATA = '0';
+  const char PreallocMethod_DO_NOT_PRORATA_DISCUSS_FIRST = '1';
+  const char PreallocMethod_DO_NOT_PRO_RATA = '1';
+  const char PreallocMethod_PRORATA = '0';
+  const int TaxAdvantageType_ROTHIRANONPROTOTYPEUS = 25;
+  const int TaxAdvantageType_INDIVIDUALRETIREMENTACCOUNTROLLOVERUS = 17;
+  const int TaxAdvantageType_PROFITSHARINGPLANUS = 19;
+  const int TaxAdvantageType_SELF_DIRECTED_IRA = 21;
+  const int TaxAdvantageType_401 = 20;
+  const int TaxAdvantageType_EMPLOYER_11 = 11;
+  const int TaxAdvantageType_457US = 23;
+  const int TaxAdvantageType_EMPLOYER_12 = 12;
+  const int TaxAdvantageType_MINI_CASH_ISA = 3;
+  const int TaxAdvantageType_MINI_STOCKS_AND_SHARES_ISA = 4;
+  const int TaxAdvantageType_ROTH_CONVERSION_IRA_26 = 26;
+  const int TaxAdvantageType_EMPLOYEE = 9;
+  const int TaxAdvantageType_SELFDIRECTEDIRAUS = 21;
+  const int TaxAdvantageType_403 = 22;
+  const int TaxAdvantageType_NON_FUND_PROTOTYPE_IRA = 13;
+  const int TaxAdvantageType_NONFUNDPROTOTYPEIRAUS = 13;
+  const int TaxAdvantageType_ROTH_CONVERSION_IRA_27 = 27;
+  const int TaxAdvantageType_ROTHCONVERSIONIRANONPROTOTYPEUS = 27;
+  const int TaxAdvantageType_MINI_INSURANCE_ISA = 5;
+  const int TaxAdvantageType_ROTHCONVERSIONIRAFUNDPROTOTYPEUS = 26;
+  const int TaxAdvantageType_EDUCATIONIRAFUNDPROTOTYPEUS = 28;
+  const int TaxAdvantageType_MAXIISAUK = 1;
+  const int TaxAdvantageType_INDIVIDUAL_RETIREMENT_ACCOUNT_ROLLOVER = 17;
+  const int TaxAdvantageType_NONFUNDQUALIFIEDPLANUS = 14;
+  const int TaxAdvantageType_EMPLOYER_CURRENT_YEAR = 12;
+  const int TaxAdvantageType_PRIORYEARPAYMENTUS = 7;
+  const int TaxAdvantageType_TESSAUK = 2;
+  const int TaxAdvantageType_CURRENTYEARPAYMENTUS = 6;
+  const int TaxAdvantageType_EDUCATIONIRANONPROTOTYPEUS = 29;
+  const int TaxAdvantageType_INDIVIDUALRETIREMENTACCOUNTUS = 16;
+  const int TaxAdvantageType_KEOGHUS = 18;
+  const int TaxAdvantageType_EDUCATION_IRA_28 = 28;
+  const int TaxAdvantageType_PROFIT_SHARING_PLAN = 19;
+  const int TaxAdvantageType_NON_FUND_QUALIFIED_PLAN = 14;
+  const int TaxAdvantageType_ROTHIRAFUNDPROTOTYPEUS = 24;
+  const int TaxAdvantageType_EDUCATION_IRA_29 = 29;
+  const int TaxAdvantageType_EMPLOYEE_10 = 10;
+  const int TaxAdvantageType_EMPLOYEE_9 = 9;
+  const int TaxAdvantageType_EMPLOYEE_CURRENT_YEAR = 10;
+  const int TaxAdvantageType_MAXI_ISA = 1;
+  const int TaxAdvantageType_MINIINSURANCEISAUK = 5;
+  const int TaxAdvantageType_PRIOR_YEAR_PAYMENT = 7;
+  const int TaxAdvantageType_DEFINED_CONTRIBUTION_PLAN = 15;
+  const int TaxAdvantageType_401K = 20;
+  const int TaxAdvantageType_403BUS = 22;
+  const int TaxAdvantageType_MINICASHISAUK = 3;
+  const int TaxAdvantageType_ROTH_IRA_24 = 24;
+  const int TaxAdvantageType_MINISTOCKSANDSHARESISAUK = 4;
+  const int TaxAdvantageType_OTHER = 999;
+  const int TaxAdvantageType_EMPLOYERCURRENTYEARUS = 12;
+  const int TaxAdvantageType_ASSET_TRANSFER = 8;
+  const int TaxAdvantageType_ROTH_IRA_25 = 25;
+  const int TaxAdvantageType_KEOGH = 18;
+  const int TaxAdvantageType_DEFINEDCONTRIBUTIONPLANUS = 15;
+  const int TaxAdvantageType_401KUS = 20;
+  const int TaxAdvantageType_TESSA = 2;
+  const int TaxAdvantageType_NONE_NOT_APPLICABLE = 0;
+  const int TaxAdvantageType_NONE = 0;
+  const int TaxAdvantageType_457 = 23;
+  const int TaxAdvantageType_EMPLOYEEPRIORYEARUS = 9;
+  const int TaxAdvantageType_EMPLOYERPRIORYEARUS = 11;
+  const int TaxAdvantageType_EMPLOYER = 11;
+  const int TaxAdvantageType_EMPLOYEECURRENTYEARUS = 10;
+  const int TaxAdvantageType_INDIVIDUAL_RETIREMENT_ACCOUNT_16 = 16;
+  const int TaxAdvantageType_INDIVIDUAL_RETIREMENT_ACCOUNT = 16;
+  const int TaxAdvantageType_INDIVIDUAL_RETIREMENT_ACCOUNT_17 = 17;
+  const int TaxAdvantageType_CURRENT_YEAR_PAYMENT = 6;
+  const int TaxAdvantageType_ASSETTRANSFERUS = 8;
+  const char MessageEncoding_EUC_JP[] = "EUC-JP";
+  const char MessageEncoding_SHIFT_JIS[] = "SHIFT_JIS";
+  const char MessageEncoding_UTF_8[] = "UTF-8";
+  const char MessageEncoding_ISO_2022_JP[] = "ISO-2022-JP";
+  const char TimeInForce_GOOD_TILL_CROSSING = '5';
+  const char TimeInForce_FILL_OR_KILL = '4';
+  const char TimeInForce_GOOD_TILL_DATE = '6';
+  const char TimeInForce_ATTHEOPENING = '2';
+  const char TimeInForce_FILLORKILL = '4';
+  const char TimeInForce_GOODTILLDATE = '6';
+  const char TimeInForce_GOODTILLCANCEL = '1';
+  const char TimeInForce_ATTHECLOSE = '7';
+  const char TimeInForce_GOOD_TILL_CANCEL = '1';
+  const char TimeInForce_DAY = '0';
+  const char TimeInForce_AT_CROSSING = '9';
+  const char TimeInForce_IMMEDIATEORCANCEL = '3';
+  const char TimeInForce_IMMEDIATE_OR_CANCEL = '3';
+  const char TimeInForce_GOODTILLCROSSING = '5';
+  const char TimeInForce_GOOD_THROUGH_CROSSING = '8';
+  const char TimeInForce_AT_THE_CLOSE = '7';
+  const char TimeInForce_AT_THE_OPENING = '2';
+  const char IOIQualifier_AON = 'A';
+  const char IOIQualifier_THROUGH_THE_DAY = 'T';
+  const char IOIQualifier_INDIDCATION = 'W';
+  const char IOIQualifier_MOC = 'B';
+  const char IOIQualifier_READYTRADE = 'R';
+  const char IOIQualifier_ATMID = 'Y';
+  const char IOIQualifier_INDWRKAWAY = 'W';
+  const char IOIQualifier_AT_THE_MARKET = 'Q';
+  const char IOIQualifier_AT_THE_MIDPOINT = 'Y';
+  const char IOIQualifier_CROSSING_OPPORTUNITY = 'X';
+  const char IOIQualifier_CURRENT_QUOTE = 'Q';
+  const char IOIQualifier_IN_TOUCH_WITH = 'I';
+  const char IOIQualifier_ALL_OR_NONE = 'A';
+  const char IOIQualifier_THROUGHDAY = 'T';
+  const char IOIQualifier_TAKING_A_POSITION = 'P';
+  const char IOIQualifier_AT_THE_OPEN = 'O';
+  const char IOIQualifier_TAKEPOSITION = 'P';
+  const char IOIQualifier_PORTFOLIO_SHOW_N = 'S';
+  const char IOIQualifier_INTOUCH = 'I';
+  const char IOIQualifier_MOREBEHIND = 'M';
+  const char IOIQualifier_ATMARKET = 'Q';
+  const char IOIQualifier_CROSSOPP = 'X';
+  const char IOIQualifier_PREOPEN = 'Z';
+  const char IOIQualifier_ATCLOSE = 'C';
+  const char IOIQualifier_MARKET_ON_CLOSE = 'B';
+  const char IOIQualifier_VERSUS = 'V';
+  const char IOIQualifier_LIMIT = 'L';
+  const char IOIQualifier_PORTFOLIO_SHOWN = 'S';
+  const char IOIQualifier_READY_TO_TRADE = 'R';
+  const char IOIQualifier_PRE_OPEN = 'Z';
+  const char IOIQualifier_INDICATION = 'W';
+  const char IOIQualifier_MORE_BEHIND = 'M';
+  const char IOIQualifier_ATOPEN = 'O';
+  const char IOIQualifier_VWAP = 'D';
+  const char IOIQualifier_PORTSHOW = 'S';
+  const char IOIQualifier_AT_THE_CLOSE = 'C';
+  const int StrikePriceBoundaryMethod_GREATER_THAN_OR_EQUAL_TO_UNDERLYING_PRICE_IS_IN_THE_MONEY = 4;
+  const int StrikePriceBoundaryMethod_GREATER_THAN_UNDERLYING_IS_IN_THE_MONEY = 5;
+  const int StrikePriceBoundaryMethod_LESS_THAN_OR_EQUAL_TO_THE_UNDERLYING_PRICE_IS_IN_THE_MONEY = 2;
+  const int StrikePriceBoundaryMethod_LESS_THAN_UNDERLYING_PRICE_IS_IN_THE_MONEY = 1;
+  const int StrikePriceBoundaryMethod_EQUAL_TO_THE_UNDERLYING_PRICE_IS_IN_THE_MONEY = 3;
+  const char MiscFeeType_CONVERSION[] = "11";
+  const char MiscFeeType_CONSUMPTION_TAX[] = "9";
+  const char MiscFeeType_LOCAL_COMMISSION[] = "3";
+  const char MiscFeeType_TAX[] = "2";
+  const char MiscFeeType_LOCALCOMM[] = "3";
+  const char MiscFeeType_MARKUP[] = "8";
+  const char MiscFeeType_SECURITY_LENDING[] = "14";
+  const char MiscFeeType_PER_TRANSACTION[] = "10";
+  const char MiscFeeType_REGULATORY[] = "1";
+  const char MiscFeeType_EXCHFEE[] = "4";
+  const char MiscFeeType_CONSUMPTION[] = "9";
+  const char MiscFeeType_STAMP[] = "5";
+  const char MiscFeeType_TRANSFER_FEE[] = "13";
+  const char MiscFeeType_AGENT[] = "12";
+  const char MiscFeeType_OTHER[] = "7";
+  const char MiscFeeType_TRANSACTION[] = "10";
+  const char MiscFeeType_REG[] = "1";
+  const char MiscFeeType_EXCHANGE_FEES[] = "4";
+  const char MiscFeeType_LEVY[] = "6";
+  const char SecurityIDSource_CLEARING_HOUSE[] = "H";
+  const char SecurityIDSource_OPTION_PRICE_REPORTING_AUTHORITY[] = "J";
+  const char SecurityIDSource_EXCHANGE_SYMBOL[] = "8";
+  const char SecurityIDSource_SICOVAM[] = "E";
+  const char SecurityIDSource_ISDA_FPML_PRODUCT_SPECIFICATION[] = "I";
+  const char SecurityIDSource_ISDA_FPML_PRODUCT_URL[] = "K";
+  const char SecurityIDSource_RIC[] = "5";
+  const char SecurityIDSource_CLEARINGHOUSE[] = "H";
+  const char SecurityIDSource_FPML[] = "I";
+  const char SecurityIDSource_RIC_CODE[] = "5";
+  const char SecurityIDSource_ISOCURR[] = "6";
+  const char SecurityIDSource_ISO_CURRENCY_CODE[] = "6";
+  const char SecurityIDSource_COMMON[] = "G";
+  const char SecurityIDSource_VALOREN[] = "D";
+  const char SecurityIDSource_BELGIAN[] = "F";
+  const char SecurityIDSource_CTA[] = "9";
+  const char SecurityIDSource_ISIN_NUMBER[] = "4";
+  const char SecurityIDSource_ISIN[] = "4";
+  const char SecurityIDSource_ISOCOUNTRY[] = "7";
+  const char SecurityIDSource_SEDOL[] = "2";
+  const char SecurityIDSource_ISO_COUNTRY_CODE[] = "7";
+  const char SecurityIDSource_LETTER_OF_CREDIT[] = "L";
+  const char SecurityIDSource_BLOOMBERG_SYMBOL[] = "A";
+  const char SecurityIDSource_BLMBRG[] = "A";
+  const char SecurityIDSource_OPTIONPRICEREPORTINGAUTHORITY[] = "J";
+  const char SecurityIDSource_WERTPAPIER[] = "B";
+  const char SecurityIDSource_MARKETPLACE_ASSIGNED_IDENTIFIER[] = "M";
+  const char SecurityIDSource_EXCHSYMB[] = "8";
+  const char SecurityIDSource_CONSOLIDATED_TAPE_ASSOCIATION[] = "9";
+  const char SecurityIDSource_DUTCH[] = "C";
+  const char SecurityIDSource_QUIK[] = "3";
+  const char SecurityIDSource_CUSIP[] = "1";
+  const int NewsRefType_OTHER_LANGUAGE = 1;
+  const int NewsRefType_COMPLIMENTARY = 2;
+  const int NewsRefType_REPLACEMENT = 0;
+  const char TriggerOrderType_LIMIT = '2';
+  const char TriggerOrderType_MARKET = '1';
+  const int CrossType_CROSS_AON = 1;
+  const int CrossType_CROSS_TRADE_WHICH_IS_PARTIALLY_EXECUTED_WITH_THE_UNFILLED_PORTIONS_REMAINING_ACTIVE_ONE_SIDE_OF_THE_CROSS_IS_FULLY_EXECUTED = 3;
+  const int CrossType_CROSS_TRADE_WHICH_IS_EXECUTED_COMPLETELY_OR_NOT_BOTH_SIDES_ARE_TREATED_IN_THE_SAME_MANNER_THIS_IS_EQUIVALENT_TO_AN_ALL_OR_NONE = 1;
+  const int CrossType_CROSSAON = 1;
+  const int CrossType_CROSS_TRADE_IS_EXECUTED_WITH_EXISTING_ORDERS_WITH_THE_SAME_PRICE = 4;
+  const int CrossType_CROSS_ONE_SIDE = 3;
+  const int CrossType_CROSS_SAME_PRICE = 4;
+  const int CrossType_CROSSSAMEPRICE = 4;
+  const int CrossType_CROSS_IOC = 2;
+  const int CrossType_CROSSIOC = 2;
+  const int CrossType_CROSSONESIDE = 3;
+  const int CrossType_CROSS_TRADE_WHICH_IS_EXECUTED_PARTIALLY_AND_THE_REST_IS_CANCELLED_ONE_SIDE_IS_FULLY_EXECUTED_THE_OTHER_SIDE_IS_PARTIALLY_EXECUTED_WITH_THE_REMAINDER_BEING_CANCELLED_THIS_IS_EQUIVALENT_TO_AN_IMMEDIATE_OR_CANCEL_ON_THE_OTHER_SIDE = 2;
+  const char OpenCloseSettleFlag_SESSION_OPEN = '1';
+  const char OpenCloseSettleFlag_DAILY_OPEN = '0';
+  const char OpenCloseSettleFlag_EXPECTED_PRICE = '3';
+  const char OpenCloseSettleFlag_PRICE_FROM_PREVIOUS_BUSINESS_DAY = '4';
+  const char OpenCloseSettleFlag_DELIVERY_SETTLEMENT_PRICE = '2';
+  const int MDBookType_PRICE_DEPTH = 2;
+  const int MDBookType_ORDER_DEPTH = 3;
+  const int MDBookType_TOP_OF_BOOK = 1;
+  const char BasisPxType_VWAPAFT = '8';
+  const char BasisPxType_VWAP_THROUGH_A_DAY_EXCEPT_YORI = '9';
+  const char BasisPxType_VWAP_THROUGH_A_MORNING_SESSION = '7';
+  const char BasisPxType_CLOSING_PRICE = '3';
+  const char BasisPxType_VWAP_THROUGH_A_DAY = '6';
+  const char BasisPxType_CLOSING_PRICE_AT_MORNINGN_SESSION = '2';
+  const char BasisPxType_VWAPDAY = '6';
+  const char BasisPxType_VWAPMORNXYORI = 'A';
+  const char BasisPxType_VWAPMORN = '7';
+  const char BasisPxType_VWAPDAYXYORI = '9';
+  const char BasisPxType_OTHERS = 'Z';
+  const char BasisPxType_OPEN = 'D';
+  const char BasisPxType_CURRPX = '4';
+  const char BasisPxType_VWAPAFTXYORI = 'B';
+  const char BasisPxType_CLOSING_PRICE_AT_MORNING_SESSION = '2';
+  const char BasisPxType_CLSPXMORN = '2';
+  const char BasisPxType_CURRENT_PRICE = '4';
+  const char BasisPxType_SQ = '5';
+  const char BasisPxType_CLSPX = '3';
+  const char BasisPxType_STRIKE = 'C';
+  const char BasisPxType_VWAP_THROUGH_AN_AFTERNOON_SESSION_EXCEPT_YORI = 'B';
+  const char BasisPxType_VWAP_THROUGH_A_MORNING_SESSION_EXCEPT_YORI = 'A';
+  const char BasisPxType_VWAP_THROUGH_AN_AFTERNOON_SESSION = '8';
+  const int ComplexEventType_ROLLING_BARRIER = 9;
+  const int ComplexEventType_UNDERLYING = 7;
+  const int ComplexEventType_KNOCK_OUT_UP = 5;
+  const int ComplexEventType_KNOCK_IN_UP = 3;
+  const int ComplexEventType_KOCK_IN_DOWN = 4;
+  const int ComplexEventType_TRIGGER = 2;
+  const int ComplexEventType_RESET_BARRIER = 8;
+  const int ComplexEventType_CAPPED = 1;
+  const int ComplexEventType_KNOCK_OUT_DOWN = 6;
+  const int MassActionResponse_REJECTED = 0;
+  const int MassActionResponse_ACCEPTED = 1;
+  const int SecurityRequestType_MARKETID_OR_MARKETID_PLUS_MARKETSEGMENTID = 9;
+  const int SecurityRequestType_REQUEST_LIST_SECURITY_TYPES = 2;
+  const int SecurityRequestType_REQSECIDPROV = 1;
+  const int SecurityRequestType_REQUEST_LIST_SECURITIES = 3;
+  const int SecurityRequestType_REQSECID = 0;
+  const int SecurityRequestType_SYMBOL = 4;
+  const int SecurityRequestType_SECURITYTYPE_AND_OR_CFICODE = 5;
+  const int SecurityRequestType_REQUEST_SECURITY_IDENTITY_FOR_THE_SPECIFICATIONS_PROVIDED = 1;
+  const int SecurityRequestType_REQSECLIST = 3;
+  const int SecurityRequestType_TRADINGSESSIONID = 7;
+  const int SecurityRequestType_PRODUCT = 6;
+  const int SecurityRequestType_ALL_SECURITIES = 8;
+  const int SecurityRequestType_REQSECLISTTYPES = 2;
+  const int SecurityRequestType_REQUEST_SECURITY_IDENTITY_AND_SPECIFICATIONS = 0;
+  const int ListRejectReason_EXCHANGE_CLOSED = 2;
+  const int ListRejectReason_UNKNOWN_ORDER = 5;
+  const int ListRejectReason_UNSUPPORTED_ORDER_CHARACTERISTIC = 11;
+  const int ListRejectReason_DUPLICATE_ORDER = 6;
+  const int ListRejectReason_TOO_LATE_TO_ENTER = 4;
+  const int ListRejectReason_OTHER = 99;
+  const int ListRejectReason_BROKER = 0;
+  const char DeskType_PROPRIETARY[] = "PR";
+  const char DeskType_ARBITRAGE[] = "AR";
+  const char DeskType_TRADING[] = "T";
+  const char DeskType_DERIVATIVES[] = "D";
+  const char DeskType_SALES[] = "S";
+  const char DeskType_INSTITUTIONAL[] = "IS";
+  const char DeskType_INTERNATIONAL[] = "IN";
+  const char DeskType_AGENCY[] = "A";
+  const char DeskType_PREFERRED_TRADING[] = "PF";
+  const char DeskType_OTHER[] = "O";
+  const char DeskType_PROGRAM_TRADING[] = "PT";
+  const char SettlType_T4[] = "5";
+  const char SettlType_T5[] = "8";
+  const char SettlType_WHEN_AND_IF_ISSUED[] = "7";
+  const char SettlType_NEXTDAY[] = "2";
+  const char SettlType_FUTURE[] = "6";
+  const char SettlType_T_PLUS_2[] = "3";
+  const char SettlType_SELLERS_OPTION[] = "8";
+  const char SettlType_BROKEN_DATE[] = "B";
+  const char SettlType_T_PLUS_3[] = "4";
+  const char SettlType_T_PLUS_4[] = "5";
+  const char SettlType_REGULAR[] = "0";
+  const char SettlType_NEXT_DAY[] = "2";
+  const char SettlType_T_PLUS_5[] = "9";
+  const char SettlType_FX_SPOT_NEXT_SETTLEMENT[] = "C";
+  const char SettlType_T1[] = "9";
+  const char SettlType_WHENISSUED[] = "7";
+  const char SettlType_T2[] = "3";
+  const char SettlType_T3[] = "4";
+  const char SettlType_CASH[] = "1";
+  const char OpenClose_CLOSE = 'C';
+  const char OpenClose_OPEN = 'O';
+  const int ContractMultiplierUnit_SHARES = 0;
+  const int ContractMultiplierUnit_HOURS = 1;
+  const int ContractMultiplierUnit_DAYS = 2;
+  const int TrdType_VOLUME_WEIGHTED_AVERAGE_TRADE = 51;
+  const int TrdType_LATE_TRADE = 4;
+  const int TrdType_FUTURES_LARGE_ORDER_EXECUTION = 17;
+  const int TrdType_EXCHANGE_OF_FUTURES_FOR_FUTURES = 18;
+  const int TrdType_SPECIAL_EX_CAPITAL_REPAYMENTS = 35;
+  const int TrdType_BLOCK_TRADE_38 = 38;
+  const int TrdType_DELTA_NEUTRAL_TRANSACTION = 46;
+  const int TrdType_CASH_SETTLEMENT = 29;
+  const int TrdType_SPECIAL_CUM_CAPITAL_REPAYMENTS = 34;
+  const int TrdType_SPECIAL_CUM_BONUS = 36;
+  const int TrdType_BLOCK_TRADES = 40;
+  const int TrdType_ALL_OR_NONE = 16;
+  const int TrdType_OPTION_EXERCISE = 45;
+  const int TrdType_FINANCING_TRANSACTION = 47;
+  const int TrdType_TRANSFER = 3;
+  const int TrdType_REGULAR_TRADE = 0;
+  const int TrdType_TRADING_AT_SETTLEMENT = 15;
+  const int TrdType_SPECIAL_EX_DIVIDEND = 26;
+  const int TrdType_SPECIAL_EX_COUPON = 28;
+  const int TrdType_SPECIAL_PRICE = 30;
+  const int TrdType_SPECIAL_CUM_RIGHTS = 32;
+  const int TrdType_SPECIAL_EX_BONUS = 37;
+  const int TrdType_BLOCKTRADE = 1;
+  const int TrdType_EXCHANGE_GRANTED_TRADE = 52;
+  const int TrdType_EXCHANGE_BASIS_FACILITY = 55;
+  const int TrdType_BLOCK_TRADE_1 = 1;
+  const int TrdType_LATE_BUNCHED_TRADE = 8;
+  const int TrdType_ERROR_TRADE = 24;
+  const int TrdType_NAME_CHANGE = 41;
+  const int TrdType_LATEBUNCHEDTRADE = 8;
+  const int TrdType_EFP = 2;
+  const int TrdType_NON_STANDARD_SETTLEMENT = 48;
+  const int TrdType_PRIOR_REFERENCE_PRICE_TRADE = 9;
+  const int TrdType_EXCHANGE_FOR_RISK = 11;
+  const int TrdType_EXCHANGE_FOR_SWAP = 12;
+  const int TrdType_EXCHANGE_OF_FUTURES_FOR = 13;
+  const int TrdType_OPTION_INTERIM_TRADE = 19;
+  const int TrdType_PRIVATELY_NEGOTIATED_TRADES = 22;
+  const int TrdType_SUBSTITUTION_OF_FUTURES_FOR_FORWARDS = 23;
+  const int TrdType_SPECIAL_CUM_DIVIDEND = 25;
+  const int TrdType_GUARANTEED_DELIVERY = 31;
+  const int TrdType_PROROGATION_SELL = 44;
+  const int TrdType_WEIGHTEDAVERAGEPRICETRADE = 6;
+  const int TrdType_PORTFOLIO_TRADE = 50;
+  const int TrdType_WEIGHTED_AVERAGE_PRICE_TRADE = 6;
+  const int TrdType_WORKED_PRINCIPAL_TRADE = 39;
+  const int TrdType_PORTFOLIO_TRANSFER = 42;
+  const int TrdType_T_TRADE = 5;
+  const int TrdType_EXCHANGE_OF_OPTIONS_FOR_OPTIONS = 14;
+  const int TrdType_SPECIAL_CUM_COUPON = 27;
+  const int TrdType_BUNCHEDTRADE = 7;
+  const int TrdType_TTRADE = 5;
+  const int TrdType_OTC = 54;
+  const int TrdType_AFTER_HOURS_TRADE = 10;
+  const int TrdType_PRIORREFERENCEPRICETRADE = 9;
+  const int TrdType_AFTERHOURSTRADE = 10;
+  const int TrdType_DERIVATIVE_RELATED_TRANSACTION = 49;
+  const int TrdType_REPURCHASE_AGREEMENT = 53;
+  const int TrdType_SPECIAL_EX_RIGHTS = 33;
+  const int TrdType_PROROGATION_BUY = 43;
+  const int TrdType_BUNCHED_TRADE = 7;
+  const int TrdType_OPTION_CABINET_TRADE = 20;
+  const int TrdType_LATETRADE = 4;
+  const int TrdType_REGULARTRADE = 0;
+  const char RestructuringType_MODIFIED_MOD_RESTRUCTURING[] = "MM";
+  const char RestructuringType_FULL_RESTRUCTURING[] = "FR";
+  const char RestructuringType_NO_RESTRUCTURING_SPECIFIED[] = "XR";
+  const char RestructuringType_MODIFIED_RESTRUCTURING[] = "MR";
+  const int ProgRptReqs_SELLSIDE = 2;
+  const int ProgRptReqs_REALTIME = 3;
+  const int ProgRptReqs_REAL_TIME_EXECUTION_REPORTS = 3;
+  const int ProgRptReqs_BUYSIDE_EXPLICITLY_REQUESTS_STATUS_USING_STATUSREQUEST = 1;
+  const int ProgRptReqs_SELL_SIDE_PERIODICALLY_SENDS_STATUS_USING_LIST_STATUS_PERIOD_OPTIONALLY_SPECIFIED_IN_PROGRESSPERIOD = 2;
+  const int ProgRptReqs_BUY_SIDE_EXPLICITLY_REQUESTS_STATUS_USING_STATUE_REQUEST = 1;
+  const int ProgRptReqs_BUYSIDE = 1;
+  const int ProgRptReqs_SELLSIDE_PERIODICALLY_SENDS_STATUS_USING_LISTSTATUS_PERIOD_OPTIONALLY_SPECIFIED_IN_PROGRESSPERIOD = 2;
+  const char TradingSessionID_EVENING[] = "5";
+  const char TradingSessionID_AFTER_HOURS[] = "6";
+  const char TradingSessionID_HALFDAY[] = "2";
+  const char TradingSessionID_DAY[] = "1";
+  const char TradingSessionID_MORNING[] = "3";
+  const char TradingSessionID_AFTERNOON[] = "4";
+  const int ListOrderStatus_RECVFOREXEC = 2;
+  const int ListOrderStatus_CXL = 4;
+  const int ListOrderStatus_REJ = 7;
+  const int ListOrderStatus_CANCELING = 4;
+  const int ListOrderStatus_REJECT = 7;
+  const int ListOrderStatus_ALL_DONE = 6;
+  const int ListOrderStatus_INBIDPROC = 1;
+  const int ListOrderStatus_ALLDONE = 6;
+  const int ListOrderStatus_IN_BIDDING_PROCESS = 1;
+  const int ListOrderStatus_RECEIVED_FOR_EXECUTION = 2;
+  const int ListOrderStatus_ALERT = 5;
+  const int ListOrderStatus_RECEIVEDFOREXECUTION = 2;
+  const int ListOrderStatus_INBIDDINGPROCESS = 1;
+  const int ListOrderStatus_EXEC = 3;
+  const int ListOrderStatus_CANCELLING = 4;
+  const int ListOrderStatus_EXECUTING = 3;
+  const char RegistStatus_REJECT = 'R';
+  const char RegistStatus_REMINDER_IE_REGISTRATION_INSTRUCTIONS_ARE_STILL_OUTSTANDING = 'N';
+  const char RegistStatus_REJECTED = 'R';
+  const char RegistStatus_ACCEPTED = 'A';
+  const char RegistStatus_REMINDER = 'N';
+  const char RegistStatus_HELD = 'H';
+  const char RegistStatus_ACCEPT = 'A';
+  const int UnderlyingPriceDeterminationMethod_OPTIMAL_VALUE = 3;
+  const int UnderlyingPriceDeterminationMethod_SPECIAL_REFERENCE = 2;
+  const int UnderlyingPriceDeterminationMethod_AVERAGE_VALUE = 4;
+  const int UnderlyingPriceDeterminationMethod_REGULAR = 1;
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_SECURITY = '1';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_SECURITY_GROUP = 'A';
+  const char MassCancelRequestType_CXLORDERSSECURITYTYPE = '5';
+  const char MassCancelRequestType_CXLORDERSUNDERLYINGSECURITY = '2';
+  const char MassCancelRequestType_CXLORDERSTRDSESSION = '6';
+  const char MassCancelRequestType_CXLALLORDERS = '7';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_MARKET = '8';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_MARKET_SEGMENT = '9';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_SECURITYTYPE = '5';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_TRADING_SESSION = '6';
+  const char MassCancelRequestType_CANCEL_FOR_ISSUER_OF_UNDERLYING_SECURITY = 'C';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_AN_UNDERLYING_SECURITY = '2';
+  const char MassCancelRequestType_CXLORDERSSECURITY = '1';
+  const char MassCancelRequestType_CXLORDERSPRODUCT = '3';
+  const char MassCancelRequestType_CANCEL_ALL_ORDERS = '7';
+  const char MassCancelRequestType_CANCEL_FOR_SECURITY_ISSUER = 'B';
+  const char MassCancelRequestType_CXLORDERSCFICODE = '4';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_PRODUCT = '3';
+  const char MassCancelRequestType_CANCEL_ORDERS_FOR_A_CFICODE = '4';
+  const int DerivativeSecurityListRequestType_MARKETID_OR_MARKETID_PLUS_MARKETSEGMENTID = 8;
+  const int DerivativeSecurityListRequestType_UNDELYINGSYMBOL = 5;
+  const int DerivativeSecurityListRequestType_UNDERLYING_PRODUCT = 7;
+  const int DerivativeSecurityListRequestType_UNDERLYING_SECURITYTYPE_AND_OR_CFICODE = 6;
+  const int DerivativeSecurityListRequestType_SECURITYTYPE_AND_OR_CFICODE = 1;
+  const int DerivativeSecurityListRequestType_SYMBOL = 0;
+  const int DerivativeSecurityListRequestType_TRADINGSESSIONID = 3;
+  const int DerivativeSecurityListRequestType_ALL_SECURITIES = 4;
+  const int DerivativeSecurityListRequestType_PRODUCT = 2;
+  const char CxlRejResponseTo_ORDCXLREPREQ = '2';
+  const char CxlRejResponseTo_ORDER_CANCEL_REQUEST = '1';
+  const char CxlRejResponseTo_ORDER_CANCEL_REPLACE_REQUEST = '2';
+  const char CxlRejResponseTo_ORDCXLREQ = '1';
+  const int QuoteCancelType_CANCEL_BY_QUOTETYPE = 6;
+  const int QuoteCancelType_CANCEL_FOR_ONE_OR_MORE_SECURITIES = 1;
+  const int QuoteCancelType_CANCEL_QUOTE_SPECIFIED_IN_QUOTEID = 5;
+  const int QuoteCancelType_CANCEL_FOR_UNDERLYING_SYMBOL = 3;
+  const int QuoteCancelType_CXLUNDER = 3;
+  const int QuoteCancelType_CANCEL_ALL_QUOTES = 4;
+  const int QuoteCancelType_CXLSYM = 1;
+  const int QuoteCancelType_CANCEL_FOR_UNDERLYING_SECURITY = 3;
+  const int QuoteCancelType_CANCEL_FOR_ISSUER_OF_UNDERLYING_SECURITY = 8;
+  const int QuoteCancelType_CANCEL_FOR_SECURITY_ISSUER = 7;
+  const int QuoteCancelType_CXLSECTYPE = 2;
+  const int QuoteCancelType_CANCEL_FOR_ALL_QUOTES = 4;
+  const int QuoteCancelType_CXLALL = 4;
+  const int QuoteCancelType_CANCEL_FOR_SECURITY_TYPE = 2;
+  const int QuoteCancelType_CANCEL_FOR_SYMBOL = 1;
+  const char StipulationType_POOLS_PER_LOT[] = "PPL";
+  const char StipulationType_MAXIMUM_LOAN_BALANCE[] = "MAXBAL";
+  const char StipulationType_CONSTANTPREPAYMENTYIELD[] = "CPY";
+  const char StipulationType_CUSTOM_START_END_DATE[] = "CUSTOMDATE";
+  const char StipulationType_CALL_PROTECTION[] = "PROTECT";
+  const char StipulationType_MATURITYYEARANDMONTH[] = "MAT";
+  const char StipulationType_FINALCPROFHOMEEQUITYPREPAYMENTCURVE[] = "HEP";
+  const char StipulationType_MATURITYRANGE[] = "MATURITY";
+  const char StipulationType_COUPON_RANGE[] = "COUPON";
+  const char StipulationType_PERCENTOFBMAPREPAYMENTCURVE[] = "PSA";
+  const char StipulationType_SUBSTITUTIONSLEFTREPO[] = "SUBSLEFT";
+  const char StipulationType_LOOKBACKDAYS[] = "LOOKBACK";
+  const char StipulationType_CALLPROTECTION[] = "PROTECT";
+  const char StipulationType_MAXIMUMSUBSTITUTIONSREPO[] = "MAXSUBS";
+  const char StipulationType_YEARORYEARMONTHOFISSUE[] = "ISSUE";
+  const char StipulationType_CONSTANTPREPAYMENTRATE[] = "CPR";
+  const char StipulationType_ISSUE_SIZE_RANGE[] = "ISSUESIZE";
+  const char StipulationType_WEIGHTEDAVERAGEMATURITY[] = "WAM";
+  const char StipulationType_CONSTANT_PREPAYMENT_RATE[] = "CPR";
+  const char StipulationType_PERCENT_OF_MANUFACTURED_HOUSING_PREPAYMENT_CURVE[] = "MHP";
+  const char StipulationType_POOLSMINIMUM[] = "PMIN";
+  const char StipulationType_FINAL_CPR_OF_HOME_EQUITY_PREPAYMENT_CURVE[] = "HEP";
+  const char StipulationType_BROKERS_SALES_CREDIT[] = "BROKERCREDIT";
+  const char StipulationType_ORDER_QUANTITY_INCREMENT[] = "ORDRINCR";
+  const char StipulationType_REFERENCE_TO_ROLLING_OR_CLOSING_TRADE[] = "REFTRADE";
+  const char StipulationType_AVAILABLE_OFFER_QUANTITY_TO_BE_SHOWN_TO_THE_STREET[] = "AVAILQTY";
+  const char StipulationType_ISSUERS_TICKER[] = "ISSUER";
+  const char StipulationType_ISOCURRENCYCODE[] = "CURRENCY";
+  const char StipulationType_THE_MINIMUM_RESIDUAL_OFFER_QUANTITY[] = "LEAVEQTY";
+  const char StipulationType_DISCOUNT_RATE[] = "DISCOUNT";
+  const char StipulationType_VALUATIONDISCOUNT[] = "HAIRCUT";
+  const char StipulationType_SINGLE_MONTHLY_MORTALITY[] = "SMM";
+  const char StipulationType_LOT_VARIANCE[] = "LOTVAR";
+  const char StipulationType_PERCENTOFMANUFACTUREDHOUSINGPREPAYMENTCURVE[] = "MHP";
+  const char StipulationType_FREEFORMTEXT[] = "TEXT";
+  const char StipulationType_WHOLE_POOL[] = "WHOLE";
+  const char StipulationType_GEOGRAPHICS_AND_RANGE[] = "GEOG";
+  const char StipulationType_INTEREST_OF_ROLLING_OR_CLOSING_TRADE[] = "REFINT";
+  const char StipulationType_TRADEVARIANCEVALUEINPERCENTMAXIMUMOVERORUNDERALLOCATIONALLOWED[] = "TRDVAR";
+  const char StipulationType_FREEFORM_TEXT[] = "TEXT";
+  const char StipulationType_RATING_SOURCE_AND_RANGE[] = "RATING";
+  const char StipulationType_OFFER_QUANTITY_TO_BE_SHOWN_TO_INTERNAL_BROKERS[] = "INTERNALQTY";
+  const char StipulationType_OFFER_PRICE_TO_BE_SHOWN_TO_INTERNAL_BROKERS[] = "INTERNALPX";
+  const char StipulationType_NUMBER_OF_PIECES[] = "PIECES";
+  const char StipulationType_MINIMUM_INCREMENT[] = "MININCR";
+  const char StipulationType_PRODUCTIONYEAR[] = "PROD";
+  const char StipulationType_WEIGHTED_AVERAGE_MATURITY[] = "WAM";
+  const char StipulationType_GEOGRAPHICS[] = "GEOG";
+  const char StipulationType_MINIMUMQUANTITY[] = "MINQTY";
+  const char StipulationType_POOL_IDENTIFIER[] = "POOL";
+  const char StipulationType_MATURITY_YEAR_AND_MONTH[] = "MAT";
+  const char StipulationType_PRICINGFREQUENCY[] = "PRICEFREQ";
+  const char StipulationType_SECURITYTYPEINCLUDEDOREXCLUDED[] = "SECTYPE";
+  const char StipulationType_EXPLICITLOTIDENTIFIER[] = "LOT";
+  const char StipulationType_MAXIMUM_SUBSTITUTIONS[] = "MAXSUBS";
+  const char StipulationType_PRIMARY_OR_SECONDARY_MARKET_INDICATOR[] = "PRIMARY";
+  const char StipulationType_WEIGHTEDAVERAGELOANAGE[] = "WALA";
+  const char StipulationType_BENCHMARK_PRICE_SOURCE[] = "PXSOURCE";
+  const char StipulationType_MINIMUMDENOMINATION[] = "MINDNOM";
+  const char StipulationType_YEAR_OR_YEAR_MONTH_OF_ISSUE[] = "ISSUE";
+  const char StipulationType_PAYMENTFREQUENCYCALENDAR[] = "PAYFREQ";
+  const char StipulationType_POOLS_MAXIMUM[] = "PMAX";
+  const char StipulationType_SUBSTITUTIONS_FREQUENCY[] = "SUBSFREQ";
+  const char StipulationType_BENCHMARKPRICESOURCE[] = "PXSOURCE";
+  const char StipulationType_ABSOLUTEPREPAYMENTSPEED[] = "ABS";
+  const char StipulationType_BANKQUALIFIED[] = "BANKQUAL";
+  const char StipulationType_YIELDRANGE[] = "YIELD";
+  const char StipulationType_BARGAINCONDITIONS[] = "BGNCON";
+  const char StipulationType_MONTHLYPREPAYMENTRATE[] = "MPR";
+  const char StipulationType_POOLSPERLOT[] = "PPL";
+  const char StipulationType_CONSTANT_PREPAYMENT_YIELD[] = "CPY";
+  const char StipulationType_MINIMUM_DENOMINATION[] = "MINDNOM";
+  const char StipulationType_ALTERNATIVE_MINIMUM_TAX[] = "AMT";
+  const char StipulationType_CUSTOMSTARTENDDATE[] = "CUSTOMDATE";
+  const char StipulationType_TYPEOFREDEMPTIONVALUESARE[] = "REDEMPTION";
+  const char StipulationType_PERCENT_OF_BMA_PREPAYMENT_CURVE[] = "PSA";
+  const char StipulationType_NUMBEROFPIECES[] = "PIECES";
+  const char StipulationType_AMT[] = "AMT";
+  const char StipulationType_CONSTANTPREPAYMENTPENALTY[] = "CPP";
+  const char StipulationType_MAXIMUM_ORDER_SIZE[] = "MAXORDQTY";
+  const char StipulationType_AUTOREINVESTMENTATRATEORBETTER[] = "AUTOREINV";
+  const char StipulationType_BARGAIN_CONDITIONS[] = "BGNCON";
+  const char StipulationType_GEOGRAPHICSANDRANGE[] = "GEOG";
+  const char StipulationType_LOTVARIANCEVALUEINPERCENTMAXIMUMOVERORUNDERALLOCATIONALLOWED[] = "LOTVAR";
+  const char StipulationType_TYPE_OF_ROLL_TRADE[] = "ROLLTYPE";
+  const char StipulationType_PRINCIPAL_OF_ROLLING_OR_CLOSING_TRADE[] = "REFPRIN";
+  const char StipulationType_PERCENT_OF_PROSPECTUS_PREPAYMENT_CURVE[] = "PPC";
+  const char StipulationType_WEIGHTED_AVERAGE_COUPON[] = "WAC";
+  const char StipulationType_AUTO_REINVESTMENT_AT_RATE_OR_BETTER[] = "AUTOREINV";
+  const char StipulationType_STRUCTURE[] = "STRUCT";
+  const char StipulationType_WHOLEPOOL[] = "WHOLE";
+  const char StipulationType_MARKET_SECTOR[] = "SECTOR";
+  const char StipulationType_MATURITY_RANGE[] = "MATURITY";
+  const char StipulationType_SECURITY_TYPE_INCLUDED_OR_EXCLUDED[] = "SECTYPE";
+  const char StipulationType_POOLSPERMILLION[] = "PPM";
+  const char StipulationType_TRADE_VARIANCE[] = "TRDVAR";
+  const char StipulationType_ISSUERSTICKER[] = "ISSUER";
+  const char StipulationType_PRICERANGE[] = "PRICE";
+  const char StipulationType_LOOKBACK_DAYS[] = "LOOKBACK";
+  const char StipulationType_OF_MANUFACTURED_HOUSING_PREPAYMENT_CURVE[] = "MHP";
+  const char StipulationType_POOLS_PER_MILLION[] = "PPM";
+  const char StipulationType_MINIMUMINCREMENT[] = "MININCR";
+  const char StipulationType_MATURITY_YEAR[] = "MAT";
+  const char StipulationType_RATINGSOURCEANDRANGE[] = "RATING";
+  const char StipulationType_AVERAGE_LOAN_SIZE[] = "AVSIZE";
+  const char StipulationType_PURPOSE[] = "PURPOSE";
+  const char StipulationType_ISO_CURRENCY_CODE[] = "CURRENCY";
+  const char StipulationType_RESTRICTED[] = "RESTRICTED";
+  const char StipulationType_BROKER_SALES_CREDIT_OVERRIDE[] = "SALESCREDITOVR";
+  const char StipulationType_WEIGHTED_AVERAGE_LIFE_COUPON[] = "WAL";
+  const char StipulationType_WEIGHTEDAVERAGECOUPON[] = "WAC";
+  const char StipulationType_OF_PROSPECTUS_PREPAYMENT_CURVE[] = "PPC";
+  const char StipulationType_ISSUESIZERANGE[] = "ISSUESIZE";
+  const char StipulationType_YEAR_OF_ISSUE[] = "ISSUE";
+  const char StipulationType_WEIGHTEDAVERAGELIFECOUPON[] = "WAL";
+  const char StipulationType_PAYMENT_FREQUENCY_CALENDAR[] = "PAYFREQ";
+  const char StipulationType_TRADERS_CREDIT[] = "TRADERCREDIT";
+  const char StipulationType_MINIMUM_QUANTITY[] = "MINQTY";
+  const char StipulationType_SUBSTITUTIONS_LEFT[] = "SUBSLEFT";
+  const char StipulationType_POOLS_PER_TRADE[] = "PPT";
+  const char StipulationType_TYPE_OF_REDEMPTION[] = "REDEMPTION";
+  const char StipulationType_CONSTANT_PREPAYMENT_PENALTY[] = "CPP";
+  const char StipulationType_WEIGHTED_AVERAGE_LOAN_AGE[] = "WALA";
+  const char StipulationType_PRICE_RANGE[] = "PRICE";
+  const char StipulationType_SUBSTITUTIONSFREQUENCYREPO[] = "SUBSFREQ";
+  const char StipulationType_PRODUCTION_YEAR[] = "PROD";
+  const char StipulationType_SINGLEMONTHLYMORTALITY[] = "SMM";
+  const char StipulationType_OF_BMA_PREPAYMENT_CURVE[] = "PSA";
+  const char StipulationType_EXPLICIT_LOT_IDENTIFIER[] = "LOT";
+  const char StipulationType_ABSOLUTE_PREPAYMENT_SPEED[] = "ABS";
+  const char StipulationType_MAXIMUMDENOMINATION[] = "MAXDNOM";
+  const char StipulationType_PERCENTOFPROSPECTUSPREPAYMENTCURVE[] = "PPC";
+  const char StipulationType_VALUATION_DISCOUNT[] = "HAIRCUT";
+  const char StipulationType_YIELD_TO_MATURITY[] = "YTM";
+  const char StipulationType_WEIGHTED_AVERAGE_LIFE[] = "WAL";
+  const char StipulationType_POOLSMAXIMUM[] = "PMAX";
+  const char StipulationType_YIELD_RANGE[] = "YIELD";
+  const char StipulationType_PRICING_FREQUENCY[] = "PRICEFREQ";
+  const char StipulationType_POOLSPERTRADE[] = "PPT";
+  const char StipulationType_MONTHLY_PREPAYMENT_RATE[] = "MPR";
+  const char StipulationType_COUPONRANGE[] = "COUPON";
+  const char StipulationType_MARKETSECTOR[] = "SECTOR";
+  const char StipulationType_AVERAGE_FICO_SCORE[] = "AVFICO";
+  const char StipulationType_INSURED[] = "INSURED";
+  const char StipulationType_BANK_QUALIFIED[] = "BANKQUAL";
+  const char PriceQuoteMethod_STANDARD[] = "STD";
+  const char PriceQuoteMethod_PERCENT_OF_PAR[] = "PCTPAR";
+  const char PriceQuoteMethod_INDEX[] = "INX";
+  const char PriceQuoteMethod_INTEREST_RATE_INDEX[] = "INT";
+  const int SessionRejectReason_REQUIREDTAGMISSING = 1;
+  const int SessionRejectReason_TAGSPECIFIEDOUTOFREQUIREDORDER = 14;
+  const int SessionRejectReason_NON_DATA_VALUE_INCLUDES_FIELD_DELIMITER = 17;
+  const int SessionRejectReason_INVALIDTAGNUMBER = 0;
+  const int SessionRejectReason_VALUEISINCORRECTOUTOFRANGEFORTHISTAG = 5;
+  const int SessionRejectReason_COMPID_PROBLEM = 9;
+  const int SessionRejectReason_SENDINGTIMEACCURACYPROBLEM = 10;
+  const int SessionRejectReason_SIGNATURE_PROBLEM = 8;
+  const int SessionRejectReason_TAG_NOT_DEFINED_FOR_THIS_MESSAGE_TYPE = 2;
+  const int SessionRejectReason_UNDEFINEDTAG = 3;
+  const int SessionRejectReason_XML_VALIDATION_ERROR = 12;
+  const int SessionRejectReason_NONDATAVALUEINCLUDESFIELDDELIMITERSOHCHARACTER = 17;
+  const int SessionRejectReason_UNDEFINED_TAG = 3;
+  const int SessionRejectReason_TAGAPPEARSMORETHANONCE = 13;
+  const int SessionRejectReason_INCORRECT_DATA_FORMAT_FOR_VALUE = 6;
+  const int SessionRejectReason_REPEATING_GROUP_FIELDS_OUT_OF_ORDER = 15;
+  const int SessionRejectReason_REQUIRED_TAG_MISSING = 1;
+  const int SessionRejectReason_INVALIDMSGTYPE = 11;
+  const int SessionRejectReason_XMLVALIDATIONERROR = 12;
+  const int SessionRejectReason_REPEATINGGROUPFIELDSOUTOFORDER = 15;
+  const int SessionRejectReason_INCORRECTNUMINGROUPCOUNTFORREPEATINGGROUP = 16;
+  const int SessionRejectReason_TAGSPECIFIEDWITHOUTAVALUE = 4;
+  const int SessionRejectReason_DECRYPTIONPROBLEM = 7;
+  const int SessionRejectReason_INCORRECTDATAFORMATFORVALUE = 6;
+  const int SessionRejectReason_OTHER = 99;
+  const int SessionRejectReason_INCORRECT_NUMINGROUP_COUNT_FOR_REPEATING_GROUP = 16;
+  const int SessionRejectReason_TAG_APPEARS_MORE_THAN_ONCE = 13;
+  const int SessionRejectReason_COMPIDPROBLEM = 9;
+  const int SessionRejectReason_TAG_SPECIFIED_OUT_OF_REQUIRED_ORDER = 14;
+  const int SessionRejectReason_SIGNATUREPROBLEM = 8;
+  const int SessionRejectReason_DECRYPTION_PROBLEM = 7;
+  const int SessionRejectReason_INVALID_TAG_NUMBER = 0;
+  const int SessionRejectReason_TAGNOTDEFINEDFORTHISMESSAGETYPE = 2;
+  const int SessionRejectReason_VALUE_IS_INCORRECT = 5;
+  const int SessionRejectReason_TAG_SPECIFIED_WITHOUT_A_VALUE = 4;
+  const int SessionRejectReason_INVALID_MSGTYPE = 11;
+  const int SessionRejectReason_SENDINGTIME_ACCURACY_PROBLEM = 10;
+  const int DeliveryType_TRI_PARTY = 2;
+  const int DeliveryType_HOLD_IN_CUSTODY = 3;
+  const int DeliveryType_FREE = 1;
+  const int DeliveryType_HOLDINCUSTODY = 3;
+  const int DeliveryType_VERSUSPAYMENT = 0;
+  const int DeliveryType_VERSUS_PAYMENT_DELIVER = 0;
+  const int DeliveryType_FREE_DELIVER = 1;
+  const int DeliveryType_TRIPARTY = 2;
+  const char Scope_LOCAL = '1';
+  const char Scope_LOCAL_MARKET = '1';
+  const char Scope_GLOBAL = '3';
+  const char Scope_NATIONAL = '2';
+  const char Scope_LOCALMARKET = '1';
+  const char DeleteReason_CANCELLATION = '0';
+  const char DeleteReason_CANCELTRADEBUST = '0';
+  const char DeleteReason_CANCELATION = '0';
+  const char DeleteReason_ERROR = '1';
+  const char InViewOfCommon_NO = 'N';
+  const char InViewOfCommon_YES = 'Y';
+  const char NoSides_BOTHSIDES = '2';
+  const char NoSides_ONESIDE = '1';
+  const char NoSides_ONE_SIDE = '1';
+  const char NoSides_BOTH_SIDES = '2';
+  const char SecurityType_TERM_LIQUIDITY_NOTE[] = "TLQN";
+  const char SecurityType_TO_BE_ANNOUNCED[] = "TBA";
+  const char SecurityType_REVERSE_REPURCHASE_AGREEMENT[] = "RVRP";
+  const char SecurityType_BRADY_BOND[] = "BRADY";
+  const char SecurityType_TREASURYINFLATIONPROTECTEDSECURITIES[] = "TIPS";
+  const char SecurityType_CORP_MORTGAGE_BACKED_SECURITIES[] = "CMBS";
+  const char SecurityType_CERTIFICATE_OF_PARTICIPATION[] = "COFP";
+  const char SecurityType_BUY_SELLBACK[] = "BUYSELL";
+  const char SecurityType_OPTIONS_ON_COMBO[] = "OOC";
+  const char SecurityType_MULTILEG_INSTRUMENT[] = "MLEG";
+  const char SecurityType_TAX_ALLOCATION[] = "TAXA";
+  const char SecurityType_US_TREASURY_NOTE_BOND[] = "UST";
+  const char SecurityType_REVENUE_ANTICIPATION_NOTE[] = "RAN";
+  const char SecurityType_YANKEECERTIFICATEOFDEPOSIT[] = "YCD";
+  const char SecurityType_MEDIUMTERMNOTES[] = "MTN";
+  const char SecurityType_SPECIAL_TAX[] = "SPCLT";
+  const char SecurityType_PRIVATE_EXPORT_FUNDING[] = "PEF";
+  const char SecurityType_EUROCERTIFICATEOFDEPOSIT[] = "EUCD";
+  const char SecurityType_SPECIAL_OBLIGATION[] = "SPCLO";
+  const char SecurityType_FX_SWAP[] = "FXSWAP";
+  const char SecurityType_REVOLVER_TERM_LOAN[] = "RVLVTRM";
+  const char SecurityType_TAXEXEMPTCOMMERCIALPAPER[] = "TECP";
+  const char SecurityType_REVOLVER_LOAN[] = "RVLV";
+  const char SecurityType_CASH[] = "CASH";
+  const char SecurityType_USTREASURYNOTEDEPRECATEDVALUEUSETNOTE[] = "UST";
+  const char SecurityType_MISCELLANEOUS_PASS_THRU[] = "MPT";
+  const char SecurityType_CONVERTIBLEBOND[] = "CB";
+  const char SecurityType_VARIABLE_RATE_DEMAND_NOTE[] = "VRDN";
+  const char SecurityType_MULTILEGINSTRUMENT[] = "MLEG";
+  const char SecurityType_FEDERAL_AGENCY_DISCOUNT_NOTE[] = "FADN";
+  const char SecurityType_SPECIALOBLIGATION[] = "SPCLO";
+  const char SecurityType_CANADIAN_TREASURY_BILLS[] = "CTB";
+  const char SecurityType_REVENUEANTICIPATIONNOTE[] = "RAN";
+  const char SecurityType_CERTIFICATEOFOBLIGATION[] = "COFO";
+  const char SecurityType_INDEXEDLINKED[] = "XLINKD";
+  const char SecurityType_LETTER_OF_CREDIT[] = "LOFC";
+  const char SecurityType_MANDATORYTENDER[] = "MT";
+  const char SecurityType_USTREASURYBOND[] = "TBOND";
+  const char SecurityType_TERMLOAN[] = "TERM";
+  const char SecurityType_OPTIONS_ON_FUTURES[] = "OOF";
+  const char SecurityType_PROMISSORYNOTE[] = "PN";
+  const char SecurityType_DUAL_CURRENCY[] = "DUAL";
+  const char SecurityType_WILDCARD_ENTRY[] = "WLD";
+  const char SecurityType_BANK_DEPOSITORY_NOTE[] = "BDN";
+  const char SecurityType_REPLACED[] = "REPLACD";
+  const char SecurityType_MORTGAGE_PRINCIPAL_ONLY[] = "MPO";
+  const char SecurityType_CANADIAN_TREASURY_NOTES[] = "CAN";
+  const char SecurityType_USTREASURYBILLDEPRECATEDVALUEUSETBILL[] = "USTB";
+  const char SecurityType_TOBEANNOUNCED[] = "TBA";
+  const char SecurityType_SECURITIES_PLEDGE[] = "SECPLEDGE";
+  const char SecurityType_YANKEE_CORPORATE_BOND[] = "YANK";
+  const char SecurityType_FX_SPOT[] = "FXSPOT";
+  const char SecurityType_LIQUIDITYNOTE[] = "LQN";
+  const char SecurityType_OVERNIGHT[] = "ONITE";
+  const char SecurityType_MORTGAGE_INTEREST_ONLY[] = "MIO";
+  const char SecurityType_BRIDGELOAN[] = "BRIDGE";
+  const char SecurityType_OTHER_ANTICIPATION_NOTES_BAN_GAN_ETC[] = "AN";
+  const char SecurityType_EXTENDED_COMM_NOTE[] = "XCN";
+  const char SecurityType_CERTIFICATEOFPARTICIPATION[] = "COFP";
+  const char SecurityType_CATS_TIGERS_LIONS[] = "ZOO";
+  const char SecurityType_FORWARD[] = "FORWARD";
+  const char SecurityType_YANKEE_CERTIFICATE_OF_DEPOSIT[] = "YCD";
+  const char SecurityType_PREFERRED_STOCK[] = "PS";
+  const char SecurityType_US_TREASURY_BOND[] = "TBOND";
+  const char SecurityType_TREASURY_INFLATION_PROTECTED_SECURITIES[] = "TIPS";
+  const char SecurityType_BUYSELLBACK[] = "BUYSELL";
+  const char SecurityType_OPTIONS_ON_PHYSICAL[] = "OOP";
+  const char SecurityType_ASSETBACKEDSECURITIES[] = "ABS";
+  const char SecurityType_NON_DELIVERABLE_FORWARD[] = "FXNDF";
+  const char SecurityType_MORTGAGE_PRINCIPLE_ONLY[] = "MPO";
+  const char SecurityType_MORTGAGE_IOETTE[] = "IET";
+  const char SecurityType_USD_SUPRANATIONAL_COUPONS[] = "SUPRA";
+  const char SecurityType_WARRANT[] = "WAR";
+  const char SecurityType_FOREIGN_EXCHANGE_CONTRACT[] = "FOR";
+  const char SecurityType_FOREIGNEXCHANGECONTRACT[] = "FOR";
+  const char SecurityType_EURO_CORPORATE_FLOATING_RATE_NOTES[] = "EUFRN";
+  const char SecurityType_SPECIAL_ASSESSMENT[] = "SPCLA";
+  const char SecurityType_EUROSUPRANATIONALCOUPONS[] = "EUSUPRA";
+  const char SecurityType_DEBTOR_IN_POSSESSION[] = "DINP";
+  const char SecurityType_CANADIAN_MONEY_MARKETS[] = "CAMM";
+  const char SecurityType_MORTGAGEPRINCIPALONLY[] = "MPO";
+  const char SecurityType_USTREASURYNOTE[] = "TNOTE";
+  const char SecurityType_DEBTORINPOSSESSION[] = "DINP";
+  const char SecurityType_REVENUEBONDS[] = "REV";
+  const char SecurityType_MORTGAGEINTERESTONLY[] = "MIO";
+  const char SecurityType_DEPOSITNOTES[] = "DN";
+  const char SecurityType_PRINCIPAL_STRIP_OF_A_CALLABLE_BOND_OR_NOTE[] = "TCAL";
+  const char SecurityType_MORTGAGEPRIVATEPLACEMENT[] = "MPP";
+  const char SecurityType_NO_SECURITY_TYPE[] = "NONE";
+  const char SecurityType_SPECIALASSESSMENT[] = "SPCLA";
+  const char SecurityType_LETTEROFCREDIT[] = "LOFC";
+  const char SecurityType_TAXALLOCATION[] = "TAXA";
+  const char SecurityType_TAXABLE_MUNICIPAL_CP[] = "TMCP";
+  const char SecurityType_OPTION[] = "OPT";
+  const char SecurityType_NOSECURITYTYPE[] = "NONE";
+  const char SecurityType_PROMISSORY_NOTE[] = "PN";
+  const char SecurityType_COLLATERALIZEDMORTGAGEOBLIGATION[] = "CMO";
+  const char SecurityType_DUALCURRENCY[] = "DUAL";
+  const char SecurityType_CREDIT_DEFAULT_SWAP[] = "CDS";
+  const char SecurityType_TAXANTICIPATIONNOTE[] = "TAN";
+  const char SecurityType_MORTGAGE_PRIVATE_PLACEMENT[] = "MPP";
+  const char SecurityType_GENERAL_OBLIGATION_BONDS[] = "GO";
+  const char SecurityType_SHORTTERMLOANNOTE[] = "STN";
+  const char SecurityType_COMMERCIAL_PAPER[] = "CP";
+  const char SecurityType_MORTGAGE_BACKED_SECURITIES[] = "MBS";
+  const char SecurityType_EURO_SOVEREIGNS[] = "EUSOV";
+  const char SecurityType_TAX_REVENUE_ANTICIPATION_NOTE[] = "TRAN";
+  const char SecurityType_PFANDBRIEFE[] = "PFAND";
+  const char SecurityType_OTHER_ANTICIPATION_NOTES[] = "AN";
+  const char SecurityType_TAX_EXEMPT_COMMERCIAL_PAPER[] = "TECP";
+  const char SecurityType_PRIVATEEXPORTFUNDING[] = "PEF";
+  const char SecurityType_OTHERANTICIPATIONNOTESBANGANETC[] = "AN";
+  const char SecurityType_TAX_ANTICIPATION_NOTE[] = "TAN";
+  const char SecurityType_TREASURY_BILL[] = "TB";
+  const char SecurityType_PLAZOS_FIJOS[] = "PZFJ";
+  const char SecurityType_EURO_COMMERCIAL_PAPER[] = "EUCP";
+  const char SecurityType_MANDATORY_TENDER[] = "MT";
+  const char SecurityType_COLLATERALIZED_MORTGAGE_OBLIGATION[] = "CMO";
+  const char SecurityType_PREFERREDSTOCK[] = "PS";
+  const char SecurityType_VARIABLERATEDEMANDNOTE[] = "VRDN";
+  const char SecurityType_DEFAULTED[] = "DEFLTED";
+  const char SecurityType_INDEXED_LINKED[] = "XLINKD";
+  const char SecurityType_IOETTE_MORTGAGE[] = "IET";
+  const char SecurityType_CERTIFICATE_OF_DEPOSIT[] = "CD";
+  const char SecurityType_BILLOFEXCHANGES[] = "BOX";
+  const char SecurityType_PRINCIPALSTRIPOFACALLABLEBONDORNOTE[] = "TCAL";
+  const char SecurityType_EUROSOVEREIGNS[] = "EUSOV";
+  const char SecurityType_TIME_DEPOSIT[] = "TD";
+  const char SecurityType_CORPORATEBOND[] = "CORP";
+  const char SecurityType_FX_FORWARD[] = "FXFWD";
+  const char SecurityType_US_CORPORATE_FLOATING_RATE_NOTES[] = "FRN";
+  const char SecurityType_US_TREASURY_NOTE_TNOTE[] = "TNOTE";
+  const char SecurityType_MORTGAGEBACKEDSECURITIES[] = "MBS";
+  const char SecurityType_DEPOSIT_NOTES[] = "DN";
+  const char SecurityType_CORPORATEPRIVATEPLACEMENT[] = "CPP";
+  const char SecurityType_FEDERAL_HOUSING_AUTHORITY[] = "FHA";
+  const char SecurityType_MATURED[] = "MATURED";
+  const char SecurityType_SWINGLINEFACILITY[] = "SWING";
+  const char SecurityType_MULTI_LEG_INSTRUMENT[] = "MLEG";
+  const char SecurityType_CANADIAN_PROVINCIAL_BONDS[] = "PROV";
+  const char SecurityType_MEDIUM_TERM_NOTES[] = "MTN";
+  const char SecurityType_RETIRED[] = "RETIRED";
+  const char SecurityType_MUTUAL_FUND[] = "MF";
+  const char SecurityType_SECURITIESPLEDGE[] = "SECPLEDGE";
+  const char SecurityType_COMMERCIALPAPER[] = "CP";
+  const char SecurityType_REPURCHASE_AGREEMENT[] = "RP";
+  const char SecurityType_BILL_OF_EXCHANGES[] = "BOX";
+  const char SecurityType_MUTUALFUND[] = "MF";
+  const char SecurityType_COLLATERALIZE_MORTGAGE_OBLIGATION[] = "CMO";
+  const char SecurityType_EXTENDEDCOMMNOTE[] = "XCN";
+  const char SecurityType_FEDERAL_HOME_LOAN[] = "FHL";
+  const char SecurityType_REVOLVERLOAN[] = "RVLV";
+  const char SecurityType_PRINCIPAL_STRIP_FROM_A_NON_CALLABLE_BOND_OR_NOTE[] = "TPRN";
+  const char SecurityType_STRUCTURED_NOTES[] = "STRUCT";
+  const char SecurityType_INTERESTSTRIPFROMANYBONDORNOTE[] = "TINT";
+  const char SecurityType_CANADIAN_MORTGAGE_BONDS[] = "CMB";
+  const char SecurityType_REPURCHASE[] = "REPO";
+  const char SecurityType_AGENCY_POOLS[] = "POOL";
+  const char SecurityType_EURO_CORPORATE_BOND[] = "EUCORP";
+  const char SecurityType_SWING_LINE_FACILITY[] = "SWING";
+  const char SecurityType_USDSUPRANATIONALCOUPONS[] = "SUPRA";
+  const char SecurityType_REVOLVERTERMLOAN[] = "RVLVTRM";
+  const char SecurityType_LIQUIDITY_NOTE[] = "LQN";
+  const char SecurityType_MISCELLANEOUSPASSTHROUGH[] = "MPT";
+  const char SecurityType_CONVERTIBLE_BOND[] = "CB";
+  const char SecurityType_ASSET_BACKED_SECURITIES[] = "ABS";
+  const char SecurityType_WILDCARDENTRY[] = "WLD";
+  const char SecurityType_YANKEECORPORATEBOND[] = "YANK";
+  const char SecurityType_TAXREVENUEANTICIPATIONNOTE[] = "TRAN";
+  const char SecurityType_GOVERNMENT_NATIONAL_MORTGAGE_ASSOCIATION[] = "GN";
+  const char SecurityType_BRADYBOND[] = "BRADY";
+  const char SecurityType_USTREASURYBILL[] = "TBILL";
+  const char SecurityType_STUDENT_LOAN_MARKETING_ASSOCIATION[] = "SL";
+  const char SecurityType_EUROCORPORATEBOND[] = "EUCORP";
+  const char SecurityType_FUTURE[] = "FUT";
+  const char SecurityType_US_TREASURY_BILL_TBILL[] = "TBILL";
+  const char SecurityType_TREASURIES_PLUS_AGENCY_DEBENTURE[] = "GOVT";
+  const char SecurityType_EURO_CERTIFICATE_OF_DEPOSIT[] = "EUCD";
+  const char SecurityType_BANKERS_ACCEPTANCE[] = "BA";
+  const char SecurityType_AMENDEDRESTATED[] = "AMENDED";
+  const char SecurityType_TERM_LOAN[] = "TERM";
+  const char SecurityType_BANKNOTES[] = "BN";
+  const char SecurityType_SHORT_TERM_LOAN_NOTE[] = "STN";
+  const char SecurityType_AMENDED_RESTATED[] = "AMENDED";
+  const char SecurityType_INTEREST_RATE_SWAP[] = "IRS";
+  const char SecurityType_EUROCOMMERCIALPAPER[] = "EUCP";
+  const char SecurityType_US_TREASURY_NOTE_UST[] = "UST";
+  const char SecurityType_US_TREASURY_BILL_USTB[] = "USTB";
+  const char SecurityType_FEDERAL_NATIONAL_MORTGAGE_ASSOCIATION[] = "FN";
+  const char SecurityType_WITHDRAWN[] = "WITHDRN";
+  const char SecurityType_CORPORATE_PRIVATE_PLACEMENT[] = "CPP";
+  const char SecurityType_CERTIFICATE_OF_OBLIGATION[] = "COFO";
+  const char SecurityType_INTEREST_STRIP_FROM_ANY_BOND_OR_NOTE[] = "TINT";
+  const char SecurityType_STRUCTUREDNOTES[] = "STRUCT";
+  const char SecurityType_BANKERSACCEPTANCE[] = "BA";
+  const char SecurityType_NO_ISITC_SECURITY_TYPE[] = "NONE";
+  const char SecurityType_CALLLOANS[] = "CL";
+  const char SecurityType_MISCELLANEOUS_PASS_THROUGH[] = "MPT";
+  const char SecurityType_FEDERAL_AGENCY_COUPON[] = "FAC";
+  const char SecurityType_CORPORATE_BOND[] = "CORP";
+  const char SecurityType_WILDCARD_ENTRY_FOR_USE_ON_SECURITY_DEFINITION_REQUEST[] = "?";
+  const char SecurityType_CORPMORTGAGEBACKEDSECURITIES[] = "CMBS";
+  const char SecurityType_EURO_SUPRANATIONAL_COUPONS[] = "EUSUPRA";
+  const char SecurityType_CALL_LOANS[] = "CL";
+  const char SecurityType_CERTIFICATEOFDEPOSIT[] = "CD";
+  const char SecurityType_SECURED_LIQUIDITY_NOTE[] = "SLQN";
+  const char SecurityType_TIMEDEPOSIT[] = "TD";
+  const char SecurityType_BANK_NOTES[] = "BN";
+  const char SecurityType_US_TREASURY_BILL[] = "USTB";
+  const char SecurityType_GENERALOBLIGATIONBONDS[] = "GO";
+  const char SecurityType_COMMONSTOCK[] = "CS";
+  const char SecurityType_PLAZOSFIJOS[] = "PZFJ";
+  const char SecurityType_SECURITIES_LOAN[] = "SECLOAN";
+  const char SecurityType_SECURITIESLOAN[] = "SECLOAN";
+  const char SecurityType_MUNICIPAL_BOND[] = "MUNI";
+  const char SecurityType_REVENUE_BONDS[] = "REV";
+  const char SecurityType_SPECIALTAX[] = "SPCLT";
+  const char SecurityType_PRINCIPALSTRIPFROMANONCALLABLEBONDORNOTE[] = "TPRN";
+  const char SecurityType_BRIDGE_LOAN[] = "BRIDGE";
+  const char SecurityType_IOETTEMORTGAGE[] = "IET";
+  const char SecurityType_FEDERALAGENCYCOUPON[] = "FAC";
+  const char SecurityType_COMMON_STOCK[] = "CS";
+  const char SecurityType_FEDERALAGENCYDISCOUNTNOTE[] = "FADN";
+  const char RoundingDirection_ROUNDUP = '2';
+  const char RoundingDirection_ROUND_DOWN = '1';
+  const char RoundingDirection_ROUND_TO_NEAREST = '0';
+  const char RoundingDirection_ROUND_UP = '2';
+  const char RoundingDirection_ROUNDDOWN = '1';
+  const char RoundingDirection_ROUNDNEAREST = '0';
+  const char TimeUnit_MINUTE[] = "Min";
+  const char TimeUnit_WEEK[] = "Wk";
+  const char TimeUnit_SECOND[] = "S";
+  const char TimeUnit_MONTH[] = "Mo";
+  const char TimeUnit_HOUR[] = "H";
+  const char TimeUnit_DAY[] = "D";
+  const char TimeUnit_YEAR[] = "Yr";
+  const int LegSwapType_MODIFIED_DURATION = 2;
+  const int LegSwapType_PARFORPAR = 1;
+  const int LegSwapType_RISK = 4;
+  const int LegSwapType_PAR_FOR_PAR = 1;
+  const int LegSwapType_MODIFIEDDURATION = 2;
+  const int LegSwapType_PROCEEDS = 5;
+  const char IOITransType_REPLACE = 'R';
+  const char IOITransType_NEW = 'N';
+  const char IOITransType_CANCEL = 'C';
+  const int PosReqResult_REQUESTFORPOSITIONNOTSUPPORTED = 4;
+  const int PosReqResult_VALID_REQUEST = 0;
+  const int PosReqResult_NO_POSITIONS_FOUND_THAT_MATCH_CRITERIA = 2;
+  const int PosReqResult_NOT_AUTHORIZED_TO_REQUEST_POSITIONS = 3;
+  const int PosReqResult_INVALID_OR_UNSUPPORTED_REQUEST = 1;
+  const int PosReqResult_NOTAUTHORIZEDTOREQUESTPOSITIONS = 3;
+  const int PosReqResult_OTHER = 99;
+  const int PosReqResult_NOPOSITIONSFOUNDTHATMATCHCRITERIA = 2;
+  const int PosReqResult_REQUEST_FOR_POSITION_NOT_SUPPORTED = 4;
+  const int PosReqResult_INVALIDORUNSUPPORTEDREQUEST = 1;
+  const int PosReqResult_VALIDREQUEST = 0;
+  const char SettlInstMode_ACCOUNTOVERRIDING = '2';
+  const char SettlInstMode_REJECT = '5';
+  const char SettlInstMode_DEFAULT = '0';
+  const char SettlInstMode_REQUEST_REJECT = '5';
+  const char SettlInstMode_SPECIFIC_ALLOCATION_ACCOUNT_OVERRIDING = '2';
+  const char SettlInstMode_SIPROVIDED = '1';
+  const char SettlInstMode_ACCOUNTSTANDING = '3';
+  const char SettlInstMode_CIVORDERSINGLEACCT = '4';
+  const char SettlInstMode_SPECIFIC_ALLOCATION_ACCOUNT_STANDING = '3';
+  const char SettlInstMode_SPECIFIC_ORDER_FOR_A_SINGLE_ACCOUNT = '4';
+  const char SettlInstMode_STANDING_INSTRUCTIONS_PROVIDED = '1';
+  const char PreviouslyReported_NO = 'N';
+  const char PreviouslyReported_YES = 'Y';
+  const char CustOrderHandlingInst_PEGGED[] = "PEG";
+  const char CustOrderHandlingInst_MARKET_ON_OPEN[] = "MOO";
+  const char CustOrderHandlingInst_SCALE[] = "SCL";
+  const char CustOrderHandlingInst_FILL_OR_KILL[] = "FOK";
+  const char CustOrderHandlingInst_ALL_OR_NONE[] = "AON";
+  const char CustOrderHandlingInst_NOT_HELD[] = "NH";
+  const char CustOrderHandlingInst_DIRECTED_ORDER[] = "DIR";
+  const char CustOrderHandlingInst_STOP_STOCK_TRANSACTION[] = "S.W";
+  const char CustOrderHandlingInst_OVER_THE_DAY[] = "OVD";
+  const char CustOrderHandlingInst_ADD_ON_ORDER[] = "ADD";
+  const char CustOrderHandlingInst_MARKET_AT_CLOSE[] = "MAC";
+  const char CustOrderHandlingInst_LIMIT_ON_OPEN[] = "LOO";
+  const char CustOrderHandlingInst_CASH_NOT_HELD[] = "CNH";
+  const char CustOrderHandlingInst_MARKET_ON_CLOSE[] = "MOC";
+  const char CustOrderHandlingInst_TIME_ORDER[] = "TMO";
+  const char CustOrderHandlingInst_LIMIT_ON_CLOSE[] = "LOC";
+  const char CustOrderHandlingInst_IMMEDIATE_OR_CANCEL[] = "IOC";
+  const char CustOrderHandlingInst_TRAILING_STOP[] = "TS";
+  const char CustOrderHandlingInst_WORK[] = "WRK";
+  const char CustOrderHandlingInst_RESERVE_SIZE_ORDER[] = "RSV";
+  const char CustOrderHandlingInst_MINIMUM_QUANTITY[] = "MQT";
+  const char CustOrderHandlingInst_MARKET_AT_OPEN[] = "MAO";
+  const char CustOrderHandlingInst_IMBALANCE_ONLY[] = "IO";
+  const char CustOrderHandlingInst_EXCHANGE_FOR_PHYSICAL_TRANSACTION[] = "E.W";
+  const char SecurityStatus_INACTIVE[] = "2";
+  const char SecurityStatus_ACTIVE[] = "1";
+  const char ProcessCode_SOFT_DOLLAR = '1';
+  const char ProcessCode_STEPOUTSOFT = '5';
+  const char ProcessCode_STEPOUT = '3';
+  const char ProcessCode_PLAN_SPONSOR = '6';
+  const char ProcessCode_STEP_IN = '2';
+  const char ProcessCode_STEPIN = '2';
+  const char ProcessCode_REGULAR = '0';
+  const char ProcessCode_SOFTDOLLAR = '1';
+  const char ProcessCode_PLANSPONSOR = '6';
+  const char ProcessCode_STEPINSOFT = '4';
+  const char ProcessCode_SOFT_DOLLAR_STEP_OUT = '5';
+  const char ProcessCode_STEP_OUT = '3';
+  const char ProcessCode_SOFT_DOLLAR_STEP_IN = '4';
+  const char ExecInst_TRY_TO_STOP = 'Y';
+  const char ExecInst_PEG_TO_LIMIT_PRICE = 'd';
+  const char ExecInst_EXECUTE_AS_DURATION_NEUTRAL = 's';
+  const char ExecInst_PARTICIPANT_DONT_INITIATE = '6';
+  const char ExecInst_REINSTATE_ON_TRADING_HALT = 'J';
+  const char ExecInst_NO_CROSS = 'A';
+  const char ExecInst_PEGVWAP = 'W';
+  const char ExecInst_STRICT_SCALE = '7';
+  const char ExecInst_AON = 'G';
+  const char ExecInst_TRAILING_STOP_PEG = 'a';
+  const char ExecInst_TRAILSTOPPEG = 'a';
+  const char ExecInst_MARKPEG = 'P';
+  const char ExecInst_MIDPRCPEG = 'M';
+  const char ExecInst_OKCROSS = 'B';
+  const char ExecInst_EXECUTE_AS_FX_NEUTRAL = 't';
+  const char ExecInst_CUSTDISPINST = 'U';
+  const char ExecInst_IGNOREPRICECHK = 'c';
+  const char ExecInst_STRICTLIMIT = 'b';
+  const char ExecInst_WORKTOSTRATEGY = 'e';
+  const char ExecInst_OK_TO_CROSS = 'B';
+  const char ExecInst_SUSPEND_ON_SYSTEM_FAILURE = 'l';
+  const char ExecInst_REINSTATE_ON_SYSTEM_FAILURE = 'H';
+  const char ExecInst_GO_ALONG = '3';
+  const char ExecInst_INSTITONLY = 'I';
+  const char ExecInst_DO_NOT_INCREASE = 'E';
+  const char ExecInst_SUSPEND = 'S';
+  const char ExecInst_TRYTOSTOP = 'Y';
+  const char ExecInst_FIXED_PEG_TO_LOCAL_BEST_BID_OR_OFFER_AT_TIME_OF_ORDER = 'T';
+  const char ExecInst_SUSPEND_ON_TRADING_HALT = 'm';
+  const char ExecInst_INTERMARKET_SWEEP = 'f';
+  const char ExecInst_IGNORE_PRICE_VALIDITY_CHECKS = 'c';
+  const char ExecInst_PARTICIPATE_DONT_INITIATE = '6';
+  const char ExecInst_LASTPEG = 'L';
+  const char ExecInst_PEG_TO_VWAP = 'W';
+  const char ExecInst_PRIMARY_PEG = 'R';
+  const char ExecInst_NONNEGO = 'N';
+  const char ExecInst_BEST_EXECUTION = 'k';
+  const char ExecInst_STAY_ON_BID_SIDE = '9';
+  const char ExecInst_NOTHELD = '1';
+  const char ExecInst_STRICTSCALE = '7';
+  const char ExecInst_REINSTATE_ON_CONNECTION_LOSS = 'n';
+  const char ExecInst_DNI = 'E';
+  const char ExecInst_TRYTOSCALE = '8';
+  const char ExecInst_PERCENT_OF_VOLUME = 'D';
+  const char ExecInst_GOALONG = '3';
+  const char ExecInst_WORK = '2';
+  const char ExecInst_HELD = '5';
+  const char ExecInst_NOCROSS = 'A';
+  const char ExecInst_RELEASE_FROM_SUSPENSION = 'q';
+  const char ExecInst_STRICT_LIMIT = 'b';
+  const char ExecInst_OPENPEG = 'O';
+  const char ExecInst_STAY_ON_BIDSIDE = '9';
+  const char ExecInst_STAY_ON_OFFERSIDE = '0';
+  const char ExecInst_OVER_THE_DAY = '4';
+  const char ExecInst_RESTATEONTRADINGHALT = 'J';
+  const char ExecInst_INSTITUTIONS_ONLY = 'I';
+  const char ExecInst_NOT_HELD = '1';
+  const char ExecInst_CANCELONTRADINGHALT = 'K';
+  const char ExecInst_CANCELONSYSFAIL = 'Q';
+  const char ExecInst_CANCEL_ON_SYSTEM_FAILURE = 'Q';
+  const char ExecInst_MARKET_PEG = 'P';
+  const char ExecInst_TRADEALONG = 'X';
+  const char ExecInst_CALL_FIRST = 'C';
+  const char ExecInst_PEGTOLIMIT = 'd';
+  const char ExecInst_EXECUTE_AS_DELTA_NEUTRAL_USING_VOLATILITY_PROVIDED = 'r';
+  const char ExecInst_SINGLE_EXECUTION_REQUESTED_FOR_BLOCK_TRADE = 'j';
+  const char ExecInst_NON_NEGOTIABLE = 'N';
+  const char ExecInst_TRY_TO_SCALE = '8';
+  const char ExecInst_EXTERNAL_ROUTING_ALLOWED = 'g';
+  const char ExecInst_WORK_TO_TARGET_STRATEGY = 'e';
+  const char ExecInst_STAY_ON_OFFER_SIDE = '0';
+  const char ExecInst_CUSTOMER_DISPLAY_INSTRUCTION = 'U';
+  const char ExecInst_OVERDAY = '4';
+  const char ExecInst_LAST_PEG = 'L';
+  const char ExecInst_CALLFIRST = 'C';
+  const char ExecInst_REINSTATE_ON_SYSTEM_FAILUE = 'H';
+  const char ExecInst_DO_NOT_REDUCE = 'F';
+  const char ExecInst_MID_PRICE_PEG = 'M';
+  const char ExecInst_ALL_OR_NONE = 'G';
+  const char ExecInst_OPENING_PEG = 'O';
+  const char ExecInst_PERCVOL = 'D';
+  const char ExecInst_SUSPEND_ON_CONNECTION_LOSS = 'p';
+  const char ExecInst_CANCEL_ON_CONNECTION_LOSS = 'o';
+  const char ExecInst_EXTERNAL_ROUTING_NOT_ALLOWED = 'h';
+  const char ExecInst_CANCEL_IF_NOT_BEST = 'Z';
+  const char ExecInst_PARTNOTINIT = '6';
+  const char ExecInst_CXLIFNOTBEST = 'Z';
+  const char ExecInst_NETTING = 'V';
+  const char ExecInst_IMBALANCE_ONLY = 'i';
+  const char ExecInst_CANCEL_ON_TRADING_HALT = 'K';
+  const char ExecInst_TRADE_ALONG = 'X';
+  const char ExecInst_DNR = 'F';
+  const char ExecInst_STAYOFFER = '0';
+  const char ExecInst_STAYBID = '9';
+  const char ExecInst_RESTATEONSYSFAIL = 'H';
+  const char ExecInst_PRIMPEG = 'R';
+  const char ExecType_REPLACE = '5';
+  const char ExecType_NEW = '0';
+  const char ExecType_CALCULATED = 'B';
+  const char ExecType_PENDINGNEW = 'A';
+  const char ExecType_ORDERSTATUS = 'I';
+  const char ExecType_PENDING_CANCEL = '6';
+  const char ExecType_TRADE_IN_A_CLEARING_HOLD = 'J';
+  const char ExecType_TRADE_HAS_BEEN_RELEASED_TO_CLEARING = 'K';
+  const char ExecType_ORDER_STATUS = 'I';
+  const char ExecType_PENDING_CANCEL_REPLACE = '6';
+  const char ExecType_PARTIAL_FILL = '1';
+  const char ExecType_PENDINGCXL = '6';
+  const char ExecType_PENDING_NEW = 'A';
+  const char ExecType_STOPPED = '7';
+  const char ExecType_CANCELED = '4';
+  const char ExecType_PENDING_REPLACE = 'E';
+  const char ExecType_TRADE = 'F';
+  const char ExecType_TRADE_CORRECT = 'G';
+  const char ExecType_PENDINGREPLACE = 'E';
+  const char ExecType_SUSPENDED = '9';
+  const char ExecType_FILL = '2';
+  const char ExecType_DONE = '3';
+  const char ExecType_RESTATED = 'D';
+  const char ExecType_REJECTED = '8';
+  const char ExecType_REPLACED = '5';
+  const char ExecType_EXPIRED = 'C';
+  const char ExecType_DONE_FOR_DAY = '3';
+  const char ExecType_TRIGGERED_OR_ACTIVATED_BY_SYSTEM = 'L';
+  const char ExecType_TRADECORRECT = 'G';
+  const char ExecType_TRADECANCEL = 'H';
+  const char ExecType_TRADE_CANCEL = 'H';
+  const char ExecType_CANCELLED = '4';
+  const int MultilegModel_USER_DEFINED_MULTLEG_SECURITY = 1;
+  const int MultilegModel_PREDEFINED_MULTILEG_SECURITY = 0;
+  const int MultilegModel_USER_DEFINED_NON_SECURITIZED_MULTILEG = 2;
+  const int EventType_SWAP_NEXT_START_DATE = 11;
+  const int EventType_LAST_ELIGIBLE_TRADE_DATE = 7;
+  const int EventType_FIRST_DELIVERY_DATE = 13;
+  const int EventType_TENDER = 3;
+  const int EventType_INITIAL_INVENTORY_DUE_DATE = 15;
+  const int EventType_FIRST_INTENT_DATE = 17;
+  const int EventType_ACTIVATION = 5;
+  const int EventType_PUT = 1;
+  const int EventType_SWAP_START_DATE = 8;
+  const int EventType_SWAP_NEXT_ROLL_DATE = 12;
+  const int EventType_LAST_DELIVERY_DATE = 14;
+  const int EventType_POSITION_REMOVAL_DATE = 19;
+  const int EventType_SWAP_ROLL_DATE = 10;
+  const int EventType_FINAL_INVENTORY_DUE_DATE = 16;
+  const int EventType_OTHER = 99;
+  const int EventType_INACTIVIATION = 6;
+  const int EventType_SINKINGFUNDCALL = 4;
+  const int EventType_SWAP_END_DATE = 9;
+  const int EventType_LAST_INTENT_DATE = 18;
+  const int EventType_SINKING_FUND_CALL = 4;
+  const int EventType_CALL = 2;
+  const int TradeAllocIndicator_ALLOCATIONREQUIREDALLOCATIONINFORMATIONNOTPROVIDED = 1;
+  const int TradeAllocIndicator_ALLOCATION_REQUIRED = 1;
+  const int TradeAllocIndicator_ALLOCATION_TO_CLAIM_ACCOUNT = 5;
+  const int TradeAllocIndicator_USEALLOCATIONPROVIDEDWITHTHETRADE = 2;
+  const int TradeAllocIndicator_ALLOCATION_FROM_EXECUTOR = 4;
+  const int TradeAllocIndicator_USE_ALLOCATION_PROVIDED_WITH_THE_TRADE = 2;
+  const int TradeAllocIndicator_ALLOCATIONNOTREQUIRED = 0;
+  const int TradeAllocIndicator_ALLOCATION_NOT_REQUIRED = 0;
+  const int TradeAllocIndicator_ALLOCATION_GIVE_UP_EXECUTOR = 3;
+  const int UserStatus_NOT_LOGGED_IN = 2;
+  const int UserStatus_PASSWORD_INCORRECT = 4;
+  const int UserStatus_USERNOTRECOGNISED = 3;
+  const int UserStatus_LOGGED_IN = 1;
+  const int UserStatus_PASSWORDCHANGED = 5;
+  const int UserStatus_FORCED_USER_LOGOUT_BY_EXCHANGE = 7;
+  const int UserStatus_USER_NOT_RECOGNISED = 3;
+  const int UserStatus_NOTLOGGEDIN = 2;
+  const int UserStatus_PASSWORD_CHANGED = 5;
+  const int UserStatus_OTHER = 6;
+  const int UserStatus_LOGGEDIN = 1;
+  const int UserStatus_SESSION_SHUTDOWN_WARNING = 8;
+  const int UserStatus_PASSWORDINCORRECT = 4;
+  const char InstrRegistry_PHYSICAL[] = "ZZ";
+  const char InstrRegistry_COUNTRY[] = "ISO";
+  const char InstrRegistry_CUSTODIAN[] = "BIC";
+  const int OrderDelayUnit_WEEKS = 13;
+  const int OrderDelayUnit_TENTHS_OF_A_SECOND = 1;
+  const int OrderDelayUnit_SECONDS = 0;
+  const int OrderDelayUnit_MONTHS = 14;
+  const int OrderDelayUnit_YEARS = 15;
+  const int OrderDelayUnit_NANOSECONDS = 5;
+  const int OrderDelayUnit_HUNDREDTHS_OF_A_SECOND = 2;
+  const int OrderDelayUnit_HOURS = 11;
+  const int OrderDelayUnit_MICROSECONDS = 4;
+  const int OrderDelayUnit_MINUTES = 10;
+  const int OrderDelayUnit_MILLISECONDS = 3;
+  const int OrderDelayUnit_DAYS = 12;
+  const char TradedFlatSwitch_NO = 'N';
+  const char TradedFlatSwitch_YES = 'Y';
+  const int TrdRptStatus_ACCEPTED_WITH_ERRORS = 3;
+  const int TrdRptStatus_REJECTED = 1;
+  const int TrdRptStatus_ACCEPTED = 0;
+  const int QuoteStatus_CANCELEDDUETOLOCKMARKET = 14;
+  const int QuoteStatus_REJ = 5;
+  const int QuoteStatus_PENDING = 10;
+  const int QuoteStatus_LOCKEDMARKETWARNING = 12;
+  const int QuoteStatus_CROSSMARKETWARNING = 13;
+  const int QuoteStatus_REMOVED = 6;
+  const int QuoteStatus_CXLUNDER = 3;
+  const int QuoteStatus_PENDING_END_TRADE = 19;
+  const int QuoteStatus_CROSS_MARKET_WARNING = 13;
+  const int QuoteStatus_QUOTENOTFOUND = 9;
+  const int QuoteStatus_CANCELED = 17;
+  const int QuoteStatus_LOCKED_MARKET_WARNING = 12;
+  const int QuoteStatus_CXLSYM = 1;
+  const int QuoteStatus_CANCELED_FOR_UNDERLYING = 3;
+  const int QuoteStatus_UNSOLICITED_QUOTE_REPLENISHMENT = 18;
+  const int QuoteStatus_TOO_LATE_TO_END = 20;
+  const int QuoteStatus_CANCELED_DUE_TO_LOCK_MARKET = 14;
+  const int QuoteStatus_CANCELED_DUE_TO_CROSS_MARKET = 15;
+  const int QuoteStatus_ACCPT = 0;
+  const int QuoteStatus_CANCELED_FOR_SECURITY_TYPE = 2;
+  const int QuoteStatus_CANCELED_ALL = 4;
+  const int QuoteStatus_PASS = 11;
+  const int QuoteStatus_CANCELEDDUETOCROSSMARKET = 15;
+  const int QuoteStatus_REJECTED = 5;
+  const int QuoteStatus_QUERY = 8;
+  const int QuoteStatus_CXLSECTYPE = 2;
+  const int QuoteStatus_ACCEPTED = 0;
+  const int QuoteStatus_EXPIRED = 7;
+  const int QuoteStatus_CANCELED_FOR_SYMBOL = 1;
+  const int QuoteStatus_REMOVED_FROM_MARKET = 6;
+  const int QuoteStatus_ACTIVE = 16;
+  const int QuoteStatus_CANCEL_FOR_SYMBOL = 1;
+  const int QuoteStatus_CXLALL = 4;
+  const int QuoteStatus_QUOTE_NOT_FOUND = 9;
+  const char SolicitedFlag_NO = 'N';
+  const char SolicitedFlag_YES = 'Y';
+  const int RiskLimitType_GROSS_LIMIT = 1;
+  const int RiskLimitType_SHORT_LIMIT = 5;
+  const int RiskLimitType_LONG_LIMIT = 4;
+  const int RiskLimitType_NET_LIMIT = 2;
+  const int RiskLimitType_EXPOSURE = 3;
+  const int ShortSaleReason_DEALER_SOLD_SHORT = 0;
+  const int ShortSaleReason_DEALERSOLDSHORTEXEMPT = 1;
+  const int ShortSaleReason_QSR_OR_AGU_CONTRA_SIDE_SOLD_SHORT_EXEMPT = 5;
+  const int ShortSaleReason_DEALERSOLDSHORT = 0;
+  const int ShortSaleReason_SELLING_CUSTOMER_SOLD_SHORT = 2;
+  const int ShortSaleReason_SELLING_CUSTOMER_SOLD_SHORT_EXEMPT = 3;
+  const int ShortSaleReason_SELLINGCUSTOMERSOLDSHORT = 2;
+  const int ShortSaleReason_SELLINGCUSTOMERSOLDSHORTEXEMPT = 3;
+  const int ShortSaleReason_DEALER_SOLD_SHORT_EXEMPT = 1;
+  const int ShortSaleReason_QSRORAGUCONTRASIDESOLDSHORT = 4;
+  const int ShortSaleReason_QUALIFIED_SERVICE_REPRESENTATIVE = 4;
+  const int ShortSaleReason_QSRORAGUCONTRASIDESOLDSHORTEXEMPT = 5;
+  const int PegRoundDirection_MOREPASSIVE = 2;
+  const int PegRoundDirection_MOREAGGRESSIVE = 1;
+  const int PegRoundDirection_MORE_AGGRESSIVE = 1;
+  const int PegRoundDirection_MORE_PASSIVE = 2;
+  const int ModelType_PROPRIETARY = 1;
+  const int ModelType_UTILITY_PROVIDED_STANDARD_MODEL = 0;
+  const char FuturesValuationMethod_FUTURES_STYLE_WITH_AN_ATTACHED_CASH_ADJUSTMENT[] = "FUTDA";
+  const char FuturesValuationMethod_PREMIUM_STYLE[] = "EQTY";
+  const char FuturesValuationMethod_FUTURES_STYLE_MARK_TO_MARKET[] = "FUT";
+  const char SettlMethod_CASH_SETTLEMENT_REQUIRED = 'C';
+  const char SettlMethod_PHYSICAL_SETTLEMENT_REQUIRED = 'P';
+  const int ConfirmStatus_CONFIRMED = 4;
+  const int ConfirmStatus_REQUESTREJECTED = 5;
+  const int ConfirmStatus_MISSINGSETTLEMENTINSTRUCTIONS = 3;
+  const int ConfirmStatus_MISSING_SETTLEMENT_INSTRUCTIONS = 3;
+  const int ConfirmStatus_REQUEST_REJECTED = 5;
+  const int ConfirmStatus_MISMATCHEDACCOUNT = 2;
+  const int ConfirmStatus_MISMATCHED_ACCOUNT = 2;
+  const int ConfirmStatus_RECEIVED = 1;
+  const char LocateReqd_NO = 'N';
+  const char LocateReqd_YES = 'Y';
+  const int Adjustment_CANCEL = 1;
+  const int Adjustment_CORRECTION = 3;
+  const int Adjustment_ERROR = 2;
+  const int StreamAsgnType_ASSIGNMENT = 1;
+  const int StreamAsgnType_TERMINATE_UNASSIGN = 3;
+  const int StreamAsgnType_REJECTED = 2;
+  const char LastRptRequested_NO = 'N';
+  const char LastRptRequested_YES = 'Y';
+  const char SettlSessID_END_OF_DAY[] = "EOD";
+  const char SettlSessID_REGULAR_TRADING_HOURS[] = "RTH";
+  const char SettlSessID_ELECTRONIC_TRADING_HOURS[] = "ETH";
+  const char SettlSessID_INTRADAY[] = "ITD";
+  const int TradeReportType_NO_WAS = 5;
+  const int TradeReportType_ADDENDUM = 4;
+  const int TradeReportType_7 = 7;
+  const int TradeReportType_PENDED = 10;
+  const int TradeReportType_LOCKEDINTRADEBREAK = 7;
+  const int TradeReportType_DEFAULTED = 8;
+  const int TradeReportType_DECLINE = 3;
+  const int TradeReportType_ALLEGED_NEW = 11;
+  const int TradeReportType_ALLEGED_TRADE_REPORT_CANCEL = 14;
+  const int TradeReportType_ALLEGED_15 = 15;
+  const int TradeReportType_ALLEGED_ADDENDUM = 12;
+  const int TradeReportType_ALLEGED = 1;
+  const int TradeReportType_SUBMIT = 0;
+  const int TradeReportType_NOWAS = 5;
+  const int TradeReportType_ALLEGED_1 = 1;
+  const int TradeReportType_INVALID_CMTA = 9;
+  const int TradeReportType_TRADEREPORTCANCEL = 6;
+  const int TradeReportType_TRADE_REPORT_CANCEL = 6;
+  const int TradeReportType_ALLEGED_NO_WAS = 13;
+  const int TradeReportType_ACCEPT = 2;
+  const int ExerciseStyle_AMERICAN = 1;
+  const int ExerciseStyle_EUROPEAN = 0;
+  const int ExerciseStyle_BERMUDA = 2;
+  const char HaltReasonChar_EQUIPCHANGE = 'X';
+  const char HaltReasonChar_ADDITIONAL_INFORMATION = 'M';
+  const char HaltReasonChar_ORDINFL = 'E';
+  const char HaltReasonChar_NEW_PENDING = 'P';
+  const char HaltReasonChar_NEWSDISS = 'D';
+  const char HaltReasonChar_NEWS_PENDING = 'P';
+  const char HaltReasonChar_ORDER_INFLUX = 'E';
+  const char HaltReasonChar_NEWS_DISSEMINATION = 'D';
+  const char HaltReasonChar_ADDINFO = 'M';
+  const char HaltReasonChar_ORDIMB = 'I';
+  const char HaltReasonChar_EQUIPMENT_CHANGEOVER = 'X';
+  const char HaltReasonChar_ORDER_IMBALANCE = 'I';
+  const char HaltReasonChar_NEWSPEND = 'P';
+  const char ExDestination_POSIT = '4';
+  const char ExDestination_NONE = '0';
+  const int AllocReportType_SELLSIDE_CALCULATED_WITHOUT_PRELIMINARY = 4;
+  const int AllocReportType_WAREHOUSE_RECAP = 5;
+  const int AllocReportType_REJECT = 10;
+  const int AllocReportType_REQUESTTOINTERMEDIARY = 8;
+  const int AllocReportType_ACCEPT_PENDING = 11;
+  const int AllocReportType_REQUEST_TO_INTERMEDIARY = 8;
+  const int AllocReportType_COMPLETE = 12;
+  const int AllocReportType_SELLSIDECALCULATEDUSINGPRELIMINARY = 3;
+  const int AllocReportType_PRELIMINARY_REQUEST_TO_INTERMEDIARY = 2;
+  const int AllocReportType_SELLSIDE_CALCULATED_USING_PRELIMINARY = 3;
+  const int AllocReportType_REVERSE_PENDING = 14;
+  const int AllocReportType_WAREHOUSERECAP = 5;
+  const int AllocReportType_ACCEPT = 9;
+  const int AllocReportType_SELLSIDECALCULATEDWITHOUTPRELIMINARY = 4;
+  const int AllocType_BUYSIDEREADYTOBOOKSINGLE = 5;
+  const int AllocType_SELLSIDE_CALCULATED_WITHOUT_PRELIMINARY = 4;
+  const int AllocType_CALCULATED = 1;
+  const int AllocType_INCOMPLETE_GROUP = 12;
+  const int AllocType_REVERSAL_PENDING = 14;
+  const int AllocType_PRELIMINARY = 2;
+  const int AllocType_REJECT = 10;
+  const int AllocType_WAREHOUSEINSTRUCTION = 7;
+  const int AllocType_BUYSIDEPRELIM = 2;
+  const int AllocType_REQUESTTOINTERMEDIARY = 8;
+  const int AllocType_ACCEPT_PENDING = 11;
+  const int AllocType_BUYSIDEREADYTOBOOKCOMBINED = 6;
+  const int AllocType_BUYSIDE_CALCULATED = 1;
+  const int AllocType_REQUEST_TO_INTERMEDIARY = 8;
+  const int AllocType_SELLSIDECALCWITHOUTPRELIM = 4;
+  const int AllocType_BUYSIDE_READY_TO_BOOK_5 = 5;
+  const int AllocType_BUYSIDE_READY_TO_BOOK_6 = 6;
+  const int AllocType_COMPLETE_GROUP = 13;
+  const int AllocType_BUYSIDECALC = 1;
+  const int AllocType_SELLSIDE_CALCULATED_USING_PRELIMINARY = 3;
+  const int AllocType_READY_TO_BOOK = 5;
+  const int AllocType_BUYSIDE_READY_TO_BOOK = 6;
+  const int AllocType_WAREHOUSE_INSTRUCTION = 7;
+  const int AllocType_BUYSIDE_PRELIMINARY = 2;
+  const int AllocType_ACCEPT = 9;
+  const int AllocType_SELLSIDECALC = 3;
+  const int QuoteRequestRejectReason_INSUFFICIENT_CREDIT = 11;
+  const int QuoteRequestRejectReason_NOMARKETFORINSTRUMENT = 8;
+  const int QuoteRequestRejectReason_NOTAUTHTOREQQUOTE = 6;
+  const int QuoteRequestRejectReason_NOT_AUTHORIZED_TO_REQUEST_QUOTE = 6;
+  const int QuoteRequestRejectReason_QUOTEREQUESTEXLIMIT = 3;
+  const int QuoteRequestRejectReason_INVALID_PRICE = 5;
+  const int QuoteRequestRejectReason_EXCHANGECLOSED = 2;
+  const int QuoteRequestRejectReason_TOOLATE = 4;
+  const int QuoteRequestRejectReason_INVPRICE = 5;
+  const int QuoteRequestRejectReason_NOMATCHFORINQUIRY = 7;
+  const int QuoteRequestRejectReason_TOO_LATE_TO_ENTER = 4;
+  const int QuoteRequestRejectReason_NO_MATCH_FOR_INQUIRY = 7;
+  const int QuoteRequestRejectReason_UNKNOWNSYM = 1;
+  const int QuoteRequestRejectReason_EXCHANGE = 2;
+  const int QuoteRequestRejectReason_NO_MARKET_FOR_INSTRUMENT = 8;
+  const int QuoteRequestRejectReason_UNKNOWN_SYMBOL = 1;
+  const int QuoteRequestRejectReason_OTHER = 99;
+  const int QuoteRequestRejectReason_PASS = 10;
+  const int QuoteRequestRejectReason_NOINVENTORY = 9;
+  const int QuoteRequestRejectReason_NO_INVENTORY = 9;
+  const int QuoteRequestRejectReason_QUOTE_REQUEST_EXCEEDS_LIMIT = 3;
+  const int LiquidityIndType_5DAY = 1;
+  const int LiquidityIndType_NORMAL = 3;
+  const int LiquidityIndType_20_DAY_MOVING_AVERAGE = 2;
+  const int LiquidityIndType_5_DAY_MOVING_AVERAGE = 1;
+  const int LiquidityIndType_5DAY_MOVING_AVERAGE = 1;
+  const int LiquidityIndType_NORMAL_MARKET_SIZE = 3;
+  const int LiquidityIndType_OTHER = 4;
+  const int LiquidityIndType_20DAY = 2;
+  const int StatusValue_IN_PROCESS = 4;
+  const int StatusValue_NOTCONNECTEDDOWNEXPECTEDUP = 2;
+  const int StatusValue_NOT_CONNECTED_2 = 2;
+  const int StatusValue_NOTCONNECTEDDOWNEXPECTEDDOWN = 3;
+  const int StatusValue_CONNECTED = 1;
+  const int StatusValue_NOT_CONNECTED_3 = 3;
+  const int StatusValue_INPROCESS = 4;
+  const char PosType_INTRA_SPREAD_QTY[] = "IAS";
+  const char PosType_INTER_SPREAD_QTY[] = "IES";
+  const char PosType_TRANSFER_TRADE_QTY[] = "TRF";
+  const char PosType_EXCHANGE_FOR_PHYSICAL_QTY[] = "EP";
+  const char PosType_TRANSFERTRADEQTY[] = "TRF";
+  const char PosType_TRANSACTIONQUANTITY[] = "TQ";
+  const char PosType_ADJUSTMENTQTY[] = "PA";
+  const char PosType_START_OF_DAY_QTY[] = "SOD";
+  const char PosType_ENDOFDAYQTY[] = "FIN";
+  const char PosType_DELIVERY_QTY[] = "DLV";
+  const char PosType_TRANSACTIONFROMEXERCISE[] = "TX";
+  const char PosType_OPTIONEXERCISEQTY[] = "EX";
+  const char PosType_DELIVERYQTY[] = "DLV";
+  const char PosType_OPTION_ASSIGNMENT[] = "AS";
+  const char PosType_PIT_TRADE_QTY[] = "PIT";
+  const char PosType_TRANSACTION_FROM_ASSIGNMENT[] = "TA";
+  const char PosType_TRANSACTION_FROM_EXERCISE[] = "TX";
+  const char PosType_INTEGRALSPLIT[] = "SPL";
+  const char PosType_ELECTRONICTRADEQTY[] = "ETR";
+  const char PosType_AS_OF_TRADE_QTY[] = "ASF";
+  const char PosType_ELECTRONIC_TRADE_QTY[] = "ETR";
+  const char PosType_PITTRADEQTY[] = "PIT";
+  const char PosType_OPTIONASSIGNMENT[] = "AS";
+  const char PosType_SUCCESSION_EVENT_ADJUSTMENT[] = "SEA";
+  const char PosType_OPTION_EXERCISE_QTY[] = "EX";
+  const char PosType_TRANSACTION_QUANTITY[] = "TQ";
+  const char PosType_NET_DELTA_QTY[] = "DLT";
+  const char PosType_END_OF_DAY_QTY[] = "FIN";
+  const char PosType_ADJUSTMENT_QTY[] = "PA";
+  const char PosType_TOTAL_TRANSACTION_QTY[] = "TOT";
+  const char PosType_DELIVERY_NOTICE_QTY[] = "DN";
+  const char PosType_RECEIVE_QUANTITY[] = "RCV";
+  const char PosType_ASOFTRADEQTY[] = "ASF";
+  const char PosType_ALLOCATIONTRADEQTY[] = "ALC";
+  const char PosType_CREDIT_EVENT_ADJUSTMENT[] = "CEA";
+  const char PosType_PRIVATELY_NEGOTIATED_TRADE_QTY[] = "PNTN";
+  const char PosType_CROSS_MARGIN_QTY[] = "XM";
+  const char PosType_CORPORATE_ACTION_ADJUSTMENT[] = "CAA";
+  const char PosType_TOTALTRANSACTIONQTY[] = "TOT";
+  const char PosType_STARTOFDAYQTY[] = "SOD";
+  const char PosType_INTEGRAL_SPLIT[] = "SPL";
+  const char PosType_INTERSPREADQTY[] = "IES";
+  const char PosType_INTRASPREADQTY[] = "IAS";
+  const char PosType_ALLOCATION_TRADE_QTY[] = "ALC";
+  const char PosType_CROSSMARGINQTY[] = "XM";
+  const char PosType_TRANSACTIONFROMASSIGNMENT[] = "TA";
+  const int StreamAsgnAckType_ASSIGNMENT_REJECTED = 1;
+  const int StreamAsgnAckType_ASSIGNMENT_ACCEPTED = 0;
+  const int RiskInstrumentOperator_EXCLUDE = 2;
+  const int RiskInstrumentOperator_INCLUDE = 1;
+  const int MiscFeeBasis_PERUNIT = 1;
+  const int MiscFeeBasis_ABSOLUTE = 0;
+  const int MiscFeeBasis_PERCENTAGE = 2;
+  const int MiscFeeBasis_PER_UNIT = 1;
+  const char OrdType_FOREX_MARKET = 'C';
+  const char OrdType_FOREX_PREVIOUSLY_QUOTED = 'H';
+  const char OrdType_ONBASIS = '9';
+  const char OrdType_PREVIOUSLYINDICATED = 'E';
+  const char OrdType_PREVIOUS_FUND_VALUATION_POINT = 'L';
+  const char OrdType_PEGGED = 'P';
+  const char OrdType_LIMITONCLOSE = 'B';
+  const char OrdType_LIMIT_WITH_OR_WITHOUT = '8';
+  const char OrdType_STOP_LIMIT = '4';
+  const char OrdType_FOREX_SWAP = 'G';
+  const char OrdType_WITHORWITHOUT = '6';
+  const char OrdType_FOREXLIMIT = 'F';
+  const char OrdType_MARKET_WITH_LEFT_OVER_AS_LIMIT = 'K';
+  const char OrdType_PREVIOUSLYQUOTED = 'D';
+  const char OrdType_PREVIOUSLY_QUOTED = 'D';
+  const char OrdType_COUNTER_ORDER_SELECTION = 'Q';
+  const char OrdType_LIMITWITHORWITHOUT = '8';
+  const char OrdType_FOREXSWAP = 'G';
+  const char OrdType_MARKET_IF_TOUCHED = 'J';
+  const char OrdType_NEXT_FUND_VALUATION_POINT = 'M';
+  const char OrdType_FOREX_C = 'C';
+  const char OrdType_ON_CLOSE = 'A';
+  const char OrdType_STOP = '3';
+  const char OrdType_STOPLIMIT = '4';
+  const char OrdType_LIMITORBETTER = '7';
+  const char OrdType_ONCLOSE = 'A';
+  const char OrdType_FOREX_LIMIT = 'F';
+  const char OrdType_FOREXMARKET = 'C';
+  const char OrdType_FOREX = 'C';
+  const char OrdType_MARKETIFTOUCHED = 'J';
+  const char OrdType_FUNARI = 'I';
+  const char OrdType_FOREX_F = 'F';
+  const char OrdType_PREVIOUSLY_INDICATED = 'E';
+  const char OrdType_WITH_OR_WITHOUT = '6';
+  const char OrdType_MARKET_ON_CLOSE = '5';
+  const char OrdType_LIMIT = '2';
+  const char OrdType_MARKET_WITH_LEFTOVER_AS_LIMIT = 'K';
+  const char OrdType_FOREX_G = 'G';
+  const char OrdType_LIMIT_ON_CLOSE = 'B';
+  const char OrdType_MARKETONCLOSE = '5';
+  const char OrdType_PREVIOUSFUNDVALUATIONPOINT = 'L';
+  const char OrdType_NEXTFUNDVALUATIONPOINT = 'M';
+  const char OrdType_FOREX_H = 'H';
+  const char OrdType_FOREXPREVIOUSLYQUOTED = 'H';
+  const char OrdType_MARKETWITHLEFTOVERLIMIT = 'K';
+  const char OrdType_ON_BASIS = '9';
+  const char OrdType_LIMIT_OR_BETTER = '7';
+  const char OrdType_MARKET = '1';
+  const char MatchType_ACT_DEFAULT_AFTER_M2[] = "M5";
+  const char MatchType_SUMMARIZEDMATCHUSINGA2[] = "S2";
+  const char MatchType_COUNTER_ORDER_SELECTION_6[] = "6";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND[] = "A4";
+  const char MatchType_SUMMARIZED_MATCH_USING_A4_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED[] = "S4";
+  const char MatchType_NON_ACT[] = "MT";
+  const char MatchType_SUMMARIZEDMATCHUSINGA3[] = "S3";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S1[] = "S1";
+  const char MatchType_SUMMARIZED_MATCH_MINUS_BADGES_AND_TIMES_ACT_M2_MATCH[] = "M2";
+  const char MatchType_SUMMARIZEDMATCHUSINGA4[] = "S4";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S2[] = "S2";
+  const char MatchType_TWO_PARTY_PRIVATELY_NEGOTIATED_TRADE_REPORT[] = "61";
+  const char MatchType_SUMMARIZEDMATCHUSINGA5[] = "S5";
+  const char MatchType_NASDAQACTM2MATCH[] = "ACTM2";
+  const char MatchType_CROSS_AUCTION_5[] = "5";
+  const char MatchType_ACT_M1_MATCH[] = "M1";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_TWO_BADGES[] = "A4";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S3[] = "S3";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSTWOBADGES[] = "A4";
+  const char MatchType_NASDAQACTDEFAULTAFTERM2[] = "ACTM5";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSFOURBADGES[] = "A2";
+  const char MatchType_NASDAQACTM1MATCH[] = "ACTM1";
+  const char MatchType_CALL_AUCTION_7[] = "7";
+  const char MatchType_CROSS_AUCTION_63[] = "63";
+  const char MatchType_ISSUING_BUY_BACK_AUCTION[] = "8";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S4[] = "S4";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_EXECUTION_TIME[] = "A5";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSFOURBADGESANDEXECUTIONTIME[] = "A1";
+  const char MatchType_ONE_PARTY_TRADE_REPORT[] = "1";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_TO_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED_S5[] = "S5";
+  const char MatchType_ACT_M2_MATCH[] = "M2";
+  const char MatchType_SUMMARIZEDMATCHMINUSBADGESANDTIMES[] = "M2";
+  const char MatchType_NASDAQACTDEFAULTTRADE[] = "ACTM4";
+  const char MatchType_CALL_AUCTION[] = "7";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_MINUS_BADGES_AND_TIMES_ACT_M1_MATCH[] = "M1";
+  const char MatchType_ACT_ACCEPTED_TRADE[] = "M3";
+  const char MatchType_TWO_PARTY_TRADE_REPORT[] = "2";
+  const char MatchType_SUMMARIZED_MATCH_USING_A1_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIED[] = "S1";
+  const char MatchType_CONTINUOUS_AUTO_MATCH[] = "62";
+  const char MatchType_ONE_PARTY_PRIVATELY_NEGOTIATED_TRADE_REPORT[] = "60";
+  const char MatchType_ACT_M6_MATCH[] = "M6";
+  const char MatchType_SUMMARIZED_MATCH_USING_A5_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED[] = "S5";
+  const char MatchType_ACT_DEFAULT_TRADE[] = "M4";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORMINUSBADGESANDTIMES[] = "M1";
+  const char MatchType_COMPARED_RECORDS_RESULTING_FROM_STAMPED_ADVISORIES_OR_SPECIALIST[] = "AQ";
+  const char MatchType_AUTO_MATCH[] = "4";
+  const char MatchType_NASDAQACTM6MATCH[] = "ACTM6";
+  const char MatchType_OCSLOCKEDIN[] = "MT";
+  const char MatchType_COUNTER_ORDER_SELECTION[] = "6";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_FOUR_BADGES[] = "A2";
+  const char MatchType_SUMMARIZED_MATCH_USING_A3_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED[] = "S3";
+  const char MatchType_NASDAQACTACCEPTEDTRADE[] = "ACTM3";
+  const char MatchType_CALL_AUCTION_65[] = "65";
+  const char MatchType_CROSS_AUCTION[] = "5";
+  const char MatchType_OCS_LOCKED_IN_NON_ACT[] = "MT";
+  const char MatchType_CONFIRMED_TRADE_REPORT[] = "3";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADETYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_EXECUTION_TIME[] = "A5";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSTWOBADGESANDEXECUTIONTIME[] = "A3";
+  const char MatchType_SUMMARIZED_MATCH_USING_A2_EXACT_MATCH_CRITERIA_EXCEPT_QUANTITY_IS_SUMMARIZED[] = "S2";
+  const char MatchType_EXACTMATCHONTRADEDATESTOCKSYMBOLQUANTITYPRICETRADETYPEANDSPECIALTRADEINDICATORPLUSEXECUTIONTIME[] = "A5";
+  const char MatchType_NASDAQNONACT[] = "ACTMT";
+  const char MatchType_COMPAREDRECORDSRESULTINGFROMSTAMPEDADVISORIESORSPECIALISTACCEPTSPAIROFFS[] = "AQ";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_TWO_BADGES_AND_EXECUTION_TIME[] = "A3";
+  const char MatchType_COMPARED_RECORDS_RESULTING_FROM_STAMPED_ADVISORIES_OR_SPECIALIST_ACCEPTS_PAIR_OFFS[] = "AQ";
+  const char MatchType_SUMMARIZEDMATCHUSINGA1[] = "S1";
+  const char MatchType_EXACT_MATCH_ON_TRADE_DATE_STOCK_SYMBOL_QUANTITY_PRICE_TRADE_TYPE_AND_SPECIAL_TRADE_INDICATOR_PLUS_FOUR_BADGES_AND_EXECUTION_TIME[] = "A1";
+  const char MatchType_COUNTER_ORDER_SELECTION_64[] = "64";
+  const int OptPayoutType_BINARY = 3;
+  const int OptPayoutType_VANILLA = 1;
+  const int OptPayoutType_CAPPED = 2;
+  const char MarketUpdateAction_DELETE = 'D';
+  const char MarketUpdateAction_ADD = 'A';
+  const char MarketUpdateAction_MODIFY = 'M';
+  const int CollAsgnRejectReason_INVALIDTYPEOFCOLLATERAL = 4;
+  const int CollAsgnRejectReason_UNAUTHORIZED_TRANSACTION = 2;
+  const int CollAsgnRejectReason_UNKNOWN_OR_INVALID_INSTRUMENT = 1;
+  const int CollAsgnRejectReason_UNKNOWNDEAL = 0;
+  const int CollAsgnRejectReason_UNKNOWN_DEAL = 0;
+  const int CollAsgnRejectReason_UNAUTHORIZEDTRANSACTION = 2;
+  const int CollAsgnRejectReason_INVALID_TYPE_OF_COLLATERAL = 4;
+  const int CollAsgnRejectReason_INSUFFICIENTCOLLATERAL = 3;
+  const int CollAsgnRejectReason_UNKNOWNORINVALIDINSTRUMENT = 1;
+  const int CollAsgnRejectReason_EXCESSIVE_SUBSTITUTION = 5;
+  const int CollAsgnRejectReason_OTHER = 99;
+  const int CollAsgnRejectReason_INSUFFICIENT_COLLATERAL = 3;
+  const int CollAsgnRejectReason_EXCESSIVESUBSTITUTION = 5;
+  const int IndividualAllocType_SUB_ALLOCATE = 1;
+  const int IndividualAllocType_THIRD_PARTY_ALLOCATION = 2;
+  const int GTBookingInst_ACCUMUNTILFILL = 1;
+  const int GTBookingInst_ACCUMUNTILNOTIFY = 2;
+  const int GTBookingInst_BOOK_OUT_ALL_TRADES_ON_DAY_OF_EXECUTION = 0;
+  const int GTBookingInst_ACCUMULATE_UNTIL_VERBALLY_NOTIFIED_OTHERWISE = 2;
+  const int GTBookingInst_ACCUMULATE_EXECUTIONS_UNTIL_ORDER_IS_FILLED_OR_EXPIRES = 1;
+  const int GTBookingInst_BOOKALL = 0;
+  const int GTBookingInst_ACCUMULATE_UNTIL_VERBALLLY_NOTIFIED_OTHERWISE = 2;
+  const int GTBookingInst_ACCUMULATE_EXECTUIONS_UNTIL_FORDER_IS_FILLED_OR_EXPIRES = 1;
+  const int PutOrCall_PUT = 0;
+  const int PutOrCall_CALL = 1;
+  const char FundRenewWaiv_NO = 'N';
+  const char FundRenewWaiv_YES = 'Y';
+  const char ForexReq_NO = 'N';
+  const char ForexReq_YES = 'Y';
+  const int TickRuleType_TRADED_AS_A_SPREAD_LEG = 3;
+  const int TickRuleType_REGULAR = 0;
+  const int TickRuleType_VARIABLE = 1;
+  const int TickRuleType_SETTLED_AS_A_SPREAD_LEG = 4;
+  const int TickRuleType_FIXED = 2;
+  const int DiscretionOffsetType_PRICE = 0;
+  const int DiscretionOffsetType_BASISPOINTS = 1;
+  const int DiscretionOffsetType_PRICE_TIER = 3;
+  const int DiscretionOffsetType_TICKS = 2;
+  const int DiscretionOffsetType_PRICETIERLEVEL = 3;
+  const int DiscretionOffsetType_BASIS_POINTS = 1;
+  const int ConfirmTransType_REPLACE = 1;
+  const int ConfirmTransType_NEW = 0;
+  const int ConfirmTransType_CANCEL = 2;
+  const int MDSecSizeType_CUSTOMER = 1;
+  const int TradSesEvent_CHANGE_OF_TRADING_STATUS = 3;
+  const int TradSesEvent_CHANGE_OF_TRADING_SESSION = 1;
+  const int TradSesEvent_CHANGE_OF_TRADING_SUBSESSION = 2;
+  const int TradSesEvent_TRADING_RESUMES = 0;
+  const char DlvyInstType_SECURITIES = 'S';
+  const char DlvyInstType_CASH = 'C';
+  const char TradeCondition_IMPLIED_TRADE[] = "1";
+  const char TradeCondition_CASHMKT[] = "A";
+  const char TradeCondition_OPENING_PRICE[] = "R";
+  const char TradeCondition_PRIOR_REFERENCE_PRICE[] = "AK";
+  const char TradeCondition_CANCEL_LAST_ETH[] = "l";
+  const char TradeCondition_SELLER[] = "L";
+  const char TradeCondition_DISTRIBUTION[] = "e";
+  const char TradeCondition_NEXT_DAY_TRADE[] = "J";
+  const char TradeCondition_STRADDLE_ETH[] = "AD";
+  const char TradeCondition_SPREAD[] = "AA";
+  const char TradeCondition_OPENINGPRICE[] = "R";
+  const char TradeCondition_CROSSED_AO[] = "AO";
+  const char TradeCondition_SOLD_LAST_SALE[] = "o";
+  const char TradeCondition_OPENED_SALE_ETH[] = "r";
+  const char TradeCondition_REOPEN_ETH[] = "x";
+  const char TradeCondition_SOLD_LAST_SALE_ETH[] = "m";
+  const char TradeCondition_STOPPED_SOLD_LAST[] = "AL";
+  const char TradeCondition_TRADES_RESULTING_FROM_INTERMARKET_SWEEP[] = "Z";
+  const char TradeCondition_NEXTDAY_D[] = "D";
+  const char TradeCondition_FORM_T[] = "AR";
+  const char TradeCondition_ADJUSTED[] = "y";
+  const char TradeCondition_CANCEL_ETH[] = "i";
+  const char TradeCondition_OUT_OF_SEQUENCE_ETH[] = "k";
+  const char TradeCondition_RULE127[] = "G";
+  const char TradeCondition_COMBO_ETH[] = "AI";
+  const char TradeCondition_CANCEL_ONLY_ETH[] = "t";
+  const char TradeCondition_STRADDLE[] = "AC";
+  const char TradeCondition_OUTSIDE_SPREAD[] = "AV";
+  const char TradeCondition_BUNCHED_SALE[] = "f";
+  const char TradeCondition_CANCEL_STOPPED[] = "h";
+  const char TradeCondition_LATE_OPEN_ETH[] = "u";
+  const char TradeCondition_OPENING_REOPENING_TRADE_DETAIL[] = "E";
+  const char TradeCondition_CANCEL[] = "0";
+  const char TradeCondition_COMBO[] = "AH";
+  const char TradeCondition_OPENING[] = "E";
+  const char TradeCondition_ACQUISITION[] = "c";
+  const char TradeCondition_OPENED[] = "K";
+  const char TradeCondition_CANCEL_ONLY[] = "s";
+  const char TradeCondition_NEXT_DAY[] = "D";
+  const char TradeCondition_BARGAIN_CONDITION[] = "S";
+  const char TradeCondition_STOPPED[] = "AE";
+  const char TradeCondition_CONVERTED_PRICE_INDICATOR[] = "T";
+  const char TradeCondition_OFFICIAL_CLOSING_PRICE[] = "AJ";
+  const char TradeCondition_ADJUSTED_ETH[] = "z";
+  const char TradeCondition_AVGPX[] = "B";
+  const char TradeCondition_RULE_155_TRADE[] = "H";
+  const char TradeCondition_SOLDLAST[] = "I";
+  const char TradeCondition_NEXTDAY_J[] = "J";
+  const char TradeCondition_AUTOMATIC_EXECUTION[] = "AQ";
+  const char TradeCondition_CROSSED_X[] = "X";
+  const char TradeCondition_AUTO_EXECUTION_ETH[] = "v";
+  const char TradeCondition_MULTILEG_TO_MULTILEG_TRADE[] = "4";
+  const char TradeCondition_OFFICAL_CLOSING_PRICE[] = "AN";
+  const char TradeCondition_FINAL_PRICE_OF_SESSION[] = "V";
+  const char TradeCondition_BASKET_INDEX[] = "AS";
+  const char TradeCondition_TRADES_RESULTING_FROM_MANUAL_SLOW_QUOTE[] = "Y";
+  const char TradeCondition_STOPPED_STOCK[] = "N";
+  const char TradeCondition_MULT_ASSET_CLASS_MULTILEG_TRADE[] = "3";
+  const char TradeCondition_STOPPED_ETH[] = "AF";
+  const char TradeCondition_REGULAR_ETH[] = "AG";
+  const char TradeCondition_CANCEL_OPEN[] = "p";
+  const char TradeCondition_CASH[] = "A";
+  const char TradeCondition_CASHTRADE[] = "C";
+  const char TradeCondition_RULE155[] = "H";
+  const char TradeCondition_CANCEL_STOPPED_ETH[] = "j";
+  const char TradeCondition_VOLUME_ONLY[] = "a";
+  const char TradeCondition_SPLIT_TRADE[] = "g";
+  const char TradeCondition_STOPPED_OUT_OF_SEQUENCE[] = "AM";
+  const char TradeCondition_CASH_TRADE[] = "C";
+  const char TradeCondition_IMBALANCE_MORE_BUYERS[] = "P";
+  const char TradeCondition_BUNCHED[] = "d";
+  const char TradeCondition_INTRADAY[] = "F";
+  const char TradeCondition_IMBALANCE_MORE_SELLERS[] = "Q";
+  const char TradeCondition_INTRADAY_TRADE_DETAIL[] = "F";
+  const char TradeCondition_RULE_127_TRADE[] = "G";
+  const char TradeCondition_IMBALANCEMOREBUYERS[] = "P";
+  const char TradeCondition_REOPEN[] = "w";
+  const char TradeCondition_EX_PIT[] = "W";
+  const char TradeCondition_CANCEL_LAST[] = "n";
+  const char TradeCondition_DIRECT_PLUS[] = "b";
+  const char TradeCondition_IMBALANCEMORESELLERS[] = "Q";
+  const char TradeCondition_AVERAGE_PRICE_TRADE[] = "B";
+  const char TradeCondition_SOLD_LAST[] = "I";
+  const char TradeCondition_MARKETPLACE_ENTERED_TRADE[] = "2";
+  const char TradeCondition_SPREAD_ETH[] = "AB";
+  const char TradeCondition_CANCEL_OPEN_ETH[] = "q";
+  const char TradeCondition_EXCHANGE_LAST[] = "U";
+  const char TradeCondition_FAST_MARKET[] = "AP";
+  const char TradeCondition_BURST_BASKET[] = "AT";
+  const char TradeCondition_SOLD[] = "M";
+  const int PriceLimitType_PRICE = 0;
+  const int PriceLimitType_TICKS = 1;
+  const int PriceLimitType_PERCENTAGE = 2;
+  const char CommType_PER_SHARE = '1';
+  const char CommType_PCTWAIVEDCSHDISC = '4';
+  const char CommType_ABSOLUTE = '3';
+  const char CommType_PCTWAIVEDENUNITS = '5';
+  const char CommType_PERBOND = '6';
+  const char CommType_PER_BOND = '6';
+  const char CommType_PERCENTAGE = '2';
+  const char CommType_PERCENTAGE_WAIVED_4 = '4';
+  const char CommType_POINTS_PER_BOND_OR_CONTRACT = '6';
+  const char CommType_PERCENTAGE_WAIVED_5 = '5';
+  const char CommType_PER_UNIT = '1';
+  const char CommType_PERCENT = '2';
+  const char CommType_4 = '4';
+  const char CommType_5 = '5';
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_NO_DISTRIB_INSTNS = 13;
+  const int RegistRejReasonCode_INVALIDOWNERSHIPTYPE = 3;
+  const int RegistRejReasonCode_INVALIDREGDTLS = 6;
+  const int RegistRejReasonCode_INVALIDMAILINGDTLS = 7;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_MAILING_DTLS = 7;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_NO_REG_DETAILS = 4;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_MAILING_INSTRUCTIONS = 8;
+  const int RegistRejReasonCode_INVALIDINVESTORCOUNTRYOFRESIDENCE = 12;
+  const int RegistRejReasonCode_INVALIDCASHDISTRIBAGENTCODE = 17;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_TAX_EXEMPT_TYPE = 2;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_CASH_DISTRIB_AGENT_ACCT_NAME = 16;
+  const int RegistRejReasonCode_INVALID_UNACEEPTABLE_INVESTOR_ID_SOURCE = 10;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_INVESTOR_ID_SOURCE = 10;
+  const int RegistRejReasonCode_INVALIDDATEOFBIRTH = 11;
+  const int RegistRejReasonCode_INVALIDDISTRIBPAYMENTMETHOD = 15;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_DATE_OF_BIRTH = 11;
+  const int RegistRejReasonCode_INVALIDNODISTRIBINSTNS = 13;
+  const int RegistRejReasonCode_INVALIDCASHDISTRIBAGENTACCTNUM = 18;
+  const int RegistRejReasonCode_INVALIDTAXEXEMPTTYPE = 2;
+  const int RegistRejReasonCode_INVALIDMAILINGINST = 8;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_MAILING_INST = 8;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_NO_REG_DETLS = 4;
+  const int RegistRejReasonCode_INVALIDACCOUNTTYPE = 1;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_DISTRIB_PAYMENT_METHOD = 15;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_CASH_DISTRIB_AGENT_CODE = 17;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_REG_DETAILS = 6;
+  const int RegistRejReasonCode_INVALIDREGSEQNO = 5;
+  const int RegistRejReasonCode_OTHER = 99;
+  const int RegistRejReasonCode_INVALIDDISTRIBPERCENTAGE = 14;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_REG_DTLS = 6;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_ACCOUNT_TYPE = 1;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_MAILING_DETAILS = 7;
+  const int RegistRejReasonCode_INVALIDINVESTORIDSOURCE = 10;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_INVESTOR_COUNTRY_OF_RESIDENCE = 12;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_DISTRIB_PERCENTAGE = 14;
+  const int RegistRejReasonCode_INVALIDCASHDISTRIBAGENTACCTNAME = 16;
+  const int RegistRejReasonCode_INVALIDNOREGDETLS = 4;
+  const int RegistRejReasonCode_INVALIDINVESTORID = 9;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_CASH_DISTRIB_AGENT_ACCT_NUM = 18;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_REG_SEQ_NO = 5;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_INVESTOR_ID = 9;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_OWNERSHIP_TYPE = 3;
+  const int RegistRejReasonCode_INVALID_UNACCEPTABLE_NODISTRIBINSTNS = 13;
+  const char FinancialStatus_BANKRUPT = '1';
+  const char FinancialStatus_PENDINGDELISTING = '2';
+  const char FinancialStatus_RESTRICTED = '3';
+  const char FinancialStatus_PENDING_DELISTING = '2';
+  const char LastFragment_NO = 'N';
+  const char LastFragment_YES = 'Y';
+  const char NotifyBrokerOfCredit_NO = 'N';
+  const char NotifyBrokerOfCredit_YES = 'Y';
+  const int PartySubIDType_REGISTERED_ADDRESS_12 = 12;
+  const int PartySubIDType_CASH_ACCOUNT_NUMBER = 15;
+  const int PartySubIDType_FAX_NUMBER = 21;
+  const int PartySubIDType_CONTACTNAME = 9;
+  const int PartySubIDType_RESERVEDANDAVAILABLEFORBILATERALLYAGREEDUPONUSERDEFINEDVALUES = 4000;
+  const int PartySubIDType_DEPARTMENT = 24;
+  const int PartySubIDType_CONTACT_NAME = 9;
+  const int PartySubIDType_TELEXNUMBER = 20;
+  const int PartySubIDType_PERSON = 2;
+  const int PartySubIDType_FIRM = 1;
+  const int PartySubIDType_CASH_ACCOUNT_NAME = 23;
+  const int PartySubIDType_POSITION_ACCOUNT_TYPE = 26;
+  const int PartySubIDType_POSTAL_ADDRESS = 6;
+  const int PartySubIDType_SECURITY_LOCATE_ID = 27;
+  const int PartySubIDType_POSTALADDRESS = 6;
+  const int PartySubIDType_FUND_ACCOUNT_NAME = 19;
+  const int PartySubIDType_PROFESSIONAL_CLIENT = 30;
+  const int PartySubIDType_LOCATION = 31;
+  const int PartySubIDType_FULLLEGALNAMEOFFIRM = 5;
+  const int PartySubIDType_LOCATIONDESK = 25;
+  const int PartySubIDType_REGISTEREDADDRESS_12 = 12;
+  const int PartySubIDType_REGISTRATION_NUMBER = 11;
+  const int PartySubIDType_EMAILADDRESS = 8;
+  const int PartySubIDType_SYSTEM = 3;
+  const int PartySubIDType_SECURITIESACCOUNTNUMBER = 10;
+  const int PartySubIDType_REGULATORY_STATUS = 13;
+  const int PartySubIDType_CSD_PARTICIPANT_MEMBER_CODE = 17;
+  const int PartySubIDType_PHONENUMBER = 7;
+  const int PartySubIDType_CURRENCY_DELIVERY_IDENTIFIER = 33;
+  const int PartySubIDType_REGISTRATION_NAME = 14;
+  const int PartySubIDType_REGISTERED_ADDRESS_18 = 18;
+  const int PartySubIDType_TELEX_NUMBER = 20;
+  const int PartySubIDType_EMAIL_ADDRESS = 8;
+  const int PartySubIDType_FAXNUMBER = 21;
+  const int PartySubIDType_BIC = 16;
+  const int PartySubIDType_CASHACCOUNT = 15;
+  const int PartySubIDType_REGISTRATIONNUMBER = 11;
+  const int PartySubIDType_LOCATION_DESK = 25;
+  const int PartySubIDType_APPLICATION = 4;
+  const int PartySubIDType_CASHACCOUNTNAME = 23;
+  const int PartySubIDType_SECURITIES_ACCOUNT_NAME = 22;
+  const int PartySubIDType_PHONE_NUMBER = 7;
+  const int PartySubIDType_SECURITIESACCOUNTNAME = 22;
+  const int PartySubIDType_REGISTRATIONNAME = 14;
+  const int PartySubIDType_ELIGIBLE_COUNTERPARTY = 29;
+  const int PartySubIDType_REGISTEREDADDRESS_18 = 18;
+  const int PartySubIDType_SECURITIES_ACCOUNT_NUMBER = 10;
+  const int PartySubIDType_FULL_LEGAL_NAME_OF_FIRM = 5;
+  const int PartySubIDType_MARKET_MAKER = 28;
+  const int PartySubIDType_EXECUTION_VENUE = 32;
+  const int PartySubIDType_POSITIONACCOUNTTYPE = 26;
+  const int PartySubIDType_FUNDACCOUNTNAME = 19;
+  const int PartySubIDType_CSDPARTICIPANTMEMBERCODE = 17;
+  const int PartySubIDType_REGULATORYSTATUS = 13;
+  const int AllocNoOrdersType_EXPLICIT_LIST_PROVIDED = 1;
+  const int AllocNoOrdersType_NOTSPECIFIED = 0;
+  const int AllocNoOrdersType_NOT_SPECIFIED = 0;
+  const int AllocNoOrdersType_EXPLICITLISTPROVIDED = 1;
+  const int AllocLinkType_FX_SWAP = 1;
+  const int AllocLinkType_F_X_NETTING = 0;
+  const int AllocLinkType_FXNETTING = 0;
+  const int AllocLinkType_FX_NETTING = 0;
+  const int AllocLinkType_FXSWAP = 1;
+  const int AllocLinkType_F_X_SWAP = 1;
+  const int UnderlyingSettlementType_T_PLUS_1 = 2;
+  const int UnderlyingSettlementType_T_PLUS_3 = 4;
+  const int UnderlyingSettlementType_T_PLUS_4 = 5;
+  const char DisplayMethod_NEW = '2';
+  const char DisplayMethod_UNDISCLOSED = '4';
+  const char DisplayMethod_RANDOM = '3';
+  const char DisplayMethod_INITIAL = '1';
+  const int CollStatus_PARTIALLY_ASSIGNED = 1;
+  const int CollStatus_ASSIGNEDACCEPTED = 3;
+  const int CollStatus_ASSIGNMENT_PROPOSED = 2;
+  const int CollStatus_ASSIGNED = 3;
+  const int CollStatus_CHALLENGED = 4;
+  const int CollStatus_UNASSIGNED = 0;
+  const int CollStatus_ASSIGNMENTPROPOSED = 2;
+  const int CollStatus_PARTIALLYASSIGNED = 1;
+  const int SideValueInd_SIDEVALUE_2 = 2;
+  const int SideValueInd_SIDEVALUE1 = 1;
+  const int SideValueInd_SIDEVALUE2 = 2;
+  const int SideValueInd_SIDE_VALUE_1 = 1;
+  const int SideValueInd_SIDE_VALUE_2 = 2;
+  const char MsgDirection_RECEIVE = 'R';
+  const char MsgDirection_SEND = 'S';
+  const char MDUpdateAction_DELETE = '2';
+  const char MDUpdateAction_NEW = '0';
+  const char MDUpdateAction_DELETE_THRU = '3';
+  const char MDUpdateAction_DELETE_FROM = '4';
+  const char MDUpdateAction_OVERLAY = '5';
+  const char MDUpdateAction_CHANGE = '1';
+  const char MatchStatus_ADVALERT = '2';
+  const char MatchStatus_UNCOMPARED_UNMATCHED_OR_UNAFFIRED = '1';
+  const char MatchStatus_COMPARED_MATCHED_OR_AFFIRMED = '0';
+  const char MatchStatus_ADVISORY_OR_ALERT = '2';
+  const char MatchStatus_UNCOMPUNMATUNAFF = '1';
+  const char MatchStatus_COMPMATAFF = '0';
+  const char MatchStatus_UNCOMPARED_UNMATCHED_OR_UNAFFIRMED = '1';
+  const int RateSource_REUTERS = 1;
+  const int RateSource_OTHER = 99;
+  const int RateSource_BLOOMBERG = 0;
+  const int RateSource_TELERATE = 2;
+  const char AllocPositionEffect_CLOSE = 'C';
+  const char AllocPositionEffect_FIFO = 'F';
+  const char AllocPositionEffect_OPEN = 'O';
+  const char AllocPositionEffect_ROLLED = 'R';
+  const char PartyIDSource_US_EMPLOYER_OR_TAX_ID_NUMBER = '8';
+  const char PartyIDSource_PROPRIETARY = 'D';
+  const char PartyIDSource_USEMPLOYERIDNUMBER = '8';
+  const char PartyIDSource_ACCPTMARKETPART = 'C';
+  const char PartyIDSource_CSDPARTCODE = 'H';
+  const char PartyIDSource_AUSTRALIAN_TAX_FILE_NUMBER = 'A';
+  const char PartyIDSource_KOREANINVESTORID = '1';
+  const char PartyIDSource_GENERALLY_ACCEPTED_MARKET_PARTICIPANT_IDENTIFIER = 'C';
+  const char PartyIDSource_AUSTRALIAN_BUSINESS_NUMBER = '9';
+  const char PartyIDSource_US_EMPLOYER_IDENTIFICATION_NUMBER = '8';
+  const char PartyIDSource_AUSTRALIANTAXFILENUMBER = 'A';
+  const char PartyIDSource_TAIWANESE_TRADING_ACCOUNT = '3';
+  const char PartyIDSource_TAIWANESE_TRADING_ACCT = '3';
+  const char PartyIDSource_CHINESEBSHARE = '5';
+  const char PartyIDSource_AUSTRALIANBUSINESSNUMBER = '9';
+  const char PartyIDSource_MALAYSIAN_CENTRAL_DEPOSITORY = '4';
+  const char PartyIDSource_US_SOCIAL_SECURITY_NUMBER = '7';
+  const char PartyIDSource_TAIWANESEQUALIFIED = '2';
+  const char PartyIDSource_USSOCIALSECURITY = '7';
+  const char PartyIDSource_DIRECTEDDEFINEDISITC = 'I';
+  const char PartyIDSource_UK_NATIONAL_INSURANCE_OR_PENSION_NUMBER = '6';
+  const char PartyIDSource_CSD_PARTICIPANT_MEMBER_CODE = 'H';
+  const char PartyIDSource_DIRECTED_BROKER_THREE_CHARACTER_ACRONYM_AS_DEFINED_IN_ISITC_ETC_BEST_PRACTICE_GUIDELINES_DOCUMENT = 'I';
+  const char PartyIDSource_TAIWANESE_QUALIFIED_FOREIGN_INVESTOR_ID_QFII = '2';
+  const char PartyIDSource_SETTLEMENT_ENTITY_LOCATION = 'F';
+  const char PartyIDSource_PROPRIETARY_CUSTOM_CODE = 'D';
+  const char PartyIDSource_UKNATIONALINSPENNUMBER = '6';
+  const char PartyIDSource_BIC = 'B';
+  const char PartyIDSource_CHINESE_INVESTOR_ID = '5';
+  const char PartyIDSource_TAIWANESETRADINGACCT = '3';
+  const char PartyIDSource_MIC = 'G';
+  const char PartyIDSource_KOREAN_INVESTOR_ID = '1';
+  const char PartyIDSource_ISO_COUNTRY_CODE = 'E';
+  const char PartyIDSource_TAIWANESE_QUALIFIED_FOREIGN_INVESTOR_ID_QFII_FID = '2';
+  const char PartyIDSource_PROPCODE = 'D';
+  const char PartyIDSource_ISOCODE = 'E';
+  const char PartyIDSource_CHINESE_B_SHARE = '5';
+  const char PartyIDSource_MCDNUMBER = '4';
+  const char PartyIDSource_SETTLENTLOC = 'F';
+  const char ExchangeForPhysical_NO = 'N';
+  const char ExchangeForPhysical_YES = 'Y';
+  const int SecurityTradingEvent_CHANGE_OF_SECURITY_TRADING_STATUS = 6;
+  const int SecurityTradingEvent_CHANGE_OF_TRADING_SESSION = 4;
+  const int SecurityTradingEvent_CHANGE_OF_SECURITY_STATUS = 6;
+  const int SecurityTradingEvent_PRICE_VOLATILITY_INTERRUPTION = 3;
+  const int SecurityTradingEvent_CHANGE_OF_BOOK_TYPE = 7;
+  const int SecurityTradingEvent_CHANGE_OF_TRADING_SUBSESSION = 5;
+  const int SecurityTradingEvent_CHANGE_OF_MARKET_DEPTH = 8;
+  const int SecurityTradingEvent_TRADING_RESUMES = 2;
+  const int SecurityTradingEvent_ORDER_IMBALANCE_AUCTION_IS_EXTENDED = 1;
+  const int CollAction_ADD = 1;
+  const int CollAction_REMOVE = 2;
+  const int CollAction_RETAIN = 0;
+  const char PossDupFlag_NO = 'N';
+  const char PossDupFlag_YES = 'Y';
+  const int ListStatusType_ALL_DONE = 5;
+  const int ListStatusType_TIMED = 3;
+  const int ListStatusType_RESP = 2;
+  const int ListStatusType_EXECSTARTED = 4;
+  const int ListStatusType_RESPONSE = 2;
+  const int ListStatusType_ALLDONE = 5;
+  const int ListStatusType_ALERT = 6;
+  const int ListStatusType_ACK = 1;
+  const int ListStatusType_EXEC_STARTED = 4;
+  const int ListStatusType_EXECSTART = 4;
+  const char GapFillFlag_NO = 'N';
+  const char GapFillFlag_YES = 'Y';
+  const char TradeHandlingInstr_AUTOMATED_FLOOR_ORDER_ROUTING = '4';
+  const char TradeHandlingInstr_TWO_PARTY_REPORT = '1';
+  const char TradeHandlingInstr_ONE_PARTY_REPORT_FOR_MATCHING = '2';
+  const char TradeHandlingInstr_TRADE_CONFIRMATION = '0';
+  const char TradeHandlingInstr_ONE_PARTY_REPORT_FOR_PASS_THROUGH = '3';
+  const char TradeHandlingInstr_TWO_PARTY_REPORT_FOR_CLAIM = '5';
+  const int TradSesMethod_TWOPARTY = 3;
+  const int TradSesMethod_ELECTRONIC = 1;
+  const int TradSesMethod_OPENOUTCRY = 2;
+  const int TradSesMethod_TWO_PARTY = 3;
+  const int TradSesMethod_OPEN_OUTCRY = 2;
+  const char TradeType_AGENCY = 'A';
+  const char TradeType_VWAP_GUARANTEE = 'G';
+  const char TradeType_RISK_TRADE = 'R';
+  const char TradeType_GUARANTEED_CLOSE = 'J';
+  const int ComplexEventCondition_AND = 1;
+  const int ComplexEventCondition_OR = 2;
+  const char BenchmarkCurveName_SONIA[] = "SONIA";
+  const char BenchmarkCurveName_MUNIAAA[] = "MuniAAA";
+  const char BenchmarkCurveName_LIBID[] = "LIBID";
+  const char BenchmarkCurveName_PFANDBRIEFE[] = "Pfandbriefe";
+  const char BenchmarkCurveName_EUREPO[] = "EUREPO";
+  const char BenchmarkCurveName_FUTURESWAP[] = "FutureSWAP";
+  const char BenchmarkCurveName_TREASURY[] = "Treasury";
+  const char BenchmarkCurveName_OTHER[] = "OTHER";
+  const char BenchmarkCurveName_EURIBOR[] = "Euribor";
+  const char BenchmarkCurveName_EONIA[] = "EONIA";
+  const char BenchmarkCurveName_LIBOR[] = "LIBOR";
+  const char BenchmarkCurveName_SWAP[] = "SWAP";
+  const char CashMargin_MARGINCLOSE = '3';
+  const char CashMargin_MARGINOPEN = '2';
+  const char CashMargin_MARGIN_CLOSE = '3';
+  const char CashMargin_MARGIN_OPEN = '2';
+  const char CashMargin_CASH = '1';
+  const char SettlObligTransType_REPLACE = 'R';
+  const char SettlObligTransType_NEW = 'N';
+  const char SettlObligTransType_RESTATE = 'T';
+  const char SettlObligTransType_CANCEL = 'C';
+  const char DeskOrderHandlingInst_PEGGED[] = "PEG";
+  const char DeskOrderHandlingInst_MARKET_ON_OPEN[] = "MOO";
+  const char DeskOrderHandlingInst_SCALE[] = "SCL";
+  const char DeskOrderHandlingInst_FILL_OR_KILL[] = "FOK";
+  const char DeskOrderHandlingInst_ALL_OR_NONE[] = "AON";
+  const char DeskOrderHandlingInst_NOT_HELD[] = "NH";
+  const char DeskOrderHandlingInst_DIRECTED_ORDER[] = "DIR";
+  const char DeskOrderHandlingInst_STOP_STOCK_TRANSACTION[] = "S.W";
+  const char DeskOrderHandlingInst_OVER_THE_DAY[] = "OVD";
+  const char DeskOrderHandlingInst_ADD_ON_ORDER[] = "ADD";
+  const char DeskOrderHandlingInst_MARKET_AT_CLOSE[] = "MAC";
+  const char DeskOrderHandlingInst_LIMIT_ON_OPEN[] = "LOO";
+  const char DeskOrderHandlingInst_CASH_NOT_HELD[] = "CNH";
+  const char DeskOrderHandlingInst_MARKET_ON_CLOSE[] = "MOC";
+  const char DeskOrderHandlingInst_TIME_ORDER[] = "TMO";
+  const char DeskOrderHandlingInst_LIMIT_ON_CLOSE[] = "LOC";
+  const char DeskOrderHandlingInst_IMMEDIATE_OR_CANCEL[] = "IOC";
+  const char DeskOrderHandlingInst_TRAILING_STOP[] = "TS";
+  const char DeskOrderHandlingInst_WORK[] = "WRK";
+  const char DeskOrderHandlingInst_RESERVE_SIZE_ORDER[] = "RSV";
+  const char DeskOrderHandlingInst_MINIMUM_QUANTITY[] = "MQT";
+  const char DeskOrderHandlingInst_MARKET_AT_OPEN[] = "MAO";
+  const char DeskOrderHandlingInst_IMBALANCE_ONLY[] = "IO";
+  const char DeskOrderHandlingInst_EXCHANGE_FOR_PHYSICAL_TRANSACTION[] = "E.W";
+  const int PosTransType_DO_NOT_EXERCISE = 2;
+  const int PosTransType_POSITION_CHANGE_SUBMISSION_MARGIN_DISPOSITION = 4;
+  const int PosTransType_DONOTEXERCISE = 2;
+  const int PosTransType_LARGE_TRADER_SUBMISSION = 6;
+  const int PosTransType_POSITIONCHANGESUBMISSIONMARGINDISPOSITION = 4;
+  const int PosTransType_POSITIONADJUSTMENT = 3;
+  const int PosTransType_EXERCISE = 1;
+  const int PosTransType_POSITION_ADJUSTMENT = 3;
+  const int PosTransType_PLEDGE = 5;
+  const char Seniority_SUBORDINATED[] = "SB";
+  const char Seniority_SENIOR_SECURED[] = "SD";
+  const char Seniority_SENIOR[] = "SR";
+  const char SettlCurrFxRateCalc_DIVIDE = 'D';
+  const char SettlCurrFxRateCalc_MULTIPLY = 'M';
+  const int PosMaintStatus_ACCEPTED_WITH_WARNINGS = 1;
+  const int PosMaintStatus_COMPLETED = 3;
+  const int PosMaintStatus_ACCEPTEDWITHWARNINGS = 1;
+  const int PosMaintStatus_COMPLETEDWITHWARNINGS = 4;
+  const int PosMaintStatus_REJECTED = 2;
+  const int PosMaintStatus_ACCEPTED = 0;
+  const int PosMaintStatus_COMPLETED_WITH_WARNINGS = 4;
+  const char Benchmark_6_MO_LIBOR = '9';
+  const char Benchmark_OLD_5 = '3';
+  const char Benchmark_OLD_30 = '7';
+  const char Benchmark_30YR = '6';
+  const char Benchmark_5YR = '2';
+  const char Benchmark_3_MO_LIBOR = '8';
+  const char Benchmark_OLD_10 = '5';
+  const char Benchmark_6MOLIBOR = '9';
+  const char Benchmark_10YR = '4';
+  const char Benchmark_CURVE = '1';
+  const char Benchmark_30_YR = '6';
+  const char Benchmark_10_YR = '4';
+  const char Benchmark_5_YR = '2';
+  const char Benchmark_OLD30 = '7';
+  const char Benchmark_OLD5 = '3';
+  const char Benchmark_OLD10 = '5';
+  const char Benchmark_3MOLIBOR = '8';
+  const int MaturityMonthYearFormat_YEARMONTHWEEK = 2;
+  const int MaturityMonthYearFormat_YEARMONTHDAY = 1;
+  const int MaturityMonthYearFormat_YEARMONTH_ONLY = 0;
+  const char LegalConfirm_NO = 'N';
+  const char LegalConfirm_YES = 'Y';
+  const int ApplReportType_REPORTS_THAT_THE_LAST_MESSAGE_HAS_BEEN_SENT_FOR_THE_APPLIDS_REFER_TO_REFAPPLLASTSEQNUM = 1;
+  const int ApplReportType_APPLICATION_MESSAGE_RE_SEND_COMPLETED = 3;
+  const int ApplReportType_RESET_APPLSEQNUM_TO_NEW_VALUE_SPECIFIED_IN_APPLNEWSEQNUM = 0;
+  const int ApplReportType_HEARTBEAT_MESSAGE_INDICATING_THAT_APPLICATION_IDENTIFIED_BY_REFAPPLID = 2;
+  const char ReportToExch_NO = 'N';
+  const char ReportToExch_YES = 'Y';
+  const int AllocRejCode_INCORRECT_ALLOCATED_QUANTITY = 8;
+  const int AllocRejCode_UNKNOWNACCT = 0;
+  const int AllocRejCode_INCORRECTAVGPRC = 2;
+  const int AllocRejCode_UNKNOWN_ORDERID = 5;
+  const int AllocRejCode_WAREHOUSEREQUESTREJECTED = 13;
+  const int AllocRejCode_UNKNOWNORSTALEEXECID = 10;
+  const int AllocRejCode_WAREHOUSE_REQUEST_REJECTED = 13;
+  const int AllocRejCode_INCORRECT_AVERAGEG_PRICE = 2;
+  const int AllocRejCode_MISMATCHEDDATA = 11;
+  const int AllocRejCode_INCORRECTBRKMNC = 3;
+  const int AllocRejCode_UNKNOWNLISTID = 6;
+  const int AllocRejCode_OTHER_99 = 99;
+  const int AllocRejCode_INCORRECTALLOCATEDQUANTITY = 8;
+  const int AllocRejCode_UNKNOWN_LISTID = 6;
+  const int AllocRejCode_INCORRECT_QUANTITY = 1;
+  const int AllocRejCode_INCORRECT_AVERAGE_PRICE = 2;
+  const int AllocRejCode_UNKNOWN_ACCOUNT = 0;
+  const int AllocRejCode_UNKNOWN_OR_STALE_EXECID = 10;
+  const int AllocRejCode_OTHER = 7;
+  const int AllocRejCode_OTHER_7 = 7;
+  const int AllocRejCode_UNKNOWN_CLORDID = 12;
+  const int AllocRejCode_INCORRECTQTY = 1;
+  const int AllocRejCode_COMMDIFF = 4;
+  const int AllocRejCode_CALCULATIONDIFFERENCE = 9;
+  const int AllocRejCode_UNKNOWNCLORDID = 12;
+  const int AllocRejCode_UNKNOWNORDID = 5;
+  const int AllocRejCode_MISMATCHED_DATA = 11;
+  const int AllocRejCode_CALCULATION_DIFFERENCE = 9;
+  const int AllocRejCode_COMMISSION_DIFFERENCE = 4;
+  const int AllocRejCode_UNKNOWN_EXECUTING_BROKER_MNEMONIC = 3;
+  const int RefOrdIDReason_GTC_FROM_PREVIOUS_DAY = 0;
+  const int RefOrdIDReason_PARTIAL_FILL_REMAINING = 1;
+  const int RefOrdIDReason_ORDER_CHANGED = 2;
+  const char RefOrderIDSource_SECONDARYORDERID = '0';
+  const char RefOrderIDSource_ORDERID = '1';
+  const char RefOrderIDSource_MDENTRYID = '2';
+  const char RefOrderIDSource_ORIGINAL_ORDER_ID = '4';
+  const char RefOrderIDSource_MENTRYID = '2';
+  const char RefOrderIDSource_QUOTEENTRYID = '3';
+  const char RefOrderIDSource_QUOTENTRYID = '3';
+  const char RefOrderIDSource_ORDEID = '1';
+  const char RefOrderIDSource_SECONDARYORDEID = '0';
+  const char LastCapacity_A = '1';
+  const char LastCapacity_XP = '3';
+  const char LastCapacity_CROSS_AS_PRINCIPAL = '3';
+  const char LastCapacity_PRINCIPAL = '4';
+  const char LastCapacity_P = '4';
+  const char LastCapacity_CROSS_AS_AGENT = '2';
+  const char LastCapacity_AGENT = '1';
+  const char LastCapacity_XA = '2';
+  const int InstrAttribType_INSTRUMENT_STRIKE_PRICE = 28;
+  const int InstrAttribType_IN_DEFAULT = 15;
+  const int InstrAttribType_COUPONPERIOD = 8;
+  const int InstrAttribType_ORIGINAL_ISSUE_DISCOUNT = 10;
+  const int InstrAttribType_PRE_REFUNDED = 14;
+  const int InstrAttribType_SUBJECT_TO_ALTERNATIVE_MINIMUM_TAX = 19;
+  const int InstrAttribType_CALLABLEPUTTABLE = 11;
+  const int InstrAttribType_WHEN_AND_IF_ISSUED = 9;
+  const int InstrAttribType_STEPPEDCOUPON = 7;
+  const int InstrAttribType_UNRATED = 16;
+  const int InstrAttribType_CALLABLE_WITHOUT_NOTICE_BY_MAIL_TO_HOLDER_UNLESS_REGISTERED = 22;
+  const int InstrAttribType_STEPPED_COUPON = 7;
+  const int InstrAttribType_TEXT = 99;
+  const int InstrAttribType_ORIGINALISSUEDISCOUNTPRICE = 20;
+  const int InstrAttribType_ESCROWEDTOREDEMPTIONDATE = 13;
+  const int InstrAttribType_INSTRUMENT_DENOMINATOR = 25;
+  const int InstrAttribType_ESCROWED_TO_REDEMPTION_DATE = 13;
+  const int InstrAttribType_INTEREST_BEARING = 3;
+  const int InstrAttribType_TAXABLE = 17;
+  const int InstrAttribType_CALLABLE_PUTTABLE = 11;
+  const int InstrAttribType_CALLABLE_BELOW_MATURITY_VALUE = 21;
+  const int InstrAttribType_COUPON_PERIOD = 8;
+  const int InstrAttribType_LESSFEEFORPUT = 6;
+  const int InstrAttribType_INTERESTBEARING = 3;
+  const int InstrAttribType_PREREFUNDED = 14;
+  const int InstrAttribType_INSTRUMENT_PRICE_PRECISION = 27;
+  const int InstrAttribType_TRADEABLE_INDICATOR = 29;
+  const int InstrAttribType_ORIGINAL_ISSUE_DISCOUNT_PRICE_SUPPLY_PRICE_IN_THE_INSTRATTRIBVALUE = 20;
+  const int InstrAttribType_VARIABLE_RATE = 5;
+  const int InstrAttribType_WHENISSUED = 9;
+  const int InstrAttribType_ZEROCOUPON = 2;
+  const int InstrAttribType_SUBJECTTOALTERNATIVEMINIMUMTAX = 19;
+  const int InstrAttribType_ESCROWEDTOMATURITY = 12;
+  const int InstrAttribType_FLAT = 1;
+  const int InstrAttribType_TRADE_TYPE_ELIGIBILITY_DETAILS_FOR_SECURITY = 24;
+  const int InstrAttribType_INSTRUMENT_NUMERATOR = 26;
+  const int InstrAttribType_ESCROWED_TO_MATURITY = 12;
+  const int InstrAttribType_LESS_FEE_FOR_PUT = 6;
+  const int InstrAttribType_TEXT_SUPPLY_THE_TEXT_OF_THE_ATTRIBUTE_OR_DISCLAIMER_IN_THE_INSTRATTRIBVALUE = 99;
+  const int InstrAttribType_CALLABLEWITHOUTNOTICEBYMAILTOHOLDERUNLESSREGISTERED = 22;
+  const int InstrAttribType_INDEXED = 18;
+  const int InstrAttribType_INDEFAULT = 15;
+  const int InstrAttribType_ZERO_COUPON = 2;
+  const int InstrAttribType_NOPERIODICPAYMENTS = 4;
+  const int InstrAttribType_CALLABLEBELOWMATURITYVALUE = 21;
+  const int InstrAttribType_ORIGINALISSUEDISCOUNT = 10;
+  const int InstrAttribType_PRICE_TICK_RULES_FOR_SECURITY = 23;
+  const int InstrAttribType_NO_PERIODIC_PAYMENTS = 4;
+  const int InstrAttribType_VARIABLERATE = 5;
+  const int Product_FINANCING = 13;
+  const int Product_COMMODITY = 2;
+  const int Product_EQUITY = 5;
+  const int Product_CORPORATE = 3;
+  const int Product_AGENCY = 1;
+  const int Product_OTHER = 12;
+  const int Product_MONEYMARKET = 9;
+  const int Product_MORTGAGE = 10;
+  const int Product_CURRENCY = 4;
+  const int Product_INDEX = 7;
+  const int Product_MUNICIPAL = 11;
+  const int Product_LOAN = 8;
+  const int Product_GOVERNMENT = 6;
+  const int SecurityTradingStatus_NOMKTIMB = 12;
+  const int SecurityTradingStatus_NOOPEN = 4;
+  const int SecurityTradingStatus_FAST_MARKET = 23;
+  const int SecurityTradingStatus_NO_OPEN_NO_RESUME = 4;
+  const int SecurityTradingStatus_TRADING_HALT = 2;
+  const int SecurityTradingStatus_NOT_AVAILABLE_FOR_TRADING = 18;
+  const int SecurityTradingStatus_11 = 11;
+  const int SecurityTradingStatus_NO_OPEN = 4;
+  const int SecurityTradingStatus_NOTTRADED = 19;
+  const int SecurityTradingStatus_FASTMARKET = 23;
+  const int SecurityTradingStatus_MKTBALSELL = 8;
+  const int SecurityTradingStatus_NEWPXIND = 15;
+  const int SecurityTradingStatus_TRDDISTIME = 16;
+  const int SecurityTradingStatus_PXIND = 5;
+  const int SecurityTradingStatus_CROSS = 25;
+  const int SecurityTradingStatus_OPENINGROTATION = 22;
+  const int SecurityTradingStatus_TRDRNGIND = 6;
+  const int SecurityTradingStatus_RESUME = 3;
+  const int SecurityTradingStatus_TRADE_DISSEMINATION_TIME = 16;
+  const int SecurityTradingStatus_NO_MARKET_ON_CLOSE_IMBALANCE = 13;
+  const int SecurityTradingStatus_POST_CLOSE = 26;
+  const int SecurityTradingStatus_OPENDELAY = 1;
+  const int SecurityTradingStatus_READY = 17;
+  const int SecurityTradingStatus_MARKET_ON_CLOSE_IMBALANCE_BUY = 9;
+  const int SecurityTradingStatus_NOTAVAIL = 18;
+  const int SecurityTradingStatus_MARKET_IMBALANCE_SELL = 8;
+  const int SecurityTradingStatus_OPENING_DELAY = 1;
+  const int SecurityTradingStatus_MKTONCLSIMBSELL = 10;
+  const int SecurityTradingStatus_NOT_TRADED_ON_THIS_MARKET = 19;
+  const int SecurityTradingStatus_ITS_PRE_OPENING = 14;
+  const int SecurityTradingStatus_PRE_CROSS = 24;
+  const int SecurityTradingStatus_NA = 11;
+  const int SecurityTradingStatus_NOMKTONCLSIMB = 13;
+  const int SecurityTradingStatus_PRE_OPEN = 21;
+  const int SecurityTradingStatus_MARKET_IMBALANCE_BUY = 7;
+  const int SecurityTradingStatus_TRADING_RANGE_INDICATION = 6;
+  const int SecurityTradingStatus_READY_TO_TRADE = 17;
+  const int SecurityTradingStatus_NEW_PRICE_INDICATION = 15;
+  const int SecurityTradingStatus_ITSPREOPN = 14;
+  const int SecurityTradingStatus_TRDHALT = 2;
+  const int SecurityTradingStatus_MKTONCLSIMBBUY = 9;
+  const int SecurityTradingStatus_OPENING_ROTATION = 22;
+  const int SecurityTradingStatus_PRICE_INDICATION = 5;
+  const int SecurityTradingStatus_UNKNOWN_OR_INVALID = 20;
+  const int SecurityTradingStatus_MARKET_ON_CLOSE_IMBALANCE_SELL = 10;
+  const int SecurityTradingStatus_UNKNOWN = 20;
+  const int SecurityTradingStatus_MKTIMBBUY = 7;
+  const int SecurityTradingStatus_NO_MARKET_IMBALANCE = 12;
+  const char Rule80A_PRGINDEXARBOTHMEM = 'N';
+  const char Rule80A_TRANSACTIONS_FOR_THE_ACCOUNT_OF_A_NON_MEMBER_COMPETING_MARKET_MAKER = 'R';
+  const char Rule80A_SPECIALIST_TRADES = 'S';
+  const char Rule80A_PROGRAM_ORDER_INDEX_ARB_FOR_INDIVIDUAL_CUSTOMER = 'J';
+  const char Rule80A_PROGRAM_ORDER_INDEX_ARB_FOR_MEMBER_FIRM_ORG = 'D';
+  const char Rule80A_SHTEXTRANI = 'H';
+  const char Rule80A_SHTEXTRANMEMWT = 'X';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_F = 'F';
+  const char Rule80A_COMPETING_DEALER_TRADES_O = 'O';
+  const char Rule80A_PROGRAM_ORDER_NON_INDEX_ARB_FOR_INDIVIDUAL_CUSTOMER = 'K';
+  const char Rule80A_AGENCY_ALGORITHMIC_PROGRAM_TRADING = 'K';
+  const char Rule80A_SHTEXTRANMEM = 'L';
+  const char Rule80A_PRGINDEXARBOTHAGN = 'U';
+  const char Rule80A_PRGNONINDEXARBINV = 'J';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_H = 'H';
+  const char Rule80A_PRINCIPAL = 'P';
+  const char Rule80A_AGENCY_INDEX_ARBITRAGE = 'U';
+  const char Rule80A_TRANSACTIONS_FOR_THE_ACCOUNT_OF_A_NON_MEMBER_COMPTING_MARKET_MAKER = 'R';
+  const char Rule80A_SHTEXTRANA = 'B';
+  const char Rule80A_SHTEXTRANW = 'F';
+  const char Rule80A_PRGINDEXARBINV = 'K';
+  const char Rule80A_COMPETING_DEALER_TRADES_R = 'R';
+  const char Rule80A_INDIVIDUAL_INVESTOR_SINGLE_ORDER = 'I';
+  const char Rule80A_PROPRIETARY_NON_ALGORITHMIC_PROGRAM_TRADE = 'C';
+  const char Rule80A_AGENT_FOR_OTHER_MEMBER_NON_ALGORITHMIC_PROGRAM_TRADE = 'N';
+  const char Rule80A_ALLOTHERAGN = 'W';
+  const char Rule80A_PRGNONINDEXARBOTHAGN = 'Y';
+  const char Rule80A_PROPRIETARY_TRANSACTIONS_FOR_COMPETING_MARKET_MAKER_THAT_IS_AFFILIATED_WITH_THE_CLEARING_MEMBER = 'O';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_MEMBER_COMPETING_MARKET_MAKER_NOT_AFFILIATED_WITH_THE_FIRM_CLEARING_THE_TRADE = 'X';
+  const char Rule80A_AGENCYSINGLE = 'A';
+  const char Rule80A_COMPETING_DEALER_TRADES_T = 'T';
+  const char Rule80A_PROGRAM_ORDER_NON_INDEX_ARB_FOR_OTHER_MEMBER = 'N';
+  const char Rule80A_PROPRIETARY_ALGORITHMIC_PROGRAM_TRADING = 'J';
+  const char Rule80A_AGENCY_NON_ALGORITHMIC_PROGRAM_TRADE = 'Y';
+  const char Rule80A_PRGNONINDEXARBMEM = 'C';
+  const char Rule80A_PRGNONINDEXARBOTHMEM = 'M';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_NON_MEMBER_COMPETING_MARKET_MAKER = 'Z';
+  const char Rule80A_PROGRAM_ORDER_NON_INDEX_ARB_FOR_OTHER_AGENCY = 'Y';
+  const char Rule80A_ALL_OTHER_ORDERS_AS_AGENT_FOR_OTHER_MEMBER = 'W';
+  const char Rule80A_PROGRAM_ORDER_NON_INDEX_ARB_FOR_MEMBER_FIRM_ORG = 'C';
+  const char Rule80A_PRGINDEXARBMEM = 'D';
+  const char Rule80A_INVINESTOR = 'I';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_PRINCIPAL = 'E';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_B = 'B';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_MEMBER_COMPETING_MARKET_MAKER_AFFILIATED_WITH_THE_FIRM_CLEARING_THE_TRADE = 'L';
+  const char Rule80A_AGENCY_SINGLE_ORDER = 'A';
+  const char Rule80A_SHORT_EXEMPT_TRANSACTION_FOR_MEMBER_COMPETING_MARKET_MAKER_AFFLIATED_WITH_THE_FIRM_CLEARING_THE_TRADE = 'L';
+  const char Rule80A_COMPETINGDEALER = 'O';
+  const char Rule80A_COMPDEALER1 = 'R';
+  const char Rule80A_SHTEXTRANNONMEM = 'Z';
+  const char Rule80A_TRANSACTIONS_FOR_THE_ACCOUNT_OF_AN_UNAFFILIATED_MEMBERS_COMPETING_MARKET_MAKER = 'T';
+  const char Rule80A_REGISTERED_EQUITY_MARKET_MAKER_TRADES = 'E';
+  const char Rule80A_MARKETMAKER = 'E';
+  const char Rule80A_SPECIALIST = 'S';
+  const char Rule80A_COMPDEALER2 = 'T';
+  const char Rule80A_PROGRAM_ORDER_INDEX_ARB_FOR_OTHER_AGENCY = 'U';
+  const char Rule80A_PROGRAM_ORDER_INDEX_ARB_FOR_OTHER_MEMBER = 'M';
+  const char CorporateAction_MERGER_REORGANIZATION = 'M';
+  const char CorporateAction_SYMBOL_CONVERSION = 'T';
+  const char CorporateAction_NEW = 'D';
+  const char CorporateAction_SUCCESSION_EVENT = 'W';
+  const char CorporateAction_STOCK_DIVIDEND = 'G';
+  const char CorporateAction_REVERSE_STOCK_SPLIT = 'I';
+  const char CorporateAction_POSITION_CONSOLIDATION = 'K';
+  const char CorporateAction_SPINOFF = 'P';
+  const char CorporateAction_EXDIVIDEND = 'A';
+  const char CorporateAction_EX_INTEREST = 'E';
+  const char CorporateAction_LIQUIDATION_REORGANIZATION = 'L';
+  const char CorporateAction_CASH_DIVIDEND = 'F';
+  const char CorporateAction_STANDARD_INTEGER_STOCK_SPLIT = 'J';
+  const char CorporateAction_RIGHTS_OFFERING = 'N';
+  const char CorporateAction_SHAREHOLDER_MEETING = 'O';
+  const char CorporateAction_WARRANT = 'R';
+  const char CorporateAction_EXDIST = 'B';
+  const char CorporateAction_EX_RIGHTS = 'C';
+  const char CorporateAction_EX_DISTRIBUTION = 'B';
+  const char CorporateAction_EX_DIVIDEND = 'A';
+  const char CorporateAction_TENDER_OFFER = 'Q';
+  const char CorporateAction_SPECIAL_ACTION = 'S';
+  const char CorporateAction_EXINTEREST = 'E';
+  const char CorporateAction_NON_INTEGER_STOCK_SPLIT = 'H';
+  const char CorporateAction_CUSIP = 'U';
+  const char CorporateAction_LEAP_ROLLOVER = 'V';
+  const char CorporateAction_EXRIGHTS = 'C';
+  const int TerminationType_TERM = 2;
+  const int TerminationType_FLEXIBLE = 3;
+  const int TerminationType_OPEN = 4;
+  const int TerminationType_OVERNIGHT = 1;
+  const int PosMaintAction_REPLACE = 2;
+  const int PosMaintAction_NEW = 1;
+  const int PosMaintAction_REVERSE = 4;
+  const int PosMaintAction_CANCEL = 3;
+  const int ComplexEventPriceTimeType_SPECIFIED_DATE_TIME = 3;
+  const int ComplexEventPriceTimeType_EXPIRATION = 1;
+  const int ComplexEventPriceTimeType_IMMEDIATE = 2;
+  const char UnderlyingFXRateCalc_DIVIDE = 'D';
+  const char UnderlyingFXRateCalc_MULTIPLY = 'M';
+  const char OddLot_NO = 'N';
+  const char OddLot_YES = 'Y';
+  const char BookingUnit_AGGREGATE_EXECUTIONS_FOR_THIS_SYMBOL_SIDE_AND_SETTLEMENT_DATE = '2';
+  const char BookingUnit_AGGREGATE_PARTIAL_EXECUTIONS_ON_THIS_ORDER_AND_BOOK_ONE_TRADE_PER_ORDER = '1';
+  const char BookingUnit_EACH_PARTIAL_EXECUTION_IS_A_BOOKABLE_UNIT = '0';
+  const int AllocStatus_REJECTED_BY_INTERMEDIARY = 5;
+  const int AllocStatus_ACCEPTEDSUCCESSFULLYPROCESSED = 0;
+  const int AllocStatus_ACCOUNTLEVELREJECT = 2;
+  const int AllocStatus_BLOCK_LEVEL_REJECT = 1;
+  const int AllocStatus_ACCOUNT_LEVEL_REJECT = 2;
+  const int AllocStatus_INCOMPLETE = 4;
+  const int AllocStatus_ALLOCATION_PENDING = 6;
+  const int AllocStatus_BLOCKLEVELREJECT = 1;
+  const int AllocStatus_REJECTEDBYINTERMEDIARY = 5;
+  const int AllocStatus_RECEIVEDRECEIVEDNOTYETPROCESSED = 3;
+  const int AllocStatus_REVERSED = 7;
+  const int AllocStatus_RECEIVED = 3;
+  const int AllocStatus_PARTIAL_ACCEPT = 2;
+  const int AllocStatus_REJECTED = 1;
+  const int AllocStatus_ACCEPTED = 0;
+  const int IncTaxInd_NET = 1;
+  const int IncTaxInd_GROSS = 2;
+  const int PartyListResponseType_RETURN_ONLY_PARTY_INFORMATION = 1;
+  const int PartyListResponseType_RETURN_ALL_AVAILABLE_INFORMATION_ON_PARTIES_AND_RELATED_PARTIES = 0;
+  const int PartyListResponseType_INCLUDE_RISK_LIMIT_INFORMATION = 3;
+  const int PartyListResponseType_INCLUDE_INFORMATION_ON_RELATED_PARTIES = 2;
+  const int PosReqStatus_COMPLETED = 0;
+  const int PosReqStatus_REJECTED = 2;
+  const int PosReqStatus_COMPLETEDWITHWARNINGS = 1;
+  const int PosReqStatus_COMPLETED_WITH_WARNINGS = 1;
+  const int PriorityIndicator_PRIORITY_UNCHANGED = 0;
+  const int PriorityIndicator_PRIORITYUNCHANGED = 0;
+  const int PriorityIndicator_LOSTPRIORITY = 1;
+  const int PriorityIndicator_LOST_PRIORITY_AS_RESULT_OF_ORDER_CHANGE = 1;
+  const char MoneyLaunderingStatus_NOTCHECKED = 'N';
+  const char MoneyLaunderingStatus_EXEMPT_BELOW_THE_LIMIT = '1';
+  const char MoneyLaunderingStatus_EXAUTHCREDIT = '3';
+  const char MoneyLaunderingStatus_EXEMPT_CLIENT_MONEY_TYPE_EXEMPTION = '2';
+  const char MoneyLaunderingStatus_EXEMPT_AUTHORISED_CREDIT_OR_FINANCIAL_INSTITUTION = '3';
+  const char MoneyLaunderingStatus_NOT_CHECKED = 'N';
+  const char MoneyLaunderingStatus_PASSED = 'Y';
+  const char MoneyLaunderingStatus_EXEMPT_1 = '1';
+  const char MoneyLaunderingStatus_EXCLIENTMONEYTYPE = '2';
+  const char MoneyLaunderingStatus_EXEMPT_2 = '2';
+  const char MoneyLaunderingStatus_EXBELOWLIM = '1';
+  const char MoneyLaunderingStatus_EXEMPT_3 = '3';
+  const char LotType_ROUND_LOT_BASED_UPON_UNITOFMEASURE = '4';
+  const char LotType_ROUND_LOT = '2';
+  const char LotType_ODD_LOT = '1';
+  const char LotType_BLOCK_LOT = '3';
+  const char QuoteCondition_FLAT_CURVE[] = "7";
+  const char QuoteCondition_REST_OF_BOOK_VWAP[] = "3";
+  const char QuoteCondition_BETTER_PRICES_IN_CONDITIONAL_ORDERS[] = "4";
+  const char QuoteCondition_TRADING_RANGE[] = "Q";
+  const char QuoteCondition_HALT_ETH[] = "k";
+  const char QuoteCondition_BID_OFFER_SPECIALIST[] = "r";
+  const char QuoteCondition_CONSOLBEST[] = "D";
+  const char QuoteCondition_CROSSED[] = "F";
+  const char QuoteCondition_NO_OPEN[] = "b";
+  const char QuoteCondition_HALT[] = "j";
+  const char QuoteCondition_PREOPENING_SAM[] = "v";
+  const char QuoteCondition_OPEN_SAM[] = "x";
+  const char QuoteCondition_RESERVED_SAM[] = "0";
+  const char QuoteCondition_OUTRIGHT_PRICE[] = "J";
+  const char QuoteCondition_IMPLIED_PRICE[] = "K";
+  const char QuoteCondition_DEPTH_ON_OFFER[] = "M";
+  const char QuoteCondition_ADDITIONAL_INFO_DUE_TO_RELATED[] = "V";
+  const char QuoteCondition_REGULAR_ETH[] = "c";
+  const char QuoteCondition_ROTATION_ETH[] = "i";
+  const char QuoteCondition_NONFIRM[] = "I";
+  const char QuoteCondition_EXCHANGE_BEST[] = "C";
+  const char QuoteCondition_DEPTH_ON_BID[] = "N";
+  const char QuoteCondition_CLOSING[] = "O";
+  const char QuoteCondition_VIEW_OF_COMMON[] = "X";
+  const char QuoteCondition_FORBIDDEN_SAM[] = "t";
+  const char QuoteCondition_LOCKED[] = "E";
+  const char QuoteCondition_ORDER_INFLUX[] = "R";
+  const char QuoteCondition_NEWS_PENDING[] = "T";
+  const char QuoteCondition_RESUME[] = "W";
+  const char QuoteCondition_TRADING_RESUME[] = "n";
+  const char QuoteCondition_OUT_OF_SEQUENCE[] = "o";
+  const char QuoteCondition_END_OF_DAY_SAM[] = "s";
+  const char QuoteCondition_FROZEN_SAM[] = "u";
+  const char QuoteCondition_OPENING_SAM[] = "w";
+  const char QuoteCondition_MANUAL_SLOW_QUOTE[] = "L";
+  const char QuoteCondition_NEWS_DISSEMINATION[] = "P";
+  const char QuoteCondition_DUE_TO_RELATED[] = "S";
+  const char QuoteCondition_VOLUME_ALERT[] = "Y";
+  const char QuoteCondition_FAST_MARKET_ETH[] = "f ";
+  const char QuoteCondition_INACTIVE_ETH[] = "g";
+  const char QuoteCondition_DUE_TO_NEWS_DISSEMINATION[] = "l";
+  const char QuoteCondition_SURVEILLANCE_SAM[] = "y";
+  const char QuoteCondition_DEPTH[] = "G";
+  const char QuoteCondition_OPEN[] = "A";
+  const char QuoteCondition_AUTOMATIC_EXECUTION[] = "d";
+  const char QuoteCondition_DUE_TO_NEWS_PENDING[] = "m";
+  const char QuoteCondition_NO_ACTIVE_SAM[] = "1";
+  const char QuoteCondition_OFFER_SPECIALIST[] = "q";
+  const char QuoteCondition_SUSPENDED_SAM[] = "z";
+  const char QuoteCondition_RESTRICTED[] = "2";
+  const char QuoteCondition_NON_FIRM[] = "I";
+  const char QuoteCondition_CLOSED_INACTIVE[] = "B";
+  const char QuoteCondition_ADDITIONAL_INFO[] = "U";
+  const char QuoteCondition_EQUIPMENT_CHANGEOVER[] = "a";
+  const char QuoteCondition_EXCHBEST[] = "C";
+  const char QuoteCondition_FAST_TRADING[] = "H";
+  const char QuoteCondition_FULL_CURVE[] = "6";
+  const char QuoteCondition_MEDIAN_PRICE[] = "5";
+  const char QuoteCondition_OPEN_ACTIVE[] = "A";
+  const char QuoteCondition_ORDER_IMBALANCE[] = "Z";
+  const char QuoteCondition_AUTOMATIC_EXECUTION_ETH[] = "e";
+  const char QuoteCondition_ROTATION[] = "h";
+  const char QuoteCondition_BID_SPECIALIST[] = "p";
+  const char QuoteCondition_FAST[] = "H";
+  const char QuoteCondition_CONSOLIDATED_BEST[] = "D";
+  const char QuoteCondition_CLOSED[] = "B";
+  const int PartyRelationship_OWNED_BY_30 = 30;
+  const int PartyRelationship_PROVIDES_QUOTES_TO = 17;
+  const int PartyRelationship_POSTS_TRADES_TO = 14;
+  const int PartyRelationship_REGULATORY_OWNER_OF = 29;
+  const int PartyRelationship_SUBSIDIARY_OF = 28;
+  const int PartyRelationship_HAS_MEMBERS = 10;
+  const int PartyRelationship_ENTERS_TRADES_THROUGH = 16;
+  const int PartyRelationship_BENEFICIAL_OWNER_OF = 35;
+  const int PartyRelationship_OWNED_BY_34 = 34;
+  const int PartyRelationship_CONTROLS = 31;
+  const int PartyRelationship_REQUESTS_QUOTES_FROM = 18;
+  const int PartyRelationship_SPONSORS = 5;
+  const int PartyRelationship_CLEARS_THROUGH = 2;
+  const int PartyRelationship_OWNED_BY_36 = 36;
+  const int PartyRelationship_BROKERS_TRADES_THROUGH = 22;
+  const int PartyRelationship_INVESTS_THROUGH = 20;
+  const int PartyRelationship_PARTICIPANT_OF_MARKETPLACE = 12;
+  const int PartyRelationship_LEGAL = 33;
+  const int PartyRelationship_ENTERS_TRADES_FOR = 15;
+  const int PartyRelationship_CARRIES_POSITIONS_FOR = 13;
+  const int PartyRelationship_IS_GUARANTEED_BY = 8;
+  const int PartyRelationship_IS_CONTROLLED_BY = 32;
+  const int PartyRelationship_PROVIDES_TRADING_SERVICES_FOR = 23;
+  const int PartyRelationship_IS_ALSO = 0;
+  const int PartyRelationship_PARENT_FIRM_FOR = 27;
+  const int PartyRelationship_APPROVED_BY = 26;
+  const int PartyRelationship_APPROVES_OF = 25;
+  const int PartyRelationship_USES_TRADING_SERVICES_OF = 24;
+  const int PartyRelationship_PROVIDES_GUARANTEE_FOR = 7;
+  const int PartyRelationship_SPONSORED_THROUGH = 6;
+  const int PartyRelationship_TRADES_FOR = 3;
+  const int PartyRelationship_CLEARS_FOR = 1;
+  const int PartyRelationship_BROKERS_TRADES_FOR = 21;
+  const int PartyRelationship_INVESTS_FOR = 19;
+  const int PartyRelationship_PROVIDES_MARKETPLACE_FOR = 11;
+  const int PartyRelationship_MEMBER_OF = 9;
+  const int PartyRelationship_TRADES_THROUGH = 4;
+  const char SettlLocation_EUROCLEAR[] = "EUR";
+  const char SettlLocation_CEDEL[] = "CED";
+  const char SettlLocation_PARTICIPANT_TRUST_COMPANY[] = "PTC";
+  const char SettlLocation_PHYSICAL[] = "PNY";
+  const char SettlLocation_EURO_CLEAR[] = "EUR";
+  const char SettlLocation_FEDERALBOOKENTRY[] = "FED";
+  const char SettlLocation_PARTICIPANTTRUSTCOMPANY[] = "PTC";
+  const char SettlLocation_DEPOSITORY_TRUST_COMPANY[] = "DTC";
+  const char SettlLocation_DEPOSITORYTRUSTCOMPANY[] = "DTC";
+  const char SettlLocation_LOCAL_MARKET_SETTLE_LOCATION[] = "ISO_Country_Code";
+  const char SettlLocation_LOCALMARKETSETTLELOCATION[] = "ISO_Country_Code";
+  const char SettlLocation_FEDERAL_BOOK_ENTRY[] = "FED";
+  const int DiscretionScope_LOCAL = 1;
+  const int DiscretionScope_NATIONAL_EXCLUDING_LOCAL = 4;
+  const int DiscretionScope_NATIONALEXCLUDINGLOCAL = 4;
+  const int DiscretionScope_GLOBAL = 3;
+  const int DiscretionScope_NATIONAL = 2;
+  const int DiscretionScope_LOCALEXCHANGEECNATS = 1;
+  const int OwnerType_NETWORKINGSUBACCT = 10;
+  const int OwnerType_PUBLIC_COMPANY = 2;
+  const int OwnerType_INDIVIDUAL_TRUSTEE = 4;
+  const int OwnerType_CUSTODIAN_UNDER_GIFTS_TO_MINORS_ACT = 7;
+  const int OwnerType_INDIVIDUAL_INVESTOR = 1;
+  const int OwnerType_COMPANY_TRUSTEE = 5;
+  const int OwnerType_CORPBODY = 12;
+  const int OwnerType_INDIVTRUSTEE = 4;
+  const int OwnerType_PENSIONPLAN = 6;
+  const int OwnerType_PRIVATE_COMPANY = 3;
+  const int OwnerType_NETWORKING_SUB_ACCOUNT = 10;
+  const int OwnerType_NON_PROFITORG = 11;
+  const int OwnerType_PRIVATECOMPANY = 3;
+  const int OwnerType_PENSION_PLAN = 6;
+  const int OwnerType_COMPANYTRUSTEE = 5;
+  const int OwnerType_TRUSTS = 8;
+  const int OwnerType_FIDUCIARIES = 9;
+  const int OwnerType_INDIVINVESTOR = 1;
+  const int OwnerType_NON_PROFIT_ORGANIZATION = 11;
+  const int OwnerType_CORPORATE_BODY = 12;
+  const int OwnerType_PUBLICCOMPANY = 2;
+  const int OwnerType_CUSTODIANMINORSACT = 7;
+  const int OwnerType_NOMINEE = 13;
+  const int ApplQueueResolution_END_SESSION = 3;
+  const int ApplQueueResolution_QUEUEFLUSHED = 1;
+  const int ApplQueueResolution_QUEUE_FLUSHED = 1;
+  const int ApplQueueResolution_ENDSESSION = 3;
+  const int ApplQueueResolution_OVERLAYLAST = 2;
+  const int ApplQueueResolution_OVERLAY_LAST = 2;
+  const int ApplQueueResolution_NOACTIONTAKEN = 0;
+  const int ApplQueueResolution_NO_ACTION_TAKEN = 0;
+  const int QuoteResponseLevel_SUMMARY_ACKNOWLEDGEMENT = 3;
+  const int QuoteResponseLevel_ACKEACH = 2;
+  const int QuoteResponseLevel_ACKNOWLEDGE_ONLY_NEGATIVE_OR_ERRONEOUS_QUOTES = 1;
+  const int QuoteResponseLevel_ACKNEG = 1;
+  const int QuoteResponseLevel_NOACK = 0;
+  const int QuoteResponseLevel_ACKNOWLEDGE_EACH_QUOTE_MESSAGE = 2;
+  const int QuoteResponseLevel_ACKNOWLEDGE_EACH_QUOTE_MESSAGES = 2;
+  const int QuoteResponseLevel_NO_ACKNOWLEDGEMENT = 0;
+  const char ExecAckStatus_RECEIVED_NOT_YET_PROCESSED = '0';
+  const char ExecAckStatus_DONT_KNOW = '2';
+  const char ExecAckStatus_ACCEPTED = '1';
+  const int NetGrossInd_NET = 1;
+  const int NetGrossInd_GROSS = 2;
+  const char CxlType_PARTIAL_CANCEL = 'P';
+  const char CxlType_FULL_REMAINING_QUANTITY = 'F';
+  const int DeskTypeSource_NASD_OATS = 1;
+  const int DiscretionRoundDirection_MOREPASSIVE = 2;
+  const int DiscretionRoundDirection_MOREAGGRESSIVE = 1;
+  const int DiscretionRoundDirection_MORE_AGGRESSIVE = 1;
+  const int DiscretionRoundDirection_MORE_PASSIVE = 2;
+  const int BidDescriptorType_COUNTRY = 2;
+  const int BidDescriptorType_INDEX = 3;
+  const int BidDescriptorType_SECTOR = 1;
+  const int NetworkStatusResponseType_INCREMENTAL_UPDATE = 2;
+  const int NetworkStatusResponseType_INCREMENTALUPDATE = 2;
+  const int NetworkStatusResponseType_FULL = 1;
+  const int QuoteType_INDICATIVE = 0;
+  const int QuoteType_RESTRICTEDTRADEABLE = 2;
+  const int QuoteType_RESTRICTED_TRADEABLE = 2;
+  const int QuoteType_TRADEABLE = 1;
+  const int QuoteType_COUNTER = 3;
+  const char DiscretionInst_RELVWAP = '6';
+  const char DiscretionInst_RELLOCPRIMPX = '3';
+  const char DiscretionInst_RELATED_TO_MARKET_PRICE = '1';
+  const char DiscretionInst_RELMIDPX = '4';
+  const char DiscretionInst_RELATED_TO_VWAP = '6';
+  const char DiscretionInst_RELATED_TO_MIDPOINT_PRICE = '4';
+  const char DiscretionInst_RELDISPPX = '0';
+  const char DiscretionInst_RELATED_TO_DISPLAYED_PRICE = '0';
+  const char DiscretionInst_RELATED_TO_PRIMARY_PRICE = '2';
+  const char DiscretionInst_AVERAGE_PRICE_GUARANTEE = '7';
+  const char DiscretionInst_RELMKTPX = '1';
+  const char DiscretionInst_RELPRIMPX = '2';
+  const char DiscretionInst_RELLSTPX = '5';
+  const char DiscretionInst_RELATED_TO_LAST_TRADE_PRICE = '5';
+  const char DiscretionInst_RELATED_TO_LOCAL_PRIMARY_PRICE = '3';
+  const int CrossPrioritization_BUY_SIDE_IS_PRIORITIZED = 1;
+  const int CrossPrioritization_SELL_SIDE_IS_PRIORITIZED = 2;
+  const int CrossPrioritization_BUY_SIDE_PRIORITIZED = 1;
+  const int CrossPrioritization_SELL_SIDE_PRIORITIZED = 2;
+  const int CrossPrioritization_NONE = 0;
+  const int CrossPrioritization_SELLSIDE_PRIORITIZED = 2;
+  const int CrossPrioritization_BUYSIDE_PRIORITIZED = 1;
+  const char IOIOthSvc_AUTEX = 'A';
+  const char IOIOthSvc_BRIDGE = 'B';
+  const char MDReqRejReason_UNSUPPSUB = '4';
+  const char MDReqRejReason_UNSUPPORTED_MDENTRYTYPE = '8';
+  const char MDReqRejReason_INSUFFICIENT_CREDIT = 'D';
+  const char MDReqRejReason_UNSUPPMKTDEPTH = '5';
+  const char MDReqRejReason_UNSUPPENTRY = '8';
+  const char MDReqRejReason_INSUFFICIENT_BANDWIDTH = '2';
+  const char MDReqRejReason_UNSUPPORTED_SCOPE = 'A';
+  const char MDReqRejReason_UNSUPPMDIMPLICITDELETE = 'C';
+  const char MDReqRejReason_UNSUPPORTED_TRADINGSESSIONID = '9';
+  const char MDReqRejReason_UNKNOWNSYM = '0';
+  const char MDReqRejReason_UNSUPPMDUPDATE = '6';
+  const char MDReqRejReason_UNSUPPPOSITIONEFFECTSETTLEFLAG = 'B';
+  const char MDReqRejReason_DUPLICATE_MDREQID = '1';
+  const char MDReqRejReason_DUPID = '1';
+  const char MDReqRejReason_UNSUPPORTED_AGGREGATEDBOOK = '7';
+  const char MDReqRejReason_UNSUPPORTED_MDUPDATETYPE = '6';
+  const char MDReqRejReason_UNSUPPORTED_SUBSCRIPTIONREQUESTTYPE = '4';
+  const char MDReqRejReason_UNKNOWN_SYMBOL = '0';
+  const char MDReqRejReason_INSBAND = '2';
+  const char MDReqRejReason_UNSUPPSCOPE = 'A';
+  const char MDReqRejReason_UNSUPPORTED_OPENCLOSESETTLEFLAG = 'B';
+  const char MDReqRejReason_UNSUPPORTED_MARKETDEPTH = '5';
+  const char MDReqRejReason_UNSUPPAGGBK = '7';
+  const char MDReqRejReason_INSUFFICIENT_PERMISSIONS = '3';
+  const char MDReqRejReason_INSPERM = '3';
+  const char MDReqRejReason_UNSUPPTRDSESSIONID = '9';
+  const char MDReqRejReason_UNSUPPORTED_MDIMPLICITDELETE = 'C';
+  const int ApplReqType_REQUEST_FOR_THE_LAST_APPLLASTSEQNUM_PUBLISHED_FOR_THE_SPECIFIED_APPLICATIONS = 2;
+  const int ApplReqType_UNSUBSCRIBE_TO_THE_SPECIFIED_APPLICATIONS = 4;
+  const int ApplReqType_CANCEL_RETRANSMISSION_AND_UNSUBSCRIBE_TO_THE_SPECIFIED_APPLICATIONS = 6;
+  const int ApplReqType_SUBSCRIPTION_TO_THE_SPECIFIED_APPLICATIONS = 1;
+  const int ApplReqType_RETRANSMISSION_OF_APPLICATION_MESSAGES_FOR_THE_SPECIFIED_APPLICATIONS = 0;
+  const int ApplReqType_REQUEST_VALID_SET_OF_APPLICATIONS = 3;
+  const int ApplReqType_CANCEL_RETRANSMISSION = 5;
+  const char AggressorIndicator_NO = 'N';
+  const char AggressorIndicator_YES = 'Y';
+  const int BusinessRejectReason_APPNA = 4;
+  const int BusinessRejectReason_UNKNOWN_SECURITY = 2;
+  const int BusinessRejectReason_UNKNMSGTYPE = 3;
+  const int BusinessRejectReason_CONDFLDMISS = 5;
+  const int BusinessRejectReason_UNKNID = 1;
+  const int BusinessRejectReason_APPLICATION_NOT_AVAILABLE = 4;
+  const int BusinessRejectReason_INVALID_PRICE_INCREMENT = 18;
+  const int BusinessRejectReason_DELIVERTO_FIRM_NOT_AVAILABLE_AT_THIS_TIME = 7;
+  const int BusinessRejectReason_CONDITIONALLY_REQUIRED_FIELD_MISSING = 5;
+  const int BusinessRejectReason_UNKNOWN_ID = 1;
+  const int BusinessRejectReason_NOTAUTH = 6;
+  const int BusinessRejectReason_NODELIVTOFIRM = 7;
+  const int BusinessRejectReason_OTHER = 0;
+  const int BusinessRejectReason_UNSUPPORTED_MESSAGE_TYPE = 3;
+  const int BusinessRejectReason_UNKNOWN_MESSAGE_TYPE = 3;
+  const int BusinessRejectReason_NOT_AUTHORIZED = 6;
+  const int BusinessRejectReason_UNKNSEC = 2;
+  const int BusinessRejectReason_UNKOWN_ID = 1;
+  const int BookingType_REGULAR_BOOKING = 0;
+  const int BookingType_REGULARBOOKING = 0;
+  const int BookingType_CFD = 1;
+  const int BookingType_CFDCONTRACTFORDIFFERENCE = 1;
+  const int BookingType_TOTALRETURNSWAP = 2;
+  const int BookingType_TOTAL_RETURN_SWAP = 2;
+  #endif //FIX_VALUES_H

+ 1652 - 0
api/fix/src/CCall/FixValueNumber.h

@@ -0,0 +1,1652 @@
+#ifndef __FIX_FIELD_NUMBERS_H__
+#define __FIX_FIELD_NUMBERS_H__
+
+    const int RelatedPartyID = 1563;
+    const int MaxPriceLevels = 1090;
+    const int DerivativeEncodedIssuer = 1278;
+    const int NoCompIDs = 936;
+    const int SettlInstRefID = 214;
+    const int NestedPartyID = 524;
+    const int DetachmentPoint = 1458;
+    const int LateIndicator = 978;
+    const int RiskEncodedSecurityDesc = 1621;
+    const int RelationshipRiskSecuritySubType = 1601;
+    const int SecurityListID = 1465;
+    const int DerivativeFlowScheduleType = 1442;
+    const int EncodedSymbolLen = 1359;
+    const int FlexibleIndicator = 1244;
+    const int NoExecInstRules = 1232;
+    const int SideTrdRegTimestamp = 1012;
+    const int DeliveryForm = 668;
+    const int ExecRestatementReason = 378;
+    const int MidYield = 633;
+    const int ContractMultiplier = 231;
+    const int PartyAltIDSource = 1518;
+    const int CcyAmt = 1157;
+    const int AllocIntermedReqType = 808;
+    const int NoNested2PartyIDs = 756;
+    const int UnderlyingIssuer = 306;
+    const int LegOrderQty = 685;
+    const int MinTradeVol = 562;
+    const int SettlCurrAmt = 119;
+    const int DerivativeInstrumentPartyRole = 1295;
+    const int YieldRedemptionPriceType = 698;
+    const int NewsRefID = 1476;
+    const int SecurityListTypeSource = 1471;
+    const int ApplReqID = 1346;
+    const int DerivativeFuturesValuationMethod = 1319;
+    const int NoLegSecurityAltID = 604;
+    const int DerivativeSecurityType = 1249;
+    const int CollInquiryQualifier = 896;
+    const int RawData = 96;
+    const int CashSettlAgentContactPhone = 187;
+    const int CreditRating = 255;
+    const int ContingencyType = 1385;
+    const int StrikeCurrency = 947;
+    const int TradeVolume = 1020;
+    const int SideTrdRegTimestampSrc = 1014;
+    const int DeliveryDate = 743;
+    const int EmailType = 94;
+    const int EncodedListExecInst = 353;
+    const int ContraTradeTime = 438;
+    const int MaturityMonthYearIncrement = 1229;
+    const int RootPartyIDSource = 1118;
+    const int UnderlyingCouponPaymentDate = 241;
+    const int BidYield = 632;
+    const int IOIQltyInd = 25;
+    const int Issuer = 106;
+    const int CardNumber = 489;
+    const int NoRelatedPartyIDs = 1562;
+    const int NoLegStipulations = 683;
+    const int LegSecurityExchange = 616;
+    const int CashOrderQty = 152;
+    const int AccruedInterestAmt = 159;
+    const int MDEntrySeller = 289;
+    const int LegPrice = 566;
+    const int RelationshipRiskMaturityTime = 1603;
+    const int DeliverToCompID = 128;
+    const int TargetLocationID = 143;
+    const int OfferForwardPoints2 = 643;
+    const int RatioQty = 319;
+    const int MultiLegRptTypeReq = 563;
+    const int AllocAccount = 79;
+    const int TotalVolumeTraded = 387;
+    const int LinesOfText = 33;
+    const int AccountType = 581;
+    const int MDEntryPositionNo = 290;
+    const int HaltReasonInt = 327;
+    const int FutSettDate = 64;
+    const int SecurityDesc = 107;
+    const int MinQty = 110;
+    const int SettlCurrency = 120;
+    const int PegOffsetValue = 211;
+    const int DerivativeSecurityAltIDSource = 1220;
+    const int NoSettlPartySubIDs = 801;
+    const int AllocReportID = 755;
+    const int LegCFICode = 608;
+    const int LegFutSettDate = 588;
+    const int LegBenchmarkCurveName = 677;
+    const int ClearingFeeIndicator = 635;
+    const int BrokerOfCredit = 92;
+    const int SecurityListRefID = 1466;
+    const int UnderlyingLegMaturityTime = 1405;
+    const int NestedPartySubIDType = 805;
+    const int BidType = 394;
+    const int MDEntryRefID = 280;
+    const int UnderlyingUnitOfMeasureQty = 1423;
+    const int UnderlyingLegMaturityDate = 1345;
+    const int StartTickPriceRange = 1206;
+    const int LegContractSettlMonth = 955;
+    const int UnderlyingSecurityDesc = 307;
+    const int CashDistribPayRef = 501;
+    const int QuotePriceType = 692;
+    const int EncodedAllocText = 361;
+    const int UnderlyingMaturityMonthYear = 313;
+    const int RiskWarningLevelPercent = 1560;
+    const int UnderlyingOriginalNotionalPercentageOutstanding = 1456;
+    const int MultilegPriceMethod = 1378;
+    const int TotNoFills = 1361;
+    const int DerivativeSettleOnOpenFlag = 1254;
+    const int UnderlyingRepurchaseTerm = 244;
+    const int RiskWarningLevelName = 1561;
+    const int DerivativeCountryOfIssue = 1258;
+    const int ListMethod = 1198;
+    const int UnderlyingCPProgram = 877;
+    const int PriceDelta = 811;
+    const int RefSeqNum = 45;
+    const int AutoAcceptIndicator = 754;
+    const int MDImplicitDelete = 547;
+    const int NoStipulations = 232;
+    const int ClearingBusinessDate = 715;
+    const int NoRelationshipRiskLimits = 1582;
+    const int LocationID = 283;
+    const int Currency = 15;
+    const int RoutingType = 216;
+    const int UnderlyingStrikePrice = 316;
+    const int BidTradeType = 418;
+    const int RelationshipRiskInstrumentOperator = 1588;
+    const int UnderlyingAttachmentPoint = 1459;
+    const int TotNoRejQuotes = 1170;
+    const int OrdStatusReqID = 790;
+    const int SenderCompID = 49;
+    const int OrdRejReason = 103;
+    const int MaturityMonthYearIncrementUnits = 1302;
+    const int DisplayWhen = 1083;
+    const int ApplQueueAction = 815;
+    const int RegistTransType = 514;
+    const int PaymentRemitterID = 505;
+    const int PriceType = 423;
+    const int MarketReqID = 1393;
+    const int NoNestedInstrAttrib = 1312;
+    const int SecuritySubType = 762;
+    const int ClOrdID = 11;
+    const int MaturityDay = 205;
+    const int UnderlyingSeniority = 1454;
+    const int MarketSegmentDesc = 1396;
+    const int NoMarketSegments = 1310;
+    const int SettlObligMode = 1159;
+    const int SecurityUpdateAction = 980;
+    const int NetworkRequestType = 935;
+    const int LiquidityPctLow = 402;
+    const int PartyRole = 452;
+    const int LegRatioQty = 623;
+    const int SettlCurrFxRate = 155;
+    const int RelatedPartyRole = 1565;
+    const int LegContractMultiplierUnit = 1436;
+    const int SecureData = 91;
+    const int SenderLocationID = 142;
+    const int FirstPx = 1025;
+    const int EncodedLegIssuer = 619;
+    const int AssignmentMethod = 744;
+    const int RoutingID = 217;
+    const int RelationshipRiskSecurityAltID = 1594;
+    const int RelatedPartyAltID = 1570;
+    const int StrategyParameterType = 959;
+    const int EncryptMethod = 98;
+    const int UnderlyingStateOrProvinceOfIssue = 593;
+    const int ApplNewSeqNum = 1399;
+    const int DerivativeEncodedSecurityDescLen = 1280;
+    const int TradingCurrency = 1245;
+    const int SecondaryHighLimitPrice = 1230;
+    const int OrderAvgPx = 799;
+    const int PosAmtType = 707;
+    const int ResetSeqNumFlag = 141;
+    const int NoHops = 627;
+    const int CollInquiryResult = 946;
+    const int StartDate = 916;
+    const int CollAsgnRespType = 905;
+    const int OrderBookingQty = 800;
+    const int NoQuoteQualifiers = 735;
+    const int UnsolicitedIndicator = 325;
+    const int RefCstmApplVerID = 1131;
+    const int SideExecID = 1427;
+    const int RejectText = 1328;
+    const int ExchangeSpecialInstructions = 1139;
+    const int TradeID = 1003;
+    const int RndPx = 991;
+    const int QuoteEntryRejectReason = 368;
+    const int OrderCapacity = 528;
+    const int SideLastQty = 1009;
+    const int DerivativeUnitOfMeasure = 1269;
+    const int NoLegAllocs = 670;
+    const int QuoteAckStatus = 297;
+    const int SecondaryFirmTradeID = 1042;
+    const int UserRequestType = 924;
+    const int SecondaryTrdType = 855;
+    const int TradeReportTransType = 487;
+    const int AdvSide = 4;
+    const int RelatedContextPartySubID = 1580;
+    const int DerivativeSecuritySubType = 1250;
+    const int TriggerTradingSessionSubID = 1114;
+    const int TradeLinkID = 820;
+    const int LegBenchmarkPrice = 679;
+    const int HopRefID = 630;
+    const int Designation = 494;
+    const int TradeRequestID = 568;
+    const int RelationshipRiskLimitType = 1583;
+    const int RiskSecurityIDSource = 1539;
+    const int LegFlowScheduleType = 1440;
+    const int LegPriceUnitOfMeasure = 1421;
+    const int Nested4PartyIDSource = 1416;
+    const int CoveredOrUncovered = 203;
+    const int AcctIDSource = 660;
+    const int MktOfferPx = 646;
+    const int NoCapacities = 862;
+    const int TradeRequestType = 569;
+    const int NoNestedPartyIDs = 539;
+    const int TradSesStatus = 340;
+    const int UnderlyingNotionalPercentageOutstanding = 1455;
+    const int ApplLastSeqNum = 1350;
+    const int PegPriceType = 1094;
+    const int StrategyParameterName = 958;
+    const int StreamAsgnRejReason = 1502;
+    const int MatchIncrement = 1089;
+    const int Nested3PartyRole = 951;
+    const int UnderlyingPx = 810;
+    const int PriceImprovement = 639;
+    const int ValuationMethod = 1197;
+    const int DerivativeSecurityID = 1216;
+    const int NoExpiration = 981;
+    const int TargetCompID = 56;
+    const int MDEntryBuyer = 288;
+    const int RelationshipRiskCouponRate = 1608;
+    const int NoDerivativeInstrumentPartySubIDs = 1296;
+    const int NoMaturityRules = 1236;
+    const int QuoteMsgID = 1166;
+    const int TriggerType = 1100;
+    const int PriceProtectionScope = 1092;
+    const int TotNumAssignmentReports = 832;
+    const int ContraLegRefID = 655;
+    const int TradeReportRejectReason = 751;
+    const int TradeReportRefID = 572;
+    const int SecurityListType = 1470;
+    const int DerivativeSecurityIDSource = 1217;
+    const int AssignmentUnit = 745;
+    const int TradeReportID = 571;
+    const int NoRpts = 82;
+    const int LegBenchmarkPriceType = 680;
+    const int EncodedSubjectLen = 356;
+    const int SecurityXML = 1185;
+    const int LegReportID = 990;
+    const int Nested3PartySubIDType = 954;
+    const int BenchmarkSecurityIDSource = 761;
+    const int QuoteRejectReason = 300;
+    const int HeartBtInt = 108;
+    const int BidForwardPoints = 189;
+    const int PossResend = 97;
+    const int Symbol = 55;
+    const int EncodedUnderlyingSecurityDesc = 365;
+    const int RelatedPartyAltSubIDType = 1574;
+    const int MarketReportID = 1394;
+    const int DiscretionPrice = 845;
+    const int ContAmtValue = 520;
+    const int QuantityType = 465;
+    const int ComplexEventPriceBoundaryMethod = 1487;
+    const int ImpliedMarketIndicator = 1144;
+    const int AllocClearingFeeIndicator = 1136;
+    const int QuoteRequestType = 303;
+    const int SecurityRequestResult = 560;
+    const int OrderRestrictions = 529;
+    const int NoSideTrdRegTS = 1016;
+    const int Text = 58;
+    const int EncodedTextLen = 354;
+    const int ListExecInstType = 433;
+    const int SecondaryOrderID = 198;
+    const int ExecBroker = 76;
+    const int RelationshipRiskEncodedSecurityDescLen = 1618;
+    const int SecurityXMLLen = 1184;
+    const int ApplSeqNum = 1181;
+    const int MaxTradeVol = 1140;
+    const int OfferSwapPoints = 1066;
+    const int SettlPartySubIDType = 786;
+    const int DistribPaymentMethod = 477;
+    const int TotalAffectedOrders = 533;
+    const int StrikeIncrement = 1204;
+    const int OrderHandlingInstSource = 1032;
+    const int CopyMsgIndicator = 797;
+    const int NoDlvyInst = 85;
+    const int QuoteEntryID = 299;
+    const int AffirmStatus = 940;
+    const int MailingInst = 482;
+    const int OfferSize = 135;
+    const int LegSecurityType = 609;
+    const int RiskLimitPlatform = 1533;
+    const int OrigCustOrderCapacity = 1432;
+    const int AllocMethod = 1002;
+    const int QuantityDate = 976;
+    const int TargetStrategyPerformance = 850;
+    const int CardExpDate = 490;
+    const int ConfirmID = 664;
+    const int StandInstDbName = 170;
+    const int DayOrderQty = 424;
+    const int HighLimitPrice = 1149;
+    const int FirmTradeID = 1041;
+    const int SecondaryIndividualAllocID = 989;
+    const int AgreementDesc = 913;
+    const int MassCancelResponse = 531;
+    const int LegSettlCurrency = 675;
+    const int Commission = 12;
+    const int StreamAsgnReqType = 1498;
+    const int BidSwapPoints = 1065;
+    const int NoSettlPartyIDs = 781;
+    const int SymbolSfx = 65;
+    const int BusinessRejectRefID = 379;
+    const int Price2 = 640;
+    const int FillLiquidityInd = 1443;
+    const int MassActionReportID = 1369;
+    const int DerivativeIssuer = 1275;
+    const int ExDestinationIDSource = 1133;
+    const int CollRespID = 904;
+    const int SecurityListRequestType = 559;
+    const int EncodedLegSecurityDesc = 622;
+    const int RelatedContextPartyRole = 1578;
+    const int UnderlyingSettlementStatus = 988;
+    const int SecurityAltID = 455;
+    const int RegistRefID = 508;
+    const int RelationshipRiskFlexibleIndicator = 1607;
+    const int DerivativePriceQuoteMethod = 1318;
+    const int RelationshipRiskProductComplex = 1597;
+    const int OrderDelay = 1428;
+    const int NoNotAffectedOrders = 1370;
+    const int Nested3PartyID = 949;
+    const int CollAsgnReason = 895;
+    const int TotalVolumeTradedTime = 450;
+    const int SecurityExchange = 207;
+    const int SettlPriceType = 731;
+    const int UnitOfMeasureQty = 1147;
+    const int UserRequestID = 923;
+    const int LastParPx = 669;
+    const int EndMaturityMonthYear = 1226;
+    const int DealingCapacity = 1048;
+    const int PrevClosePx = 140;
+    const int TradeInputDevice = 579;
+    const int DayCumQty = 425;
+    const int SecuritySettlAgentAcctNum = 178;
+    const int LegCurrency = 556;
+    const int EncryptedNewPassword = 1404;
+    const int DerivativeMinPriceIncrementAmount = 1268;
+    const int NoNested3PartySubIDs = 952;
+    const int RefSubID = 931;
+    const int SettlPartyRole = 784;
+    const int CashDistribAgentName = 498;
+    const int LegContractMultiplier = 614;
+    const int ProgPeriodInterval = 415;
+    const int LegSettlType = 587;
+    const int OnBehalfOfLocationID = 144;
+    const int OnBehalfOfSubID = 116;
+    const int RelationshipRiskLimitPlatform = 1586;
+    const int RelatedPartySubID = 1567;
+    const int ComplexEventEndTime = 1496;
+    const int RateSourceType = 1447;
+    const int DerivativeStateOrProvinceOfIssue = 1259;
+    const int TradeLegRefID = 824;
+    const int RelSymTransactTime = 1504;
+    const int NoComplexEventTimes = 1494;
+    const int LegCalculatedCcyLastQty = 1074;
+    const int Nested3PartyIDSource = 950;
+    const int DatedDate = 873;
+    const int SettlInstID = 162;
+    const int OpenInterest = 746;
+    const int UnderlyingContractMultiplier = 436;
+    const int TotQuoteEntries = 304;
+    const int PartyAltSubID = 1520;
+    const int TotNoCxldQuotes = 1168;
+    const int AggregatedBook = 266;
+    const int PaymentRef = 476;
+    const int PaymentDate = 504;
+    const int OrderPercent = 516;
+    const int PosQtyStatus = 706;
+    const int RiskRestructuringType = 1551;
+    const int NoNested4PartySubIDs = 1413;
+    const int PrivateQuote = 1171;
+    const int SecondaryTradeID = 1040;
+    const int SecuritySettlAgentContactPhone = 181;
+    const int EncodedMktSegmDescLen = 1397;
+    const int SideCurrency = 1154;
+    const int LegQty = 687;
+    const int MsgType = 35;
+    const int NoTradingSessions = 386;
+    const int IOIid = 23;
+    const int MultiLegReportingType = 442;
+    const int IDSource = 22;
+    const int LegStipulationType = 688;
+    const int DerivativeContractMultiplierUnit = 1438;
+    const int MarketSegmentID = 1300;
+    const int OrdStatus = 39;
+    const int MaturityDate = 541;
+    const int ApplTotalMessageCount = 1349;
+    const int InstrumentPartySubID = 1053;
+    const int CustomerOrFirm = 204;
+    const int AdjustmentType = 718;
+    const int NoPartyAltSubIDs = 1519;
+    const int UnderlyingInstrumentPartyID = 1059;
+    const int AsOfIndicator = 1015;
+    const int QuoteStatusReqID = 649;
+    const int LegPositionEffect = 564;
+    const int MDEntryPx = 270;
+    const int MassActionScope = 1374;
+    const int ReportedPxDiff = 1134;
+    const int UnderlyingSettlementDate = 987;
+    const int NoNestedPartySubIDs = 804;
+    const int AllocReportRefID = 795;
+    const int Concession = 238;
+    const int EncodedSecurityDesc = 351;
+    const int ExecRefID = 19;
+    const int VenueType = 1430;
+    const int MassActionType = 1373;
+    const int PosMaintResult = 723;
+    const int IOIShares = 27;
+    const int BenchmarkSecurityID = 699;
+    const int LegLastQty = 1418;
+    const int AllocSettlCurrency = 736;
+    const int LegCountryOfIssue = 596;
+    const int DerivativeSecurityXML = 1283;
+    const int StrikeRuleID = 1223;
+    const int RefCompID = 930;
+    const int SettlCurrOfferFxRate = 657;
+    const int OfferYield = 634;
+    const int RelatedContextPartyID = 1576;
+    const int TargetPartyIDSource = 1463;
+    const int EncryptedNewPasswordLen = 1403;
+    const int NoPositions = 702;
+    const int TotalAccruedInterestAmt = 540;
+    const int UnderlyingOptAttribute = 317;
+    const int DerivativeInstrAttribValue = 1314;
+    const int InstrumentPartyIDSource = 1050;
+    const int PegOffsetType = 836;
+    const int MassCancelRejectReason = 532;
+    const int ResponseTransportType = 725;
+    const int LegSecurityIDSource = 603;
+    const int BasisFeaturePrice = 260;
+    const int CouponPaymentDate = 224;
+    const int TradSesStatusRejReason = 567;
+    const int UnderlyingDetachmentPoint = 1460;
+    const int MaturityRuleID = 1222;
+    const int UnderlyingRepoCollateralSecurityType = 243;
+    const int NoTimeInForceRules = 1239;
+    const int NoRootPartySubIDs = 1120;
+    const int DisplayMinIncr = 1087;
+    const int TrdRegTimestampType = 770;
+    const int LegProduct = 607;
+    const int ApplVerID = 1128;
+    const int HandlInst = 21;
+    const int ListUpdateAction = 1324;
+    const int NestedInstrAttribValue = 1211;
+    const int TradingSessionSubID = 625;
+    const int RFQReqID = 644;
+    const int RelationshipRiskSecurityExchange = 1609;
+    const int UnderlyingLegSymbolSfx = 1331;
+    const int LiquidityNumSecurities = 441;
+    const int NoMsgTypes = 384;
+    const int TradSesStartTime = 341;
+    const int MDEntryType = 269;
+    const int AgreementCurrency = 918;
+    const int PegMoveType = 835;
+    const int AsgnReqID = 831;
+    const int PegDifference = 211;
+    const int Spread = 218;
+    const int EncodedAllocTextLen = 360;
+    const int OutsideIndexPct = 407;
+    const int DerivFlexProductEligibilityIndicator = 1243;
+    const int AvgPxIndicator = 819;
+    const int NoIOIQualifiers = 199;
+    const int CancellationRights = 480;
+    const int ListSeqNo = 67;
+    const int CardIssNum = 491;
+    const int RiskCFICode = 1546;
+    const int EncodedMktSegmDesc = 1398;
+    const int DerivativeEventType = 1287;
+    const int DerivativeMaturityMonthYear = 1251;
+    const int SideTradeReportID = 1005;
+    const int NoQuoteSets = 296;
+    const int RelationshipRiskSecurityDesc = 1610;
+    const int Nested4PartySubIDType = 1411;
+    const int FillPx = 1364;
+    const int StrikeExerciseStyle = 1304;
+    const int DeskID = 284;
+    const int CrossPercent = 413;
+    const int MaturityMonthYear = 200;
+    const int ComplexEventPrice = 1486;
+    const int NoNewsRefIDs = 1475;
+    const int UnderlyingCapValue = 1038;
+    const int CPRegType = 876;
+    const int CashDistribAgentCode = 499;
+    const int ExecPriceType = 484;
+    const int LegAllocID = 1366;
+    const int MDEntryTime = 273;
+    const int TotalNumSecurities = 393;
+    const int AllocSettlInstType = 780;
+    const int TargetPartyID = 1462;
+    const int DerivativeStrikeCurrency = 1262;
+    const int StatsType = 1176;
+    const int ApplExtID = 1156;
+    const int SettlementCycleNo = 1153;
+    const int UnderlyingStrikeCurrency = 941;
+    const int TradSesMode = 339;
+    const int SettlInstSource = 165;
+    const int PartyAltSubIDType = 1521;
+    const int UnderlyingLegSecurityDesc = 1392;
+    const int NoDerivativeInstrumentParties = 1292;
+    const int DerivativeEventTime = 1289;
+    const int TickIncrement = 1208;
+    const int UndlyInstrumentPartyID = 1059;
+    const int NoUndlyInstrumentParties = 1058;
+    const int ExpType = 982;
+    const int SecondaryClOrdID = 526;
+    const int SettlInstTransType = 163;
+    const int SideComplianceID = 659;
+    const int TradeRequestResult = 749;
+    const int OrigPosReqRefID = 713;
+    const int OrigCrossID = 551;
+    const int TradeInputSource = 578;
+    const int OrderQty2 = 192;
+    const int TestMessageIndicator = 464;
+    const int ContextPartySubID = 1527;
+    const int DerivativeEventDate = 1288;
+    const int SideGrossTradeAmt = 1072;
+    const int PeggedPrice = 839;
+    const int ExpirationCycle = 827;
+    const int AllocCancReplaceReason = 796;
+    const int CxlRejReason = 102;
+    const int BeginString = 8;
+    const int DeliverToSubID = 129;
+    const int NoRelatedPartyAltIDs = 1569;
+    const int RiskProductComplex = 1544;
+    const int LegPriceUnitOfMeasureQty = 1422;
+    const int NoCollInquiryQualifier = 938;
+    const int OfferPx = 133;
+    const int TotalVolumeTradedDate = 449;
+    const int NoContAmts = 518;
+    const int MinOfferSize = 648;
+    const int AvgParPx = 860;
+    const int LegFactor = 253;
+    const int RespondentType = 1172;
+    const int DisplayLowQty = 1085;
+    const int DKReason = 127;
+    const int BenchmarkPrice = 662;
+    const int ListID = 66;
+    const int LegSecurityAltID = 605;
+    const int PositionEffect = 77;
+    const int RelatedPartySubIDType = 1568;
+    const int TriggerAction = 1101;
+    const int RefOrderID = 1080;
+    const int ClearingInstruction = 577;
+    const int SettlInstCode = 175;
+    const int NumDaysInterest = 157;
+    const int OpenCloseSettlFlag = 286;
+    const int NoComplexEventDates = 1491;
+    const int DerivativeEncodedIssuerLen = 1277;
+    const int StrikeMultiplier = 967;
+    const int DiscretionMoveType = 841;
+    const int ListNoOrds = 68;
+    const int RelatedPartyIDSource = 1564;
+    const int PegSymbol = 1098;
+    const int DayAvgPx = 426;
+    const int Headline = 148;
+    const int NestedPartySubID = 545;
+    const int CardIssNo = 491;
+    const int OptAttribute = 206;
+    const int LastForwardPoints2 = 641;
+    const int MDUpdateType = 265;
+    const int TickDirection = 274;
+    const int LegRedemptionDate = 254;
+    const int StrikePrice = 202;
+    const int EncodedIssuer = 349;
+    const int YieldType = 235;
+    const int TradingReferencePrice = 1150;
+    const int MDEntrySpotRate = 1026;
+    const int ParticipationRate = 849;
+    const int PegScope = 840;
+    const int InterestAtMaturity = 738;
+    const int LegIndividualAllocID = 672;
+    const int AllowableOneSidednessValue = 766;
+    const int CashSettlAgentName = 182;
+    const int ContraTradeQty = 437;
+    const int LegMaturityTime = 1212;
+    const int SettlDeliveryType = 172;
+    const int SecondaryPriceLimitType = 1305;
+    const int MidPx = 631;
+    const int AvgPx = 6;
+    const int DiscretionLimitType = 843;
+    const int StrikeTime = 443;
+    const int SettlSessSubID = 717;
+    const int MailingDtls = 474;
+    const int BidID = 390;
+    const int PartyDetailsRequestResult = 1511;
+    const int ExerciseMethod = 747;
+    const int CommCurrency = 479;
+    const int NoSettlOblig = 1165;
+    const int MaxPriceVariation = 1143;
+    const int WorkingIndicator = 636;
+    const int CashSettlAgentAcctName = 185;
+    const int SellVolume = 331;
+    const int SideMultiLegReportingType = 752;
+    const int DerivativeEventText = 1291;
+    const int PegSecurityDesc = 1099;
+    const int AllocCustomerCapacity = 993;
+    const int ConfirmRejReason = 774;
+    const int BidRequestTransType = 374;
+    const int CashDistribAgentAcctNumber = 500;
+    const int LegExecInst = 1384;
+    const int CapPrice = 1199;
+    const int LegRepurchaseTerm = 251;
+    const int RegistAcctType = 493;
+    const int MassActionRejectReason = 1376;
+    const int DerivativePutOrCall = 1323;
+    const int StartMaturityMonthYear = 1241;
+    const int CollApplType = 1043;
+    const int NoUnderlyingAmounts = 984;
+    const int ConfirmType = 773;
+    const int LegMaturityMonthYear = 610;
+    const int RelatdSym = 46;
+    const int RiskLimitAmount = 1531;
+    const int UnderlyingLegSecuritySubType = 1338;
+    const int NoUnderlyingSecurityAltID = 457;
+    const int RelationshipRiskCFICode = 1599;
+    const int NoRelatedPartySubIDs = 1566;
+    const int RiskSymbolSfx = 1537;
+    const int MDQuoteType = 1070;
+    const int QtyType = 854;
+    const int QuoteRespType = 694;
+    const int IOINaturalFlag = 130;
+    const int BenchmarkCurvePoint = 222;
+    const int TradSesUpdateAction = 1327;
+    const int UnderlyingCashAmount = 973;
+    const int CollAsgnID = 902;
+    const int ExchangeRule = 825;
+    const int EncodedHeadline = 359;
+    const int RegistID = 513;
+    const int CrossID = 548;
+    const int NoExecs = 124;
+    const int DerivativeSecurityGroup = 1247;
+    const int SecondaryDisplayQty = 1082;
+    const int RefMsgType = 372;
+    const int StandInstDbID = 171;
+    const int EncodedLegSecurityDescLen = 621;
+    const int DerivativeEventPx = 1290;
+    const int SettlObligSource = 1164;
+    const int TrdSubType = 829;
+    const int EncodedUnderlyingIssuerLen = 362;
+    const int ExecTransType = 20;
+    const int BeginSeqNo = 7;
+    const int DayBookingInst = 589;
+    const int FlowScheduleType = 1439;
+    const int MDOriginType = 1024;
+    const int CollInquiryStatus = 945;
+    const int NoInstrAttrib = 870;
+    const int RegistEmail = 511;
+    const int StreamAsgnReqID = 1497;
+    const int CPProgram = 875;
+    const int ConfirmReqID = 859;
+    const int AltMDSourceID = 817;
+    const int NoOrders = 73;
+    const int CashDistribAgentAcctName = 502;
+    const int NoContextPartySubIDs = 1526;
+    const int UndlyInstrumentPartyIDSource = 1060;
+    const int UnderlyingSettlMethod = 1039;
+    const int NoMDEntryTypes = 267;
+    const int MDEntryForwardPoints = 1027;
+    const int PosReqType = 724;
+    const int MassStatusReqType = 585;
+    const int TradeOriginationDate = 229;
+    const int SettlPrice = 730;
+    const int SecuritySettlAgentAcctName = 179;
+    const int RiskInstrumentMultiplier = 1558;
+    const int NoDerivativeEvents = 1286;
+    const int UnderlyingEndPrice = 883;
+    const int SubscriptionRequestType = 263;
+    const int TotalNumSecurityTypes = 557;
+    const int NewsCategory = 1473;
+    const int UnderlyingLegPutOrCall = 1343;
+    const int URLLink = 149;
+    const int NoInstrumentPartySubIDs = 1052;
+    const int UnderlyingCurrentValue = 885;
+    const int InterestAccrualDate = 874;
+    const int FutSettDate2 = 193;
+    const int NoClearingInstructions = 576;
+    const int UnderlyingCurrency = 318;
+    const int LegInterestAccrualDate = 956;
+    const int NewPassword = 925;
+    const int RedemptionDate = 240;
+    const int RefApplLastSeqNum = 1357;
+    const int StartCash = 921;
+    const int MaxMessageSize = 383;
+    const int OfferForwardPoints = 191;
+    const int IOIQty = 27;
+    const int LastQty = 32;
+    const int ApplResponseError = 1354;
+    const int UnderlyingLegSecurityType = 1337;
+    const int DerivativePriceUnitOfMeasure = 1315;
+    const int TriggerPriceDirection = 1109;
+    const int PositionCurrency = 1055;
+    const int MessageEventSource = 1011;
+    const int CollInquiryID = 909;
+    const int UnderlyingStartValue = 884;
+    const int LastLiquidityInd = 851;
+    const int SecurityID = 48;
+    const int NoMDEntries = 268;
+    const int NoPartyListResponseTypes = 1506;
+    const int StrikePriceDeterminationMethod = 1478;
+    const int EndDate = 917;
+    const int CashOutstanding = 901;
+    const int MDReqID = 262;
+    const int IOIRefID = 26;
+    const int NoContextPartyIDs = 1522;
+    const int TargetStrategy = 847;
+    const int ConfirmRefID = 772;
+    const int SellerDays = 287;
+    const int DueToRelated = 329;
+    const int SecondaryTradingReferencePrice = 1240;
+    const int NoMDFeedTypes = 1141;
+    const int UnderlyingInstrumentPartySubIDType = 1064;
+    const int TradSesCloseTime = 344;
+    const int ContractSettlMonth = 667;
+    const int DerivativeStrikePrice = 1261;
+    const int TriggerSecurityDesc = 1106;
+    const int UnderlyingCashType = 974;
+    const int NoMiscFees = 136;
+    const int CustOrderCapacity = 582;
+    const int RiskSecurityExchange = 1616;
+    const int LegAllocSettlCurrency = 1367;
+    const int UnderlyingAdjustedQuantity = 1044;
+    const int OwnershipType = 517;
+    const int MaxShow = 210;
+    const int LegSecurityID = 602;
+    const int EncodedSymbol = 1360;
+    const int DerivativeSecurityDesc = 1279;
+    const int UnitOfMeasure = 996;
+    const int SecDefStatus = 653;
+    const int Quantity = 53;
+    const int NewsID = 1472;
+    const int UndlyInstrumentPartySubIDType = 1064;
+    const int SettleOnOpenFlag = 966;
+    const int LastUpdateTime = 779;
+    const int RepurchaseRate = 227;
+    const int RepurchaseTerm = 226;
+    const int NestedPartyRole = 538;
+    const int SecondaryExecID = 527;
+    const int Pool = 691;
+    const int NoTickRules = 1205;
+    const int Volatility = 1188;
+    const int PctAtRisk = 869;
+    const int UnderlyingSecurityExchange = 308;
+    const int LegStrikePrice = 612;
+    const int SettlmntTyp = 63;
+    const int TradePublishIndicator = 1390;
+    const int ApplResponseType = 1348;
+    const int MDSubBookType = 1173;
+    const int Username = 553;
+    const int StandInstDbType = 169;
+    const int RelatedContextPartyIDSource = 1577;
+    const int QuoteEntryStatus = 1167;
+    const int TriggerPriceType = 1107;
+    const int SideTrdSubTyp = 1008;
+    const int UnderlyingTradingSessionSubID = 823;
+    const int SettlInstReqRejCode = 792;
+    const int MktBidPx = 645;
+    const int UnderlyingLegSymbol = 1330;
+    const int StrikeValue = 968;
+    const int Urgency = 61;
+    const int AllocID = 70;
+    const int NoPartyList = 1513;
+    const int UnderlyingDeliveryAmount = 1037;
+    const int SideQty = 1009;
+    const int CollAsgnTransType = 903;
+    const int ThresholdAmount = 834;
+    const int DefBidSize = 293;
+    const int LegStateOrProvinceOfIssue = 597;
+    const int PaymentMethod = 492;
+    const int RiskCouponRate = 1555;
+    const int UnderlyingLegOptAttribute = 1391;
+    const int LegVolatility = 1379;
+    const int DerivativeInstrAttribType = 1313;
+    const int DerivativeUnitOfMeasureQty = 1270;
+    const int NoStatsIndicators = 1175;
+    const int TriggerPriceTypeScope = 1108;
+    const int LastNetworkResponseID = 934;
+    const int UnderlyingSettlPriceType = 733;
+    const int ApplReportID = 1356;
+    const int PegLimitType = 837;
+    const int ExecID = 17;
+    const int Side = 54;
+    const int UnderlyingLastPx = 651;
+    const int MarketDepth = 264;
+    const int DiscretionOffset = 389;
+    const int ContAmtType = 519;
+    const int MiscFeeCurr = 138;
+    const int NoRiskLimits = 1529;
+    const int AttachmentPoint = 1457;
+    const int OrderCategory = 1115;
+    const int AdvTransType = 5;
+    const int WtAverageLiquidity = 410;
+    const int QuoteSetValidUntilTime = 367;
+    const int NoNested4PartyIDs = 1414;
+    const int LegPutOrCall = 1358;
+    const int UserStatusText = 927;
+    const int Nested2PartySubID = 760;
+    const int EFPTrackingError = 405;
+    const int SideLiquidityInd = 1444;
+    const int DerivativeMinPriceIncrement = 1267;
+    const int PublishTrdIndicator = 852;
+    const int InvestorCountryOfResidence = 475;
+    const int SideReasonCd = 1007;
+    const int MinPriceIncrement = 969;
+    const int SecuritySettlAgentContactName = 180;
+    const int SecurityResponseType = 323;
+    const int LegBenchmarkCurvePoint = 678;
+    const int ClearingFirm = 439;
+    const int RelationshipRiskSecurityIDSource = 1592;
+    const int SessionStatus = 1409;
+    const int TriggerSecurityID = 1104;
+    const int TotNoAllocs = 892;
+    const int NoAltMDSource = 816;
+    const int AllocAccountType = 798;
+    const int LastPx = 31;
+    const int AllocTransType = 71;
+    const int TotNoQuoteEntries = 304;
+    const int MinBidSize = 647;
+    const int SettlBrkrCode = 174;
+    const int CardHolderName = 488;
+    const int ExpirationQtyType = 982;
+    const int EncodedUnderlyingSecurityDescLen = 364;
+    const int QuoteReqID = 131;
+    const int NoRelatedPartyAltSubIDs = 1572;
+    const int RiskProduct = 1543;
+    const int RiskSecurityAltIDSource = 1542;
+    const int PriceUnitOfMeasure = 1191;
+    const int TZTransactTime = 1132;
+    const int AllocHandlInst = 209;
+    const int UnderlyingInstrumentPartyIDSource = 1060;
+    const int CurrencyRatio = 1382;
+    const int RefreshQty = 1088;
+    const int TradeRequestStatus = 750;
+    const int TrdRepIndicator = 1389;
+    const int MiscFeeAmt = 137;
+    const int TradSesOpenTime = 342;
+    const int PreallocMethod = 591;
+    const int TaxAdvantageType = 495;
+    const int MessageEncoding = 347;
+    const int RiskPutOrCall = 1553;
+    const int RiskSecurityGroup = 1545;
+    const int NoPartySubIDs = 802;
+    const int SettlInstReqID = 791;
+    const int LegRepoCollateralSecurityType = 250;
+    const int AffectedSecondaryOrderID = 536;
+    const int RiskSymbol = 1536;
+    const int DerivativeMaturityTime = 1253;
+    const int ExpireTime = 126;
+    const int UnderlyingFactor = 246;
+    const int OrigOrdModTime = 586;
+    const int NoTrdRepIndicators = 1387;
+    const int DerivativeMaturityDate = 1252;
+    const int DerivativeCFICode = 1248;
+    const int Nested2PartySubIDType = 807;
+    const int LegIOIQty = 682;
+    const int ExpireDate = 432;
+    const int RiskSecurityType = 1547;
+    const int NoMatchRules = 1235;
+    const int ApplEndSeqNum = 1183;
+    const int EventPx = 867;
+    const int AsgnRptID = 833;
+    const int TimeInForce = 59;
+    const int LowPx = 333;
+    const int IOIQualifier = 104;
+    const int WaveNo = 105;
+    const int RiskSeniority = 1552;
+    const int StrikePriceBoundaryMethod = 1479;
+    const int DerivativeIssueDate = 1276;
+    const int MiscFeeType = 139;
+    const int QuoteID = 117;
+    const int RiskFlexibleIndicator = 1554;
+    const int DerivativeInstrumentPartyIDSource = 1294;
+    const int SettlObligID = 1161;
+    const int InstrAttribValue = 872;
+    const int LiquidityValue = 404;
+    const int SecurityIDSource = 22;
+    const int NewsRefType = 1477;
+    const int NoOfLegUnderlyings = 1342;
+    const int DerivativeEncodedSecurityDesc = 1281;
+    const int TriggerOrderType = 1111;
+    const int UnderlyingDirtyPrice = 882;
+    const int CrossType = 549;
+    const int RepoCollateralSecurityType = 239;
+    const int Password = 554;
+    const int OpenCloseSettleFlag = 286;
+    const int Subject = 147;
+    const int RefApplReqID = 1433;
+    const int UnderlyingEndValue = 886;
+    const int NewSeqNo = 36;
+    const int OrigTradeHandlingInstr = 1124;
+    const int DisplayHighQty = 1086;
+    const int MDBookType = 1021;
+    const int MarginExcess = 899;
+    const int BasisPxType = 419;
+    const int DlvyInst = 86;
+    const int ComplianceID = 376;
+    const int EmailThreadID = 164;
+    const int ContAmtCurr = 521;
+    const int RelationshipRiskSecurityGroup = 1598;
+    const int ComplexEventType = 1484;
+    const int MassActionResponse = 1375;
+    const int UnderlyingIssueDate = 242;
+    const int SecurityRequestType = 321;
+    const int AllocInterestAtMaturity = 741;
+    const int ListRejectReason = 1386;
+    const int DeskType = 1033;
+    const int SecondaryTradeReportID = 818;
+    const int SettlType = 63;
+    const int OpenClose = 77;
+    const int ContractMultiplierUnit = 1435;
+    const int SecondaryLowLimitPrice = 1221;
+    const int ExpQty = 983;
+    const int NetworkRequestID = 933;
+    const int TrdType = 828;
+    const int NoUnderlyings = 711;
+    const int MDMkt = 275;
+    const int LastMkt = 30;
+    const int RestructuringType = 1449;
+    const int NoStrikeRules = 1201;
+    const int ListName = 392;
+    const int ProgRptReqs = 414;
+    const int TradingSessionID = 336;
+    const int ListOrderStatus = 431;
+    const int RegistStatus = 506;
+    const int PosAmt = 708;
+    const int UnderlyingPriceDeterminationMethod = 1481;
+    const int NoUnderlyingStips = 887;
+    const int TradSesPreCloseTime = 343;
+    const int MassCancelRequestType = 530;
+    const int UnderlyingLegSecurityAltIDSource = 1336;
+    const int SettlPartyID = 782;
+    const int NoAffectedOrders = 534;
+    const int CashSettlAgentAcctNum = 184;
+    const int UnderlyingLegMaturityMonthYear = 1339;
+    const int DerivativeSecurityListRequestType = 1307;
+    const int NoLotTypeRules = 1234;
+    const int NoDates = 580;
+    const int CxlRejResponseTo = 434;
+    const int EffectiveTime = 168;
+    const int GrossTradeAmt = 381;
+    const int ContextPartyID = 1523;
+    const int SecurityListDesc = 1467;
+    const int NotAffectedOrderID = 1371;
+    const int DerivativeStrikeValue = 1264;
+    const int NoPosAmt = 753;
+    const int LegCreditRating = 257;
+    const int RelationshipRiskInstrumentSettlType = 1611;
+    const int BidForwardPoints2 = 642;
+    const int SettlDate = 64;
+    const int ClientID = 109;
+    const int QuoteCancelType = 298;
+    const int StipulationType = 233;
+    const int OutMainCntryUIndex = 412;
+    const int LegSettlmntTyp = 587;
+    const int NoRelationshipRiskInstruments = 1587;
+    const int DerivativeNTPositionLimit = 1274;
+    const int PriceQuoteMethod = 1196;
+    const int LowLimitPrice = 1148;
+    const int LegUnitOfMeasure = 999;
+    const int SessionRejectReason = 373;
+    const int PartyDetailsListReportID = 1510;
+    const int DeliveryType = 919;
+    const int AllocPrice = 366;
+    const int NoBidComponents = 420;
+    const int QuoteQualifier = 695;
+    const int Scope = 546;
+    const int NoSecurityAltID = 454;
+    const int RootPartySubID = 1121;
+    const int DeliverToLocationID = 145;
+    const int DeleteReason = 285;
+    const int BidSpotRate = 188;
+    const int Nested4PartyID = 1415;
+    const int InViewOfCommon = 328;
+    const int UnderlyingSettlPrice = 732;
+    const int RegistRejReasonText = 496;
+    const int NoSides = 552;
+    const int LegAllocAccount = 671;
+    const int NoRelationshipRiskWarningLevels = 1613;
+    const int RelationshipRiskProduct = 1596;
+    const int LegSecurityDesc = 620;
+    const int ClOrdLinkID = 583;
+    const int OrigSendingTime = 122;
+    const int EncodedLegIssuerLen = 618;
+    const int OrderID = 37;
+    const int SecurityType = 167;
+    const int RoundingDirection = 468;
+    const int FillExecID = 1363;
+    const int NoEvents = 864;
+    const int RoundLot = 561;
+    const int MDEntrySize = 271;
+    const int EncodedIssuerLen = 348;
+    const int DerivativePriceUnitOfMeasureQty = 1316;
+    const int TimeUnit = 997;
+    const int TotNoOrders = 68;
+    const int PartyAltID = 1517;
+    const int LegSwapType = 690;
+    const int IOITransType = 28;
+    const int RawDataLength = 95;
+    const int UnderlyingSecurityType = 310;
+    const int UnderlyingLegSecurityAltID = 1335;
+    const int SecurityReportID = 964;
+    const int TotNumReports = 911;
+    const int TotalNumPosReports = 727;
+    const int SecurityReqID = 320;
+    const int PosReqResult = 728;
+    const int LegOfferForwardPoints = 1068;
+    const int AllowableOneSidednessCurr = 767;
+    const int AffectedOrderID = 535;
+    const int UnderlyingCountryOfIssue = 592;
+    const int UnderlyingRepurchaseRate = 245;
+    const int LastMsgSeqNumProcessed = 369;
+    const int UnderlyingCFICode = 463;
+    const int DerivativeOptAttribute = 1265;
+    const int PegSecurityID = 1097;
+    const int HostCrossID = 961;
+    const int ExecInstValue = 1308;
+    const int DerivativeOptPayAmount = 1225;
+    const int UnderlyingCouponRate = 435;
+    const int SettlInstMode = 160;
+    const int SecurityAltIDSource = 456;
+    const int PreviouslyReported = 570;
+    const int ContextPartyIDSource = 1524;
+    const int RptSys = 1135;
+    const int NoNested2PartySubIDs = 806;
+    const int RefAllocID = 72;
+    const int DefOfferSize = 294;
+    const int ProductComplex = 1227;
+    const int CustOrderHandlingInst = 1031;
+    const int MDPriceLevel = 1023;
+    const int LegOptionRatio = 1017;
+    const int SecurityStatus = 965;
+    const int LegRefID = 654;
+    const int DividendYield = 1380;
+    const int DerivativeInstrumentPartySubIDType = 1298;
+    const int EndStrikePxRange = 1203;
+    const int DisplayQty = 1138;
+    const int LegSecuritySubType = 764;
+    const int ProcessCode = 81;
+    const int ExecInst = 18;
+    const int TradSesEndTime = 345;
+    const int OrigTime = 42;
+    const int ExecValuationPoint = 515;
+    const int ExecType = 150;
+    const int NoRelatedContextPartySubIDs = 1579;
+    const int Nested4PartyRole = 1417;
+    const int MultilegModel = 1377;
+    const int SecurityGroup = 1151;
+    const int EventType = 865;
+    const int TradeAllocIndicator = 826;
+    const int YieldCalcDate = 701;
+    const int ValueOfFutures = 408;
+    const int LegSide = 624;
+    const int UserStatus = 926;
+    const int SideValue1 = 396;
+    const int CxlQty = 84;
+    const int SecurityResponseID = 322;
+    const int InstrRegistry = 543;
+    const int StreamAsgnRptID = 1501;
+    const int OrderDelayUnit = 1429;
+    const int LegCurrencyRatio = 1383;
+    const int EndTickPriceRange = 1207;
+    const int CollReqID = 894;
+    const int LegPool = 740;
+    const int ShortQty = 705;
+    const int SideValue2 = 397;
+    const int TradedFlatSwitch = 258;
+    const int MassStatusReqID = 584;
+    const int ComplexEventEndDate = 1493;
+    const int MarketID = 1301;
+    const int OrigTradeDate = 1125;
+    const int PreTradeAnonymity = 1091;
+    const int TrdRptStatus = 939;
+    const int DistribPercentage = 512;
+    const int QuoteStatus = 297;
+    const int ClearingAccount = 440;
+    const int TrdMatchID = 880;
+    const int OrderInputDevice = 821;
+    const int SolicitedFlag = 377;
+    const int TransactTime = 60;
+    const int RiskLimitType = 1530;
+    const int UnderlyingFlowScheduleType = 1441;
+    const int UnderlyingStipValue = 889;
+    const int NextExpectedMsgSeqNum = 789;
+    const int BenchmarkCurveCurrency = 220;
+    const int CFICode = 461;
+    const int Factor = 228;
+    const int LastShares = 32;
+    const int RequestedPartyRole = 1509;
+    const int EventTime = 1145;
+    const int RootPartySubIDType = 1122;
+    const int ShortSaleReason = 853;
+    const int XmlData = 213;
+    const int RelationshipRiskSeniority = 1605;
+    const int NoTargetPartyIDs = 1461;
+    const int NoRootPartyIDs = 1116;
+    const int EventDate = 866;
+    const int PegRoundDirection = 838;
+    const int LegSettlDate = 588;
+    const int ModelType = 1434;
+    const int DefaultVerIndicator = 1410;
+    const int FuturesValuationMethod = 1197;
+    const int SettlMethod = 1193;
+    const int UnderlyingFXRate = 1045;
+    const int ConfirmStatus = 665;
+    const int LocateReqd = 114;
+    const int PosMaintRptID = 721;
+    const int Adjustment = 334;
+    const int StreamAsgnType = 1617;
+    const int LastRptRequested = 912;
+    const int LocaleOfIssue = 472;
+    const int SenderSubID = 50;
+    const int HighPx = 332;
+    const int AllocSettlCurrAmt = 737;
+    const int ComplexEventPriceBoundaryPrecision = 1488;
+    const int InstrumentPartyRole = 1051;
+    const int YieldRedemptionPrice = 697;
+    const int CumQty = 14;
+    const int OrigClOrdID = 41;
+    const int SettlSessID = 716;
+    const int ParentMktSegmID = 1325;
+    const int TradeReportType = 856;
+    const int AvgPrxPrecision = 74;
+    const int NoLegs = 555;
+    const int UnderlyingSymbol = 311;
+    const int ExerciseStyle = 1194;
+    const int HaltReasonChar = 327;
+    const int ExDestination = 100;
+    const int NoPartyRelationships = 1514;
+    const int DerivativeInstrmtAssignmentMethod = 1255;
+    const int UnderlyingIDSource = 305;
+    const int AdvId = 2;
+    const int TransBkdTime = 483;
+    const int LegLastPx = 637;
+    const int NoRiskWarningLevels = 1559;
+    const int AllocReportType = 794;
+    const int RegistDtls = 509;
+    const int AllocType = 626;
+    const int QuoteRequestRejectReason = 658;
+    const int UnderlyingUnitOfMeasure = 998;
+    const int IndividualAllocID = 467;
+    const int LegOfferPx = 684;
+    const int LiquidityIndType = 409;
+    const int HopSendingTime = 629;
+    const int RelationshipRiskLimitAmount = 1584;
+    const int ApplResendFlag = 1352;
+    const int DerivativeCapPrice = 1321;
+    const int RiskSecurityID = 1538;
+    const int ComplexOptPayoutAmount = 1485;
+    const int LanguageCode = 1474;
+    const int SettlObligRefID = 1163;
+    const int OrigTradeID = 1126;
+    const int UnderlyingCollectAmount = 986;
+    const int StatusValue = 928;
+    const int OfferSpotRate = 190;
+    const int PosType = 703;
+    const int UnderlyingRedemptionDate = 247;
+    const int SettlDepositoryCode = 173;
+    const int StreamAsgnAckType = 1503;
+    const int FloorPrice = 1200;
+    const int RiskMaturityTime = 1550;
+    const int UnderlyingPriceUnitOfMeasureQty = 1425;
+    const int FeeMultiplier = 1329;
+    const int UnderlyingMaturityTime = 1213;
+    const int ApplID = 1180;
+    const int LegGrossTradeAmt = 1075;
+    const int MDEntryDate = 272;
+    const int LegBenchmarkCurveCurrency = 676;
+    const int RiskInstrumentOperator = 1535;
+    const int OptPayoutAmount = 1195;
+    const int MiscFeeBasis = 891;
+    const int ValidUntilTime = 62;
+    const int OrdType = 40;
+    const int AdvRefID = 3;
+    const int HopCompID = 628;
+    const int PosMaintRptRefID = 714;
+    const int LegStipulationValue = 689;
+    const int MatchType = 574;
+    const int OptPayoutType = 1482;
+    const int UnderlyingPriceUnitOfMeasure = 1424;
+    const int MarketUpdateAction = 1395;
+    const int CollAsgnRejectReason = 906;
+    const int PeggedRefPrice = 1095;
+    const int IndividualAllocType = 992;
+    const int EndCash = 922;
+    const int EventText = 868;
+    const int ExDate = 230;
+    const int NestedPartyIDSource = 525;
+    const int GTBookingInst = 427;
+    const int DerivativeValuationMethod = 1319;
+    const int NumberOfOrders = 346;
+    const int TrdRepPartyRole = 1388;
+    const int TriggerPrice = 1102;
+    const int MDReportID = 963;
+    const int SecondaryAllocID = 793;
+    const int LeavesQty = 151;
+    const int CardStartDate = 503;
+    const int LegCoveredOrUncovered = 565;
+    const int PutOrCall = 201;
+    const int MatchAlgorithm = 1142;
+    const int CalculatedCcyLastQty = 1056;
+    const int FundRenewWaiv = 497;
+    const int SecuritySettlAgentName = 176;
+    const int BidDescriptor = 400;
+    const int RelationshipRiskSecurityAltIDSource = 1595;
+    const int MDStreamID = 1500;
+    const int NoAsgnReqs = 1499;
+    const int NotionalPercentageOutstanding = 1451;
+    const int NoSettlInst = 778;
+    const int SettlInstMsgID = 777;
+    const int ForexReq = 121;
+    const int TradSesReqID = 335;
+    const int UnderlyingLegStrikePrice = 1340;
+    const int TickRuleType = 1209;
+    const int InstrmtAssignmentMethod = 1049;
+    const int DiscretionOffsetType = 842;
+    const int ConfirmTransType = 666;
+    const int TotalTakedown = 237;
+    const int ResponseDestination = 726;
+    const int MDSecSizeType = 1178;
+    const int InstrumentPartySubIDType = 1054;
+    const int LegTimeUnit = 1001;
+    const int TransferReason = 830;
+    const int ApplQueueMax = 812;
+    const int DiscretionOffsetValue = 389;
+    const int BookingRefID = 466;
+    const int LegBidPx = 681;
+    const int ContextPartyRole = 1525;
+    const int TradSesEvent = 1368;
+    const int DerivativeProduct = 1246;
+    const int RootPartyRole = 1119;
+    const int DlvyInstType = 787;
+    const int NoLinesOfText = 33;
+    const int PosReqID = 710;
+    const int LegSecurityAltIDSource = 606;
+    const int EncodedSubject = 357;
+    const int ContraBroker = 375;
+    const int TradeCondition = 277;
+    const int PartyID = 448;
+    const int MDEntryID = 278;
+    const int UnderlyingLegSecurityExchange = 1341;
+    const int PriceLimitType = 1306;
+    const int TriggerSecurityIDSource = 1105;
+    const int NoUndlyInstrumentPartySubIDs = 1062;
+    const int ClientBidID = 391;
+    const int NetChgPrevDay = 451;
+    const int DefaultApplVerID = 1137;
+    const int IOIID = 23;
+    const int SpreadToBenchmark = 218;
+    const int CommType = 13;
+    const int RegistRejReasonCode = 507;
+    const int RelationshipRiskEncodedSecurityDesc = 1619;
+    const int RelationshipRiskRestructuringType = 1604;
+    const int SideTimeInForce = 962;
+    const int TrdRegTimestamp = 769;
+    const int FinancialStatus = 291;
+    const int NoTrades = 897;
+    const int LastFragment = 893;
+    const int PartySubID = 523;
+    const int AllocQty = 80;
+    const int NotifyBrokerOfCredit = 208;
+    const int SideTrdRegTimestampType = 1013;
+    const int AgreementDate = 915;
+    const int PartySubIDType = 803;
+    const int TotalNetValue = 900;
+    const int AllocNoOrdersType = 857;
+    const int AllocLinkID = 196;
+    const int RoundingModulus = 469;
+    const int OnBehalfOfCompID = 115;
+    const int UnderlyingSecurityID = 309;
+    const int SettlObligMsgID = 1160;
+    const int PositionLimit = 970;
+    const int SharedCommission = 858;
+    const int AllowableOneSidednessPct = 765;
+    const int AllocText = 161;
+    const int EndSeqNo = 16;
+    const int NoPartyIDs = 453;
+    const int NoContraBrokers = 382;
+    const int AllocLinkType = 197;
+    const int UnderlyingAllocationPercent = 972;
+    const int AllocAccruedInterestAmt = 742;
+    const int RiskSecuritySubType = 1548;
+    const int EncodedSecurityListDesc = 1469;
+    const int EncryptedPasswordLen = 1401;
+    const int LegDividendYield = 1381;
+    const int RefreshIndicator = 1187;
+    const int SideSettlCurrency = 1155;
+    const int UnderlyingSettlementType = 975;
+    const int OrderCapacityQty = 863;
+    const int LongQty = 704;
+    const int NoPartyAltIDs = 1516;
+    const int DerivativeSettlMethod = 1317;
+    const int TriggerTradingSessionID = 1113;
+    const int DisplayMethod = 1084;
+    const int RptSeq = 83;
+    const int MDEntryOriginator = 282;
+    const int LegInstrRegistry = 599;
+    const int FillQty = 1365;
+    const int PegSecurityIDSource = 1096;
+    const int MaturityTime = 1079;
+    const int MDFeedType = 1022;
+    const int CollStatus = 910;
+    const int UnderlyingSecuritySubType = 763;
+    const int CstmApplVerID = 1129;
+    const int DefaultApplExtID = 1407;
+    const int NoDerivativeSecurityAltID = 1218;
+    const int SideValueInd = 401;
+    const int EncodedText = 355;
+    const int Account = 1;
+    const int TriggerNewPrice = 1110;
+    const int UndlyInstrumentPartyRole = 1061;
+    const int MsgDirection = 385;
+    const int LegMaturityDate = 611;
+    const int UnderlyingContractMultiplierUnit = 1437;
+    const int InputSource = 979;
+    const int MDUpdateAction = 279;
+    const int MatchStatus = 573;
+    const int RateSource = 1446;
+    const int AllocPositionEffect = 1047;
+    const int PartyIDSource = 447;
+    const int EncodedUnderlyingIssuer = 363;
+    const int NoRequestedPartyRoles = 1508;
+    const int EncryptedPassword = 1402;
+    const int TriggerNewQty = 1112;
+    const int LegLastForwardPoints = 1073;
+    const int TotNumTradeReports = 748;
+    const int RefApplVerID = 1130;
+    const int LastSpotRate = 194;
+    const int Price = 44;
+    const int UnderlyingSecurityIDSource = 305;
+    const int TotNoSecurityTypes = 557;
+    const int RelationshipRiskInstrumentMultiplier = 1612;
+    const int NoRiskInstruments = 1534;
+    const int ReportedPx = 861;
+    const int LegSymbol = 600;
+    const int LegIssuer = 617;
+    const int RegistDetls = 509;
+    const int UnderlyingLegSecurityID = 1332;
+    const int MinLotSize = 1231;
+    const int NumTickets = 395;
+    const int LegLocaleOfIssue = 598;
+    const int ExchangeForPhysical = 411;
+    const int SecurityTradingEvent = 1174;
+    const int MinPriceIncrementAmount = 1146;
+    const int UnderlyingPayAmount = 985;
+    const int SettlPartySubID = 785;
+    const int AllocNetMoney = 154;
+    const int UnderlyingMaturityDay = 314;
+    const int NetworkResponseID = 932;
+    const int NumBidders = 417;
+    const int AllocAcctIDSource = 661;
+    const int AllocAvgPx = 153;
+    const int SecuritySettlAgentCode = 177;
+    const int NoDistribInsts = 510;
+    const int CustDirectedOrder = 1029;
+    const int FairValue = 406;
+    const int NoStrikes = 428;
+    const int EncodedSecurityListDescLen = 1468;
+    const int LegExerciseStyle = 1420;
+    const int DerivativeSymbolSfx = 1215;
+    const int NestedInstrAttribType = 1210;
+    const int ContraTrader = 337;
+    const int RiskInstrumentSettlType = 1557;
+    const int MDSecSize = 1179;
+    const int NoOfSecSizes = 1177;
+    const int CollAction = 944;
+    const int UnderlyingLastQty = 652;
+    const int PossDupFlag = 43;
+    const int ListStatusType = 429;
+    const int SideFillStationCd = 1006;
+    const int StatusText = 929;
+    const int BasisFeatureDate = 259;
+    const int XmlDataLen = 212;
+    const int UnderlyingMaturityDate = 542;
+    const int GapFillFlag = 123;
+    const int RefApplExtID = 1406;
+    const int RefApplID = 1355;
+    const int NoTradingSessionRules = 1309;
+    const int SwapPoints = 1069;
+    const int TargetStrategyParameters = 848;
+    const int LastForwardPoints = 195;
+    const int YieldRedemptionDate = 696;
+    const int RelationshipRiskSecurityID = 1591;
+    const int NoSettlDetails = 1158;
+    const int TradeHandlingInstr = 1123;
+    const int CashSettlAgentCode = 183;
+    const int LegPriceType = 686;
+    const int EncodedListExecInstLen = 352;
+    const int TradSesMethod = 338;
+    const int RiskLimitCurrency = 1532;
+    const int PartyDetailsListRequestID = 1505;
+    const int AgreementID = 914;
+    const int CashDistribCurr = 478;
+    const int BidPx = 132;
+    const int TradeType = 418;
+    const int EncodedSecurityDescLen = 350;
+    const int ComplexEventCondition = 1490;
+    const int EncryptedPasswordMethod = 1400;
+    const int DerivativeSecurityAltID = 1219;
+    const int TotNoAccQuotes = 1169;
+    const int TimeBracket = 943;
+    const int NoAllocs = 78;
+    const int UnderlyingProduct = 462;
+    const int BenchmarkCurveName = 221;
+    const int UnderlyingSymbolSfx = 312;
+    const int StrikePriceBoundaryPrecision = 1480;
+    const int QuoteSetID = 302;
+    const int CashMargin = 544;
+    const int SettlObligTransType = 1162;
+    const int LegNumber = 1152;
+    const int DeskOrderHandlingInst = 1035;
+    const int SettlPartyIDSource = 783;
+    const int PriorSettlPrice = 734;
+    const int RelationshipRiskSecurityType = 1600;
+    const int NotAffOrigClOrdID = 1372;
+    const int TradingSessionDesc = 1326;
+    const int DerivativeFloorPrice = 1322;
+    const int DerivativeSymbol = 1214;
+    const int RiskFreeRate = 1190;
+    const int PosTransType = 709;
+    const int MsgSeqNum = 34;
+    const int Signature = 89;
+    const int Seniority = 1450;
+    const int NoRateSources = 1445;
+    const int PriceUnitOfMeasureQty = 1192;
+    const int CollAsgnRefID = 907;
+    const int BuyVolume = 330;
+    const int SettlCurrFxRateCalc = 156;
+    const int PosMaintStatus = 722;
+    const int PriorSpreadIndicator = 720;
+    const int Benchmark = 219;
+    const int MaturityMonthYearFormat = 1303;
+    const int UnderlyingTradingSessionID = 822;
+    const int TotNoRelatedSym = 393;
+    const int StateOrProvinceOfIssue = 471;
+    const int RelatedPartyAltSubID = 1573;
+    const int DerivativeInstrRegistry = 1257;
+    const int LegBidForwardPoints = 1067;
+    const int ManualOrderIndicator = 1028;
+    const int NetMoney = 118;
+    const int LegalConfirm = 650;
+    const int CountryOfIssue = 470;
+    const int ApplReportType = 1426;
+    const int RootPartyID = 1117;
+    const int UnderlyingQty = 879;
+    const int ApplQueueDepth = 813;
+    const int StopPx = 99;
+    const int ReportToExch = 113;
+    const int ContraryInstructionIndicator = 719;
+    const int EncodedListStatusTextLen = 445;
+    const int DerivativeSecurityXMLSchema = 1284;
+    const int NoRelatedSym = 146;
+    const int AllocRejCode = 88;
+    const int UnderlyingSecurityAltID = 458;
+    const int NoRelationshipRiskSecurityAltID = 1593;
+    const int RefOrdIDReason = 1431;
+    const int DerivativeInstrumentPartyID = 1293;
+    const int SecurityXMLSchema = 1186;
+    const int RefOrderIDSource = 1081;
+    const int NTPositionLimit = 971;
+    const int EndAccruedInterestAmt = 920;
+    const int AccruedInterestRate = 158;
+    const int LastCapacity = 29;
+    const int RelationshipRiskLimitCurrency = 1585;
+    const int UnderlyingInstrumentPartySubID = 1063;
+    const int NoFills = 1362;
+    const int NoOrdTypeRules = 1237;
+    const int InstrumentPartyID = 1019;
+    const int MarginRatio = 898;
+    const int RefTagID = 371;
+    const int NoRoutingIDs = 215;
+    const int CouponRate = 223;
+    const int NoApplIDs = 1351;
+    const int DerivativeContractSettlMonth = 1285;
+    const int InstrAttribType = 871;
+    const int Product = 460;
+    const int AllocShares = 80;
+    const int NoQuoteEntries = 295;
+    const int RelationshipRiskWarningLevelName = 1615;
+    const int DefaultCstmApplVerID = 1408;
+    const int DerivativeListMethod = 1320;
+    const int DerivativeSecurityXMLLen = 1282;
+    const int LegDatedDate = 739;
+    const int Nested2PartyIDSource = 758;
+    const int UnderlyingInstrRegistry = 595;
+    const int IssueDate = 225;
+    const int SecurityTradingStatus = 326;
+    const int LegOptAttribute = 613;
+    const int MaxFloor = 111;
+    const int DerivativeLocaleOfIssue = 1260;
+    const int OptPayAmount = 1195;
+    const int UnderlyingStipType = 888;
+    const int Rule80A = 47;
+    const int TotNoStrikes = 422;
+    const int CorporateAction = 292;
+    const int TerminationType = 788;
+    const int LegCouponRate = 615;
+    const int PosMaintAction = 712;
+    const int NoSecurityTypes = 558;
+    const int ComplexEventPriceTimeType = 1489;
+    const int LastSwapPoints = 1071;
+    const int UnderlyingFXRateCalc = 1046;
+    const int ListStatusText = 444;
+    const int OddLot = 575;
+    const int BookingUnit = 590;
+    const int LegAllocAcctIDSource = 674;
+    const int OnBehalfOfSendingTime = 370;
+    const int AllocStatus = 87;
+    const int ReferencePage = 1448;
+    const int DerivativeExerciseStyle = 1299;
+    const int ApplBegSeqNum = 1182;
+    const int CollRptID = 908;
+    const int IncTaxInd = 416;
+    const int NoBidDescriptors = 398;
+    const int LegCouponPaymentDate = 248;
+    const int TotNoPartyList = 1512;
+    const int PartyListResponseType = 1507;
+    const int NoUnderlyingLegSecurityAltID = 1334;
+    const int ReversalIndicator = 700;
+    const int CheckSum = 10;
+    const int TargetSubID = 57;
+    const int PosReqStatus = 729;
+    const int PriorityIndicator = 638;
+    const int ContextPartySubIDType = 1528;
+    const int UnderlyingLegCFICode = 1344;
+    const int DerivativeTimeUnit = 1271;
+    const int NoNested3PartyIDs = 948;
+    const int LiquidityPctHigh = 403;
+    const int MoneyLaunderingStatus = 481;
+    const int Nested4PartySubID = 1412;
+    const int DerivativeSecurityExchange = 1272;
+    const int LotType = 1093;
+    const int ContIntRptID = 977;
+    const int QuoteCondition = 276;
+    const int ComplexEventStartTime = 1495;
+    const int NoComplexEvents = 1483;
+    const int DerivativeContractMultiplier = 1266;
+    const int DerivativeSecurityStatus = 1256;
+    const int DerivativeProductComplex = 1228;
+    const int TriggerSymbol = 1103;
+    const int UnderlyingLocaleOfIssue = 594;
+    const int SendingTime = 52;
+    const int RelationshipRiskMaturityMonthYear = 1602;
+    const int RelatedPartyAltIDSource = 1571;
+    const int ComplexEventStartDate = 1492;
+    const int UnderlyingRestructuringType = 1453;
+    const int LegUnitOfMeasureQty = 1224;
+    const int NoTrdRegTimestamps = 768;
+    const int SendingDate = 51;
+    const int PartyRelationship = 1515;
+    const int TimeToExpiration = 1189;
+    const int LegAllocQty = 673;
+    const int SettlLocation = 166;
+    const int UnderlyingExerciseStyle = 1419;
+    const int CashSettlAgentContactName = 186;
+    const int LegRepurchaseRate = 252;
+    const int ApplResponseID = 1353;
+    const int NoDerivativeInstrAttrib = 1311;
+    const int DerivativeStrikeMultiplier = 1263;
+    const int LegStrikeCurrency = 942;
+    const int SecurityStatusReqID = 324;
+    const int SecureDataLen = 90;
+    const int DiscretionScope = 846;
+    const int OwnerType = 522;
+    const int Shares = 53;
+    const int Yield = 236;
+    const int QuoteRespID = 693;
+    const int RiskMaturityMonthYear = 1549;
+    const int Nested3PartySubID = 953;
+    const int ApplQueueResolution = 814;
+    const int TrdRegTimestampOrigin = 771;
+    const int Nested2PartyRole = 759;
+    const int Nested2PartyID = 757;
+    const int BidSize = 134;
+    const int LegSymbolSfx = 601;
+    const int QuoteResponseLevel = 301;
+    const int BodyLength = 9;
+    const int ListExecInst = 69;
+    const int ExecAckStatus = 1036;
+    const int SettlDate2 = 193;
+    const int NetGrossInd = 430;
+    const int UnderlyingSecurityAltIDSource = 459;
+    const int TestReqID = 112;
+    const int CxlType = 125;
+    const int UnderlyingCreditRating = 256;
+    const int AvgPxPrecision = 74;
+    const int BenchmarkPriceType = 663;
+    const int DeskTypeSource = 1034;
+    const int DiscretionRoundDirection = 844;
+    const int OrigSecondaryTradeID = 1127;
+    const int ReceivedDeptID = 1030;
+    const int MaturityNetMoney = 890;
+    const int BidDescriptorType = 399;
+    const int RiskEncodedSecurityDescLen = 1620;
+    const int RelationshipRiskSymbol = 1589;
+    const int NoRelatedContextPartyIDs = 1575;
+    const int DerivativeInstrumentPartySubID = 1297;
+    const int NetworkStatusResponseType = 937;
+    const int DateOfBirth = 486;
+    const int RelatedContextPartySubIDType = 1581;
+    const int StartStrikePxRange = 1202;
+    const int UndlyInstrumentPartySubID = 1063;
+    const int SecondaryTradeReportRefID = 881;
+    const int UnderlyingCPRegType = 878;
+    const int SignatureLength = 93;
+    const int OrderQty = 38;
+    const int RelationshipRiskWarningLevelPercent = 1614;
+    const int OriginalNotionalPercentageOutstanding = 1452;
+    const int UnderlyingTimeUnit = 1000;
+    const int EncodedHeadlineLen = 358;
+    const int NoRegistDtls = 473;
+    const int StrategyParameterValue = 960;
+    const int RiskSecurityDesc = 1556;
+    const int NoInstrumentParties = 1018;
+    const int QuoteType = 537;
+    const int NoRiskSecurityAltID = 1540;
+    const int NoStrategyParameters = 957;
+    const int IndividualAllocRejCode = 776;
+    const int DiscretionInst = 388;
+    const int RiskSecurityAltID = 1541;
+    const int TargetPartyRole = 1464;
+    const int CrossPrioritization = 550;
+    const int EncodedListStatusText = 446;
+    const int IOIOthSvc = 24;
+    const int LegIssueDate = 249;
+    const int MDReqRejReason = 281;
+    const int RelationshipRiskPutOrCall = 1606;
+    const int ApplReqType = 1347;
+    const int Country = 421;
+    const int UnderlyingLegSecurityIDSource = 1333;
+    const int FlexProductEligibilityIndicator = 1242;
+    const int AggressorIndicator = 1057;
+    const int ExecPriceAdjustment = 485;
+    const int BusinessRejectReason = 380;
+    const int TradeDate = 75;
+    const int UnderlyingPutOrCall = 315;
+    const int RelationshipRiskSymbolSfx = 1590;
+    const int UnderlyingInstrumentPartyRole = 1061;
+    const int DerivativePositionLimit = 1273;
+    const int TierCode = 994;
+    const int BookingType = 775;
+    const int StipulationValue = 234;
+    const int SettlCurrBidFxRate = 656;
+#endif //FIX_FIELDNUMBERS_H

+ 126 - 0
api/fix/src/CCall/HsBatchOrder.h

@@ -0,0 +1,126 @@
+/*
+ * HsBatchOrder.h
+ *
+ *  Created on: Feb 10, 2014
+ *      Author: Guangyu Guo
+ */
+
+#ifndef FIX42_BATCHORDER_H_
+#define FIX42_BATCHORDER_H_
+
+#include "quickfix/fix44/Message.h"
+#include "HsFixFields.h"
+
+namespace FIX44
+{
+
+  class HsBatchOrder : public Message
+  {
+  public:
+	  HsBatchOrder() : Message(MsgType()) {}
+	  HsBatchOrder(const FIX::Message& m) : Message(m) {}
+	  HsBatchOrder(const Message& m) : Message(m) {}
+	  HsBatchOrder(const HsBatchOrder& m) : Message(m) {}
+      static FIX::MsgType MsgType() { return FIX::MsgType("POD"); }
+
+
+    FIELD_SET(*this, FIX::SideStr);
+    FIELD_SET(*this, FIX::SymbolStr);
+    FIELD_SET(*this, FIX::OrderQtyStr);
+    FIELD_SET(*this, FIX::PriceStr);
+    FIELD_SET(*this, FIX::SecurityExchangeStr);
+    FIELD_SET(*this, FIX::CurrencyStr);
+    FIELD_SET(*this, FIX::SecurityTypeStr);
+    FIELD_SET(*this, FIX::AccountStr);
+    FIELD_SET(*this, FIX::EntrustNum);
+    FIELD_SET(*this, FIX::EntrustCount);
+
+    FIELD_SET(*this, FIX::ClOrdID);
+    FIELD_SET(*this, FIX::ClientID);
+    FIELD_SET(*this, FIX::ExecBroker);
+    FIELD_SET(*this, FIX::Account);
+    FIELD_SET(*this, FIX::SettlmntTyp);
+    FIELD_SET(*this, FIX::FutSettDate);
+    FIELD_SET(*this, FIX::HandlInst);
+    FIELD_SET(*this, FIX::ExecInst);
+    FIELD_SET(*this, FIX::MinQty);
+    FIELD_SET(*this, FIX::MaxFloor);
+    FIELD_SET(*this, FIX::ExDestination);
+    FIELD_SET(*this, FIX::ProcessCode);
+    FIELD_SET(*this, FIX::Symbol);
+    FIELD_SET(*this, FIX::SymbolSfx);
+    FIELD_SET(*this, FIX::SecurityID);
+    FIELD_SET(*this, FIX::IDSource);
+    FIELD_SET(*this, FIX::SecurityType);
+    FIELD_SET(*this, FIX::MaturityMonthYear);
+    FIELD_SET(*this, FIX::MaturityDay);
+    FIELD_SET(*this, FIX::PutOrCall);
+    FIELD_SET(*this, FIX::StrikePrice);
+    FIELD_SET(*this, FIX::OptAttribute);
+    FIELD_SET(*this, FIX::ContractMultiplier);
+    FIELD_SET(*this, FIX::CouponRate);
+    FIELD_SET(*this, FIX::SecurityExchange);
+    FIELD_SET(*this, FIX::Issuer);
+    FIELD_SET(*this, FIX::EncodedIssuerLen);
+    FIELD_SET(*this, FIX::EncodedIssuer);
+    FIELD_SET(*this, FIX::SecurityDesc);
+    FIELD_SET(*this, FIX::EncodedSecurityDescLen);
+    FIELD_SET(*this, FIX::EncodedSecurityDesc);
+    FIELD_SET(*this, FIX::PrevClosePx);
+    FIELD_SET(*this, FIX::Side);
+    FIELD_SET(*this, FIX::LocateReqd);
+    FIELD_SET(*this, FIX::TransactTime);
+    FIELD_SET(*this, FIX::OrderQty);
+    FIELD_SET(*this, FIX::CashOrderQty);
+    FIELD_SET(*this, FIX::OrdType);
+    FIELD_SET(*this, FIX::Price);
+    FIELD_SET(*this, FIX::StopPx);
+    FIELD_SET(*this, FIX::Currency);
+    FIELD_SET(*this, FIX::ComplianceID);
+    FIELD_SET(*this, FIX::SolicitedFlag);
+    FIELD_SET(*this, FIX::IOIid);
+    FIELD_SET(*this, FIX::QuoteID);
+    FIELD_SET(*this, FIX::TimeInForce);
+    FIELD_SET(*this, FIX::EffectiveTime);
+    FIELD_SET(*this, FIX::ExpireDate);
+    FIELD_SET(*this, FIX::ExpireTime);
+    FIELD_SET(*this, FIX::GTBookingInst);
+    FIELD_SET(*this, FIX::Commission);
+    FIELD_SET(*this, FIX::CommType);
+    FIELD_SET(*this, FIX::Rule80A);
+    FIELD_SET(*this, FIX::ForexReq);
+    FIELD_SET(*this, FIX::SettlCurrency);
+    FIELD_SET(*this, FIX::Text);
+    FIELD_SET(*this, FIX::EncodedTextLen);
+    FIELD_SET(*this, FIX::EncodedText);
+    FIELD_SET(*this, FIX::FutSettDate2);
+    FIELD_SET(*this, FIX::OrderQty2);
+    FIELD_SET(*this, FIX::OpenClose);
+    FIELD_SET(*this, FIX::CoveredOrUncovered);
+    FIELD_SET(*this, FIX::CustomerOrFirm);
+    FIELD_SET(*this, FIX::MaxShow);
+    FIELD_SET(*this, FIX::PegDifference);
+    FIELD_SET(*this, FIX::DiscretionInst);
+    FIELD_SET(*this, FIX::DiscretionOffset);
+    FIELD_SET(*this, FIX::ClearingFirm);
+    FIELD_SET(*this, FIX::ClearingAccount);
+    FIELD_SET(*this, FIX::NoAllocs);
+    class NoAllocs: public FIX::Group
+    {
+    public:
+    NoAllocs() : FIX::Group(78,79,FIX::message_order(79,80,0)) {}
+      FIELD_SET(*this, FIX::AllocAccount);
+      FIELD_SET(*this, FIX::AllocShares);
+    };
+    FIELD_SET(*this, FIX::NoTradingSessions);
+    class NoTradingSessions: public FIX::Group
+    {
+    public:
+    NoTradingSessions() : FIX::Group(386,336,FIX::message_order(336,0)) {}
+      FIELD_SET(*this, FIX::TradingSessionID);
+    };
+  };
+
+}
+
+#endif

+ 127 - 0
api/fix/src/CCall/HsCollectiveCancelRequest.h

@@ -0,0 +1,127 @@
+/*
+ * HsCollectiveCancelRequest.h
+ *
+ *  Created on: Feb 10, 2014
+ *      Author: Guangyu Guo
+ */
+
+#ifndef FIX42_COLLECTIVECANCELREQUEST_H_
+#define FIX42_COLLECTIVECANCELREQUEST_H_
+
+#include "quickfix/fix44/Message.h"
+#include "HsFixFields.h"
+
+namespace FIX44
+{
+
+  class HsCollectiveCancelRequest : public Message
+  {
+  public:
+	  HsCollectiveCancelRequest() : Message(MsgType()) {}
+	  HsCollectiveCancelRequest(const FIX::Message& m) : Message(m) {}
+	  HsCollectiveCancelRequest(const Message& m) : Message(m) {}
+	  HsCollectiveCancelRequest(const HsCollectiveCancelRequest& m) : Message(m) {}
+      static FIX::MsgType MsgType() { return FIX::MsgType("COF"); }
+
+
+    FIELD_SET(*this, FIX::SideStr);
+    FIELD_SET(*this, FIX::SymbolStr);
+    FIELD_SET(*this, FIX::OrderQtyStr);
+    FIELD_SET(*this, FIX::PriceStr);
+    FIELD_SET(*this, FIX::SecurityExchangeStr);
+    FIELD_SET(*this, FIX::CurrencyStr);
+    FIELD_SET(*this, FIX::SecurityTypeStr);
+    FIELD_SET(*this, FIX::AccountStr);
+    FIELD_SET(*this, FIX::EntrustNum);
+
+    FIELD_SET(*this, FIX::EntrustNoStr);
+
+    FIELD_SET(*this, FIX::ClOrdID);
+    FIELD_SET(*this, FIX::ClientID);
+    FIELD_SET(*this, FIX::ExecBroker);
+    FIELD_SET(*this, FIX::Account);
+    FIELD_SET(*this, FIX::SettlmntTyp);
+    FIELD_SET(*this, FIX::FutSettDate);
+    FIELD_SET(*this, FIX::HandlInst);
+    FIELD_SET(*this, FIX::ExecInst);
+    FIELD_SET(*this, FIX::MinQty);
+    FIELD_SET(*this, FIX::MaxFloor);
+    FIELD_SET(*this, FIX::ExDestination);
+    FIELD_SET(*this, FIX::ProcessCode);
+    FIELD_SET(*this, FIX::Symbol);
+    FIELD_SET(*this, FIX::SymbolSfx);
+    FIELD_SET(*this, FIX::SecurityID);
+    FIELD_SET(*this, FIX::IDSource);
+    FIELD_SET(*this, FIX::SecurityType);
+    FIELD_SET(*this, FIX::MaturityMonthYear);
+    FIELD_SET(*this, FIX::MaturityDay);
+    FIELD_SET(*this, FIX::PutOrCall);
+    FIELD_SET(*this, FIX::StrikePrice);
+    FIELD_SET(*this, FIX::OptAttribute);
+    FIELD_SET(*this, FIX::ContractMultiplier);
+    FIELD_SET(*this, FIX::CouponRate);
+    FIELD_SET(*this, FIX::SecurityExchange);
+    FIELD_SET(*this, FIX::Issuer);
+    FIELD_SET(*this, FIX::EncodedIssuerLen);
+    FIELD_SET(*this, FIX::EncodedIssuer);
+    FIELD_SET(*this, FIX::SecurityDesc);
+    FIELD_SET(*this, FIX::EncodedSecurityDescLen);
+    FIELD_SET(*this, FIX::EncodedSecurityDesc);
+    FIELD_SET(*this, FIX::PrevClosePx);
+    FIELD_SET(*this, FIX::Side);
+    FIELD_SET(*this, FIX::LocateReqd);
+    FIELD_SET(*this, FIX::TransactTime);
+    FIELD_SET(*this, FIX::OrderQty);
+    FIELD_SET(*this, FIX::CashOrderQty);
+    FIELD_SET(*this, FIX::OrdType);
+    FIELD_SET(*this, FIX::Price);
+    FIELD_SET(*this, FIX::StopPx);
+    FIELD_SET(*this, FIX::Currency);
+    FIELD_SET(*this, FIX::ComplianceID);
+    FIELD_SET(*this, FIX::SolicitedFlag);
+    FIELD_SET(*this, FIX::IOIid);
+    FIELD_SET(*this, FIX::QuoteID);
+    FIELD_SET(*this, FIX::TimeInForce);
+    FIELD_SET(*this, FIX::EffectiveTime);
+    FIELD_SET(*this, FIX::ExpireDate);
+    FIELD_SET(*this, FIX::ExpireTime);
+    FIELD_SET(*this, FIX::GTBookingInst);
+    FIELD_SET(*this, FIX::Commission);
+    FIELD_SET(*this, FIX::CommType);
+    FIELD_SET(*this, FIX::Rule80A);
+    FIELD_SET(*this, FIX::ForexReq);
+    FIELD_SET(*this, FIX::SettlCurrency);
+    FIELD_SET(*this, FIX::Text);
+    FIELD_SET(*this, FIX::EncodedTextLen);
+    FIELD_SET(*this, FIX::EncodedText);
+    FIELD_SET(*this, FIX::FutSettDate2);
+    FIELD_SET(*this, FIX::OrderQty2);
+    FIELD_SET(*this, FIX::OpenClose);
+    FIELD_SET(*this, FIX::CoveredOrUncovered);
+    FIELD_SET(*this, FIX::CustomerOrFirm);
+    FIELD_SET(*this, FIX::MaxShow);
+    FIELD_SET(*this, FIX::PegDifference);
+    FIELD_SET(*this, FIX::DiscretionInst);
+    FIELD_SET(*this, FIX::DiscretionOffset);
+    FIELD_SET(*this, FIX::ClearingFirm);
+    FIELD_SET(*this, FIX::ClearingAccount);
+    FIELD_SET(*this, FIX::NoAllocs);
+    class NoAllocs: public FIX::Group
+    {
+    public:
+    NoAllocs() : FIX::Group(78,79,FIX::message_order(79,80,0)) {}
+      FIELD_SET(*this, FIX::AllocAccount);
+      FIELD_SET(*this, FIX::AllocShares);
+    };
+    FIELD_SET(*this, FIX::NoTradingSessions);
+    class NoTradingSessions: public FIX::Group
+    {
+    public:
+    NoTradingSessions() : FIX::Group(386,336,FIX::message_order(336,0)) {}
+      FIELD_SET(*this, FIX::TradingSessionID);
+    };
+  };
+
+}
+
+#endif

+ 125 - 0
api/fix/src/CCall/HsCollectiveOrder.h

@@ -0,0 +1,125 @@
+/*
+ * HsCollectiveOrder.h
+ *
+ *  Created on: Feb 10, 2014
+ *      Author: Guangyu Guo
+ */
+
+#ifndef FIX42_COLLECTIVEORDER_H_
+#define FIX42_COLLECTIVEORDER_H_
+
+#include "quickfix/fix44/Message.h"
+#include "HsFixFields.h"
+
+namespace FIX44
+{
+
+  class HsCollectiveOrder : public Message
+  {
+  public:
+	  HsCollectiveOrder() : Message(MsgType()) {}
+	  HsCollectiveOrder(const FIX::Message& m) : Message(m) {}
+	  HsCollectiveOrder(const Message& m) : Message(m) {}
+	  HsCollectiveOrder(const HsCollectiveOrder& m) : Message(m) {}
+      static FIX::MsgType MsgType() { return FIX::MsgType("COD"); }
+
+
+    FIELD_SET(*this, FIX::SideStr);
+    FIELD_SET(*this, FIX::SymbolStr);
+    FIELD_SET(*this, FIX::OrderQtyStr);
+    FIELD_SET(*this, FIX::PriceStr);
+    FIELD_SET(*this, FIX::SecurityExchangeStr);
+    FIELD_SET(*this, FIX::CurrencyStr);
+    FIELD_SET(*this, FIX::SecurityTypeStr);
+    FIELD_SET(*this, FIX::AccountStr);
+    FIELD_SET(*this, FIX::EntrustNum);
+
+    FIELD_SET(*this, FIX::ClOrdID);
+    FIELD_SET(*this, FIX::ClientID);
+    FIELD_SET(*this, FIX::ExecBroker);
+    FIELD_SET(*this, FIX::Account);
+    FIELD_SET(*this, FIX::SettlmntTyp);
+    FIELD_SET(*this, FIX::FutSettDate);
+    FIELD_SET(*this, FIX::HandlInst);
+    FIELD_SET(*this, FIX::ExecInst);
+    FIELD_SET(*this, FIX::MinQty);
+    FIELD_SET(*this, FIX::MaxFloor);
+    FIELD_SET(*this, FIX::ExDestination);
+    FIELD_SET(*this, FIX::ProcessCode);
+    FIELD_SET(*this, FIX::Symbol);
+    FIELD_SET(*this, FIX::SymbolSfx);
+    FIELD_SET(*this, FIX::SecurityID);
+    FIELD_SET(*this, FIX::IDSource);
+    FIELD_SET(*this, FIX::SecurityType);
+    FIELD_SET(*this, FIX::MaturityMonthYear);
+    FIELD_SET(*this, FIX::MaturityDay);
+    FIELD_SET(*this, FIX::PutOrCall);
+    FIELD_SET(*this, FIX::StrikePrice);
+    FIELD_SET(*this, FIX::OptAttribute);
+    FIELD_SET(*this, FIX::ContractMultiplier);
+    FIELD_SET(*this, FIX::CouponRate);
+    FIELD_SET(*this, FIX::SecurityExchange);
+    FIELD_SET(*this, FIX::Issuer);
+    FIELD_SET(*this, FIX::EncodedIssuerLen);
+    FIELD_SET(*this, FIX::EncodedIssuer);
+    FIELD_SET(*this, FIX::SecurityDesc);
+    FIELD_SET(*this, FIX::EncodedSecurityDescLen);
+    FIELD_SET(*this, FIX::EncodedSecurityDesc);
+    FIELD_SET(*this, FIX::PrevClosePx);
+    FIELD_SET(*this, FIX::Side);
+    FIELD_SET(*this, FIX::LocateReqd);
+    FIELD_SET(*this, FIX::TransactTime);
+    FIELD_SET(*this, FIX::OrderQty);
+    FIELD_SET(*this, FIX::CashOrderQty);
+    FIELD_SET(*this, FIX::OrdType);
+    FIELD_SET(*this, FIX::Price);
+    FIELD_SET(*this, FIX::StopPx);
+    FIELD_SET(*this, FIX::Currency);
+    FIELD_SET(*this, FIX::ComplianceID);
+    FIELD_SET(*this, FIX::SolicitedFlag);
+    FIELD_SET(*this, FIX::IOIid);
+    FIELD_SET(*this, FIX::QuoteID);
+    FIELD_SET(*this, FIX::TimeInForce);
+    FIELD_SET(*this, FIX::EffectiveTime);
+    FIELD_SET(*this, FIX::ExpireDate);
+    FIELD_SET(*this, FIX::ExpireTime);
+    FIELD_SET(*this, FIX::GTBookingInst);
+    FIELD_SET(*this, FIX::Commission);
+    FIELD_SET(*this, FIX::CommType);
+    FIELD_SET(*this, FIX::Rule80A);
+    FIELD_SET(*this, FIX::ForexReq);
+    FIELD_SET(*this, FIX::SettlCurrency);
+    FIELD_SET(*this, FIX::Text);
+    FIELD_SET(*this, FIX::EncodedTextLen);
+    FIELD_SET(*this, FIX::EncodedText);
+    FIELD_SET(*this, FIX::FutSettDate2);
+    FIELD_SET(*this, FIX::OrderQty2);
+    FIELD_SET(*this, FIX::OpenClose);
+    FIELD_SET(*this, FIX::CoveredOrUncovered);
+    FIELD_SET(*this, FIX::CustomerOrFirm);
+    FIELD_SET(*this, FIX::MaxShow);
+    FIELD_SET(*this, FIX::PegDifference);
+    FIELD_SET(*this, FIX::DiscretionInst);
+    FIELD_SET(*this, FIX::DiscretionOffset);
+    FIELD_SET(*this, FIX::ClearingFirm);
+    FIELD_SET(*this, FIX::ClearingAccount);
+    FIELD_SET(*this, FIX::NoAllocs);
+    class NoAllocs: public FIX::Group
+    {
+    public:
+    NoAllocs() : FIX::Group(78,79,FIX::message_order(79,80,0)) {}
+      FIELD_SET(*this, FIX::AllocAccount);
+      FIELD_SET(*this, FIX::AllocShares);
+    };
+    FIELD_SET(*this, FIX::NoTradingSessions);
+    class NoTradingSessions: public FIX::Group
+    {
+    public:
+    NoTradingSessions() : FIX::Group(386,336,FIX::message_order(336,0)) {}
+      FIELD_SET(*this, FIX::TradingSessionID);
+    };
+  };
+
+}
+
+#endif

+ 127 - 0
api/fix/src/CCall/HsCollectiveOrderStatusRequest.h

@@ -0,0 +1,127 @@
+/*
+ * HsCollectiveOrderStatusRequest.h
+ *
+ *  Created on: Feb 10, 2014
+ *      Author: Guangyu Guo
+ */
+
+#ifndef FIX42_COLLECTIVEORDERSTATUSREQUEST_H_
+#define FIX42_COLLECTIVEORDERSTATUSREQUEST_H_
+
+#include "quickfix/fix44/Message.h"
+#include "HsFixFields.h"
+
+namespace FIX44
+{
+
+  class HsCollectiveOrderStatusRequest : public Message
+  {
+  public:
+	  HsCollectiveOrderStatusRequest() : Message(MsgType()) {}
+	  HsCollectiveOrderStatusRequest(const FIX::Message& m) : Message(m) {}
+	  HsCollectiveOrderStatusRequest(const Message& m) : Message(m) {}
+	  HsCollectiveOrderStatusRequest(const HsCollectiveOrderStatusRequest& m) : Message(m) {}
+      static FIX::MsgType MsgType() { return FIX::MsgType("COH"); }
+
+
+    FIELD_SET(*this, FIX::SideStr);
+    FIELD_SET(*this, FIX::SymbolStr);
+    FIELD_SET(*this, FIX::OrderQtyStr);
+    FIELD_SET(*this, FIX::PriceStr);
+    FIELD_SET(*this, FIX::SecurityExchangeStr);
+    FIELD_SET(*this, FIX::CurrencyStr);
+    FIELD_SET(*this, FIX::SecurityTypeStr);
+    FIELD_SET(*this, FIX::AccountStr);
+    FIELD_SET(*this, FIX::EntrustNum);
+
+    FIELD_SET(*this, FIX::EntrustNoStr);
+
+    FIELD_SET(*this, FIX::ClOrdID);
+    FIELD_SET(*this, FIX::ClientID);
+    FIELD_SET(*this, FIX::ExecBroker);
+    FIELD_SET(*this, FIX::Account);
+    FIELD_SET(*this, FIX::SettlmntTyp);
+    FIELD_SET(*this, FIX::FutSettDate);
+    FIELD_SET(*this, FIX::HandlInst);
+    FIELD_SET(*this, FIX::ExecInst);
+    FIELD_SET(*this, FIX::MinQty);
+    FIELD_SET(*this, FIX::MaxFloor);
+    FIELD_SET(*this, FIX::ExDestination);
+    FIELD_SET(*this, FIX::ProcessCode);
+    FIELD_SET(*this, FIX::Symbol);
+    FIELD_SET(*this, FIX::SymbolSfx);
+    FIELD_SET(*this, FIX::SecurityID);
+    FIELD_SET(*this, FIX::IDSource);
+    FIELD_SET(*this, FIX::SecurityType);
+    FIELD_SET(*this, FIX::MaturityMonthYear);
+    FIELD_SET(*this, FIX::MaturityDay);
+    FIELD_SET(*this, FIX::PutOrCall);
+    FIELD_SET(*this, FIX::StrikePrice);
+    FIELD_SET(*this, FIX::OptAttribute);
+    FIELD_SET(*this, FIX::ContractMultiplier);
+    FIELD_SET(*this, FIX::CouponRate);
+    FIELD_SET(*this, FIX::SecurityExchange);
+    FIELD_SET(*this, FIX::Issuer);
+    FIELD_SET(*this, FIX::EncodedIssuerLen);
+    FIELD_SET(*this, FIX::EncodedIssuer);
+    FIELD_SET(*this, FIX::SecurityDesc);
+    FIELD_SET(*this, FIX::EncodedSecurityDescLen);
+    FIELD_SET(*this, FIX::EncodedSecurityDesc);
+    FIELD_SET(*this, FIX::PrevClosePx);
+    FIELD_SET(*this, FIX::Side);
+    FIELD_SET(*this, FIX::LocateReqd);
+    FIELD_SET(*this, FIX::TransactTime);
+    FIELD_SET(*this, FIX::OrderQty);
+    FIELD_SET(*this, FIX::CashOrderQty);
+    FIELD_SET(*this, FIX::OrdType);
+    FIELD_SET(*this, FIX::Price);
+    FIELD_SET(*this, FIX::StopPx);
+    FIELD_SET(*this, FIX::Currency);
+    FIELD_SET(*this, FIX::ComplianceID);
+    FIELD_SET(*this, FIX::SolicitedFlag);
+    FIELD_SET(*this, FIX::IOIid);
+    FIELD_SET(*this, FIX::QuoteID);
+    FIELD_SET(*this, FIX::TimeInForce);
+    FIELD_SET(*this, FIX::EffectiveTime);
+    FIELD_SET(*this, FIX::ExpireDate);
+    FIELD_SET(*this, FIX::ExpireTime);
+    FIELD_SET(*this, FIX::GTBookingInst);
+    FIELD_SET(*this, FIX::Commission);
+    FIELD_SET(*this, FIX::CommType);
+    FIELD_SET(*this, FIX::Rule80A);
+    FIELD_SET(*this, FIX::ForexReq);
+    FIELD_SET(*this, FIX::SettlCurrency);
+    FIELD_SET(*this, FIX::Text);
+    FIELD_SET(*this, FIX::EncodedTextLen);
+    FIELD_SET(*this, FIX::EncodedText);
+    FIELD_SET(*this, FIX::FutSettDate2);
+    FIELD_SET(*this, FIX::OrderQty2);
+    FIELD_SET(*this, FIX::OpenClose);
+    FIELD_SET(*this, FIX::CoveredOrUncovered);
+    FIELD_SET(*this, FIX::CustomerOrFirm);
+    FIELD_SET(*this, FIX::MaxShow);
+    FIELD_SET(*this, FIX::PegDifference);
+    FIELD_SET(*this, FIX::DiscretionInst);
+    FIELD_SET(*this, FIX::DiscretionOffset);
+    FIELD_SET(*this, FIX::ClearingFirm);
+    FIELD_SET(*this, FIX::ClearingAccount);
+    FIELD_SET(*this, FIX::NoAllocs);
+    class NoAllocs: public FIX::Group
+    {
+    public:
+    NoAllocs() : FIX::Group(78,79,FIX::message_order(79,80,0)) {}
+      FIELD_SET(*this, FIX::AllocAccount);
+      FIELD_SET(*this, FIX::AllocShares);
+    };
+    FIELD_SET(*this, FIX::NoTradingSessions);
+    class NoTradingSessions: public FIX::Group
+    {
+    public:
+    NoTradingSessions() : FIX::Group(386,336,FIX::message_order(336,0)) {}
+      FIELD_SET(*this, FIX::TradingSessionID);
+    };
+  };
+
+}
+
+#endif

+ 47 - 0
api/fix/src/CCall/HsFixFieldNumbers.h

@@ -0,0 +1,47 @@
+/*
+ * HsFixFieldNumbers.h
+ *
+ *  Created on: Jan 18, 2014
+ *      Author: miguoliang
+ */
+
+#ifndef HSFIXFIELDNUMBERS_H_
+#define HSFIXFIELDNUMBERS_H_
+
+namespace FIX
+{
+	namespace FIELD
+	{
+		const int ContractSno = 21002;
+		const int FundPassword = 21004;
+		const int SideStr = 22126;
+		const int SymbolStr = 22127;
+		const int OrderQtyStr = 22128;
+		const int PriceStr = 22129;
+		const int SecurityExchangeStr = 22130;
+		const int CurrencyStr = 22145;
+		const int SecurityTypeStr = 22146;
+		const int AccountStr = 22131;
+		const int EntrustNum = 22132;
+		const int SuccessNum = 22133;
+		const int FailNum = 22134;
+		const int EntrustResult = 22135 ;
+		const int EntrustErrinfoStr = 22136;
+		const int EntrustNoStr = 22137;
+		const int ReportNoStr = 22138;
+		const int SeatNoStr = 22139 ;
+		const int EntrustTimeStr = 22140;
+		const int EntrustCount = 22144;
+
+		const int EntrustNoOldStr = 22141;
+		const int EntrustStatusStr = 22143;
+
+		const int MarketIndex = 30004;
+
+
+	}
+}
+
+
+
+#endif /* HSFIXFIELDNUMBERS_H_ */

+ 47 - 0
api/fix/src/CCall/HsFixFields.h

@@ -0,0 +1,47 @@
+/*
+ * HsFixFields.cpp
+ *
+ *  Created on: Jan 18, 2014
+ *      Author: miguoliang
+ */
+
+#ifndef HSFIX_HSFIXFIELDS_H
+#define HSFIX_HSFIXFIELDS_H
+
+#include "quickfix/Field.h"
+
+#include "HsFixFieldNumbers.h"
+
+#undef Yield
+
+namespace FIX
+{
+	DEFINE_STRING(ContractSno);
+	DEFINE_STRING(FundPassword);
+	DEFINE_STRING(SideStr);
+	DEFINE_STRING(SymbolStr);
+	DEFINE_STRING(OrderQtyStr);
+	DEFINE_STRING(PriceStr);
+	DEFINE_STRING(SecurityExchangeStr);
+	DEFINE_STRING(CurrencyStr);
+	DEFINE_STRING(SecurityTypeStr);
+	DEFINE_STRING(AccountStr);
+	DEFINE_INT(EntrustNum);
+	DEFINE_INT(SuccessNum);
+	DEFINE_INT(FailNum);
+	DEFINE_INT(EntrustResult);
+	DEFINE_STRING(EntrustErrinfoStr);
+	DEFINE_STRING(EntrustNoStr);
+	DEFINE_STRING(ReportNoStr);
+	DEFINE_STRING(SeatNoStr);
+	DEFINE_STRING(EntrustTimeStr);
+	DEFINE_INT(EntrustCount);
+	DEFINE_STRING(EntrustNoOldStr);
+	DEFINE_STRING(EntrustStatusStr);
+
+	DEFINE_PRICE(MarketIndex);
+
+
+}
+
+#endif // HSFIX_HSFIXFIELDS_H

+ 55 - 0
api/fix/src/CCall/HsMarketDataRequest.h

@@ -0,0 +1,55 @@
+/*
+* HsMarketDataRequest.h
+*
+*  Created on: Jan 3, 2014
+*      Author: Guangyu Guo
+*/
+
+#ifndef FIX42_HsMarketDataRequest_H_
+#define FIX42_HsMarketDataRequest_H_
+
+#include "quickfix/fix42/Message.h"
+#include "HsFixFields.h"
+
+namespace FIX42
+{
+
+	class HsMarketDataRequest : public Message
+	{
+	public:
+		HsMarketDataRequest() : Message(MsgType()) {}
+		HsMarketDataRequest(const FIX::Message& m) : Message(m) {}
+		HsMarketDataRequest(const Message& m) : Message(m) {}
+		HsMarketDataRequest(const HsMarketDataRequest& m) : Message(m) {}
+		static FIX::MsgType MsgType() { return FIX::MsgType("V"); }
+
+
+		FIELD_SET(*this, FIX::MDReqID);
+		FIELD_SET(*this, FIX::SubscriptionRequestType);
+		FIELD_SET(*this, FIX::NoRelatedSym);
+		class NoRelatedSym : public FIX::Group
+		{
+		public:
+			NoRelatedSym() : FIX::Group(146, 55, FIX::message_order(55, 207, 0)) {}
+			FIELD_SET(*this, FIX::SecurityExchange);
+			FIELD_SET(*this, FIX::Symbol);
+		};
+		
+	};
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#endif

+ 62 - 0
api/fix/src/CCall/HsMessageCracker.h

@@ -0,0 +1,62 @@
+/*
+ * HsMessageCracker.h
+ *
+ *  Created on: Jan 18, 2014
+ *      Author: miguoliang
+ */
+
+#ifndef FIX42_HSMESSAGECRACKER_H
+#define FIX42_HSMESSAGECRACKER_H
+
+#include "quickfix/SessionID.h"
+#include "quickfix/Exceptions.h"
+#include "quickfix/fix44/Message.h"
+
+namespace FIX44 {
+
+class HsPositionReport;
+class HsPositionMaintenanceRequest;
+
+class HsMessageCracker
+{
+public:
+	virtual ~HsMessageCracker() {};
+	virtual void onMessage(const HsPositionReport&, const FIX::SessionID&) {};
+	virtual void onMessage(const HsPositionMaintenanceRequest&, const FIX::SessionID&) {};
+
+public:
+	void crack(const Message& message, const FIX::SessionID& sessionID)
+	{
+		const std::string& msgTypeValue = message.getHeader().getField(FIX::FIELD::MsgType);
+
+		if (msgTypeValue == "UAP")
+		{
+			onMessage((const HsPositionReport&)message, sessionID);
+		}
+		else if (msgTypeValue == "UAM")
+		{
+			onMessage((const HsPositionMaintenanceRequest&)message, sessionID);
+		}
+	}
+
+	void crack(Message& message, const FIX::SessionID& sessionID)
+	{
+		FIX::MsgType msgType;
+		message.getHeader().getField(msgType);
+		std::string msgTypeValue = msgType.getValue();
+
+		if (msgTypeValue == "UAP")
+		{
+			onMessage((HsPositionReport&)message, sessionID);
+		}
+		else if (msgTypeValue == "UAM")
+		{
+			onMessage((HsPositionMaintenanceRequest&)message, sessionID);
+		}
+		
+	} 
+};
+
+} /* namespace FIX */
+
+#endif /* FIX_HSMESSAGECRACKER_H */

+ 290 - 0
api/fix/src/CCall/HsPositionMaintenanceRequest.h

@@ -0,0 +1,290 @@
+/*
+ * HsPositionMaintenanceRequest.h
+ *
+ *  Created on: Jan 18, 2014
+ *      Author: miguoliang
+ */
+
+#ifndef FIX42_HSPOSITIONMAINTENANCEREQUEST_H
+#define FIX42_HSPOSITIONMAINTENANCEREQUEST_H
+
+#include "HsFixFields.h"
+
+#include "quickfix/fix44/Message.h"
+
+namespace FIX44
+{
+	class HsPositionMaintenanceRequest : public Message
+	{
+	public:
+		HsPositionMaintenanceRequest() : Message(MsgType()) {}
+		HsPositionMaintenanceRequest(const FIX::Message& m) : Message(m) {}
+		HsPositionMaintenanceRequest(const Message& m) : Message(m) {}
+		HsPositionMaintenanceRequest(const HsPositionMaintenanceRequest& m) : Message(m) {}
+		static FIX::MsgType MsgType() { return FIX::MsgType("UAL"); }
+
+		HsPositionMaintenanceRequest(
+			const FIX::PosTransType& aPosTransType,
+			const FIX::PosMaintAction& aPosMaintAction,
+			const FIX::ClearingBusinessDate& aClearingBusinessDate )
+		: Message(MsgType())
+		{
+			set(aPosTransType);
+			set(aPosMaintAction);
+			set(aClearingBusinessDate);
+		}
+
+		FIELD_SET(*this, FIX::Quantity);
+		FIELD_SET(*this, FIX::FundPassword);
+
+		FIELD_SET(*this, FIX::Password);
+		FIELD_SET(*this, FIX::SettlPartyID);
+		FIELD_SET(*this, FIX::EncryptMethod);
+		FIELD_SET(*this, FIX::PosReqID);
+		FIELD_SET(*this, FIX::PosTransType);
+		FIELD_SET(*this, FIX::PosMaintAction);
+		FIELD_SET(*this, FIX::OrigPosReqRefID);
+		FIELD_SET(*this, FIX::PosMaintRptRefID);
+		FIELD_SET(*this, FIX::ClearingBusinessDate);
+		FIELD_SET(*this, FIX::SettlSessID);
+		FIELD_SET(*this, FIX::SettlSessSubID);
+		FIELD_SET(*this, FIX::NoPartyIDs);
+		class NoPartyIDs: public FIX::Group
+		{
+		public:
+			NoPartyIDs() : FIX::Group(453,448,FIX::message_order(448,447,452,802,0)) {}
+			FIELD_SET(*this, FIX::PartyID);
+			FIELD_SET(*this, FIX::PartyIDSource);
+			FIELD_SET(*this, FIX::PartyRole);
+			FIELD_SET(*this, FIX::NoPartySubIDs);
+			class NoPartySubIDs: public FIX::Group
+			{
+			public:
+				NoPartySubIDs() : FIX::Group(802,523,FIX::message_order(523,803,0)) {}
+				FIELD_SET(*this, FIX::PartySubID);
+				FIELD_SET(*this, FIX::PartySubIDType);
+			};
+		};
+		FIELD_SET(*this, FIX::Account);
+		FIELD_SET(*this, FIX::AcctIDSource);
+		FIELD_SET(*this, FIX::AccountType);
+		FIELD_SET(*this, FIX::Symbol);
+		FIELD_SET(*this, FIX::SymbolSfx);
+		FIELD_SET(*this, FIX::SecurityID);
+		FIELD_SET(*this, FIX::SecurityIDSource);
+		FIELD_SET(*this, FIX::Product);
+		FIELD_SET(*this, FIX::CFICode);
+		FIELD_SET(*this, FIX::SecurityType);
+		FIELD_SET(*this, FIX::SecuritySubType);
+		FIELD_SET(*this, FIX::MaturityMonthYear);
+		FIELD_SET(*this, FIX::MaturityDate);
+		FIELD_SET(*this, FIX::CouponPaymentDate);
+		FIELD_SET(*this, FIX::IssueDate);
+		FIELD_SET(*this, FIX::RepoCollateralSecurityType);
+		FIELD_SET(*this, FIX::RepurchaseTerm);
+		FIELD_SET(*this, FIX::RepurchaseRate);
+		FIELD_SET(*this, FIX::Factor);
+		FIELD_SET(*this, FIX::CreditRating);
+		FIELD_SET(*this, FIX::InstrRegistry);
+		FIELD_SET(*this, FIX::CountryOfIssue);
+		FIELD_SET(*this, FIX::StateOrProvinceOfIssue);
+		FIELD_SET(*this, FIX::LocaleOfIssue);
+		FIELD_SET(*this, FIX::RedemptionDate);
+		FIELD_SET(*this, FIX::StrikePrice);
+		FIELD_SET(*this, FIX::StrikeCurrency);
+		FIELD_SET(*this, FIX::OptAttribute);
+		FIELD_SET(*this, FIX::ContractMultiplier);
+		FIELD_SET(*this, FIX::CouponRate);
+		FIELD_SET(*this, FIX::SecurityExchange);
+		FIELD_SET(*this, FIX::Issuer);
+		FIELD_SET(*this, FIX::EncodedIssuerLen);
+		FIELD_SET(*this, FIX::EncodedIssuer);
+		FIELD_SET(*this, FIX::SecurityDesc);
+		FIELD_SET(*this, FIX::EncodedSecurityDescLen);
+		FIELD_SET(*this, FIX::EncodedSecurityDesc);
+		FIELD_SET(*this, FIX::Pool);
+		FIELD_SET(*this, FIX::ContractSettlMonth);
+		FIELD_SET(*this, FIX::CPProgram);
+		FIELD_SET(*this, FIX::CPRegType);
+		FIELD_SET(*this, FIX::DatedDate);
+		FIELD_SET(*this, FIX::InterestAccrualDate);
+		FIELD_SET(*this, FIX::SecurityStatus);
+		FIELD_SET(*this, FIX::SettleOnOpenFlag);
+		FIELD_SET(*this, FIX::InstrmtAssignmentMethod);
+		FIELD_SET(*this, FIX::StrikeMultiplier);
+		FIELD_SET(*this, FIX::StrikeValue);
+		FIELD_SET(*this, FIX::MinPriceIncrement);
+		FIELD_SET(*this, FIX::PositionLimit);
+		FIELD_SET(*this, FIX::NTPositionLimit);
+		FIELD_SET(*this, FIX::UnitOfMeasure);
+		FIELD_SET(*this, FIX::TimeUnit);
+		FIELD_SET(*this, FIX::MaturityTime);
+		FIELD_SET(*this, FIX::Currency);
+		FIELD_SET(*this, FIX::NoLegs);
+		class NoLegs: public FIX::Group
+		{
+		public:
+			NoLegs() : FIX::Group(555,600,FIX::message_order(600,601,602,603,607,608,609,764,610,611,248,249,250,251,252,253,257,599,596,597,598,254,612,942,613,614,615,616,617,618,619,620,621,622,623,624,556,740,739,955,956,999,1001,0)) {}
+			FIELD_SET(*this, FIX::LegSymbol);
+			FIELD_SET(*this, FIX::LegSymbolSfx);
+			FIELD_SET(*this, FIX::LegSecurityID);
+			FIELD_SET(*this, FIX::LegSecurityIDSource);
+			FIELD_SET(*this, FIX::LegProduct);
+			FIELD_SET(*this, FIX::LegCFICode);
+			FIELD_SET(*this, FIX::LegSecurityType);
+			FIELD_SET(*this, FIX::LegSecuritySubType);
+			FIELD_SET(*this, FIX::LegMaturityMonthYear);
+			FIELD_SET(*this, FIX::LegMaturityDate);
+			FIELD_SET(*this, FIX::LegCouponPaymentDate);
+			FIELD_SET(*this, FIX::LegIssueDate);
+			FIELD_SET(*this, FIX::LegRepoCollateralSecurityType);
+			FIELD_SET(*this, FIX::LegRepurchaseTerm);
+			FIELD_SET(*this, FIX::LegRepurchaseRate);
+			FIELD_SET(*this, FIX::LegFactor);
+			FIELD_SET(*this, FIX::LegCreditRating);
+			FIELD_SET(*this, FIX::LegInstrRegistry);
+			FIELD_SET(*this, FIX::LegCountryOfIssue);
+			FIELD_SET(*this, FIX::LegStateOrProvinceOfIssue);
+			FIELD_SET(*this, FIX::LegLocaleOfIssue);
+			FIELD_SET(*this, FIX::LegRedemptionDate);
+			FIELD_SET(*this, FIX::LegStrikePrice);
+			FIELD_SET(*this, FIX::LegStrikeCurrency);
+			FIELD_SET(*this, FIX::LegOptAttribute);
+			FIELD_SET(*this, FIX::LegContractMultiplier);
+			FIELD_SET(*this, FIX::LegCouponRate);
+			FIELD_SET(*this, FIX::LegSecurityExchange);
+			FIELD_SET(*this, FIX::LegIssuer);
+			FIELD_SET(*this, FIX::EncodedLegIssuerLen);
+			FIELD_SET(*this, FIX::EncodedLegIssuer);
+			FIELD_SET(*this, FIX::LegSecurityDesc);
+			FIELD_SET(*this, FIX::EncodedLegSecurityDescLen);
+			FIELD_SET(*this, FIX::EncodedLegSecurityDesc);
+			FIELD_SET(*this, FIX::LegRatioQty);
+			FIELD_SET(*this, FIX::LegSide);
+			FIELD_SET(*this, FIX::LegCurrency);
+			FIELD_SET(*this, FIX::LegPool);
+			FIELD_SET(*this, FIX::LegDatedDate);
+			FIELD_SET(*this, FIX::LegContractSettlMonth);
+			FIELD_SET(*this, FIX::LegInterestAccrualDate);
+			FIELD_SET(*this, FIX::LegUnitOfMeasure);
+			FIELD_SET(*this, FIX::LegTimeUnit);
+		};
+		FIELD_SET(*this, FIX::NoUnderlyings);
+		class NoUnderlyings: public FIX::Group
+		{
+		public:
+			NoUnderlyings() : FIX::Group(711,311,FIX::message_order(311,312,309,305,462,463,310,763,313,542,241,242,243,244,245,246,256,595,592,593,594,247,316,941,317,436,435,308,306,362,363,307,364,365,877,878,318,879,810,882,883,884,885,886,972,975,973,974,998,1000,1038,1039,1044,1045,1046,0)) {}
+			FIELD_SET(*this, FIX::UnderlyingSymbol);
+			FIELD_SET(*this, FIX::UnderlyingSymbolSfx);
+			FIELD_SET(*this, FIX::UnderlyingSecurityID);
+			FIELD_SET(*this, FIX::UnderlyingSecurityIDSource);
+			FIELD_SET(*this, FIX::UnderlyingProduct);
+			FIELD_SET(*this, FIX::UnderlyingCFICode);
+			FIELD_SET(*this, FIX::UnderlyingSecurityType);
+			FIELD_SET(*this, FIX::UnderlyingSecuritySubType);
+			FIELD_SET(*this, FIX::UnderlyingMaturityMonthYear);
+			FIELD_SET(*this, FIX::UnderlyingMaturityDate);
+			FIELD_SET(*this, FIX::UnderlyingCouponPaymentDate);
+			FIELD_SET(*this, FIX::UnderlyingIssueDate);
+			FIELD_SET(*this, FIX::UnderlyingRepoCollateralSecurityType);
+			FIELD_SET(*this, FIX::UnderlyingRepurchaseTerm);
+			FIELD_SET(*this, FIX::UnderlyingRepurchaseRate);
+			FIELD_SET(*this, FIX::UnderlyingFactor);
+			FIELD_SET(*this, FIX::UnderlyingCreditRating);
+			FIELD_SET(*this, FIX::UnderlyingInstrRegistry);
+			FIELD_SET(*this, FIX::UnderlyingCountryOfIssue);
+			FIELD_SET(*this, FIX::UnderlyingStateOrProvinceOfIssue);
+			FIELD_SET(*this, FIX::UnderlyingLocaleOfIssue);
+			FIELD_SET(*this, FIX::UnderlyingRedemptionDate);
+			FIELD_SET(*this, FIX::UnderlyingStrikePrice);
+			FIELD_SET(*this, FIX::UnderlyingStrikeCurrency);
+			FIELD_SET(*this, FIX::UnderlyingOptAttribute);
+			FIELD_SET(*this, FIX::UnderlyingContractMultiplier);
+			FIELD_SET(*this, FIX::UnderlyingCouponRate);
+			FIELD_SET(*this, FIX::UnderlyingSecurityExchange);
+			FIELD_SET(*this, FIX::UnderlyingIssuer);
+			FIELD_SET(*this, FIX::EncodedUnderlyingIssuerLen);
+			FIELD_SET(*this, FIX::EncodedUnderlyingIssuer);
+			FIELD_SET(*this, FIX::UnderlyingSecurityDesc);
+			FIELD_SET(*this, FIX::EncodedUnderlyingSecurityDescLen);
+			FIELD_SET(*this, FIX::EncodedUnderlyingSecurityDesc);
+			FIELD_SET(*this, FIX::UnderlyingCPProgram);
+			FIELD_SET(*this, FIX::UnderlyingCPRegType);
+			FIELD_SET(*this, FIX::UnderlyingCurrency);
+			FIELD_SET(*this, FIX::UnderlyingQty);
+			FIELD_SET(*this, FIX::UnderlyingPx);
+			FIELD_SET(*this, FIX::UnderlyingDirtyPrice);
+			FIELD_SET(*this, FIX::UnderlyingEndPrice);
+			FIELD_SET(*this, FIX::UnderlyingStartValue);
+			FIELD_SET(*this, FIX::UnderlyingCurrentValue);
+			FIELD_SET(*this, FIX::UnderlyingEndValue);
+			FIELD_SET(*this, FIX::UnderlyingAllocationPercent);
+			FIELD_SET(*this, FIX::UnderlyingSettlementType);
+			FIELD_SET(*this, FIX::UnderlyingCashAmount);
+			FIELD_SET(*this, FIX::UnderlyingCashType);
+			FIELD_SET(*this, FIX::UnderlyingUnitOfMeasure);
+			FIELD_SET(*this, FIX::UnderlyingTimeUnit);
+			FIELD_SET(*this, FIX::UnderlyingCapValue);
+			FIELD_SET(*this, FIX::UnderlyingSettlMethod);
+			FIELD_SET(*this, FIX::UnderlyingAdjustedQuantity);
+			FIELD_SET(*this, FIX::UnderlyingFXRate);
+			FIELD_SET(*this, FIX::UnderlyingFXRateCalc);
+		};
+		FIELD_SET(*this, FIX::NoTradingSessions);
+		class NoTradingSessions: public FIX::Group
+		{
+		public:
+			NoTradingSessions() : FIX::Group(386,336,FIX::message_order(336,625,0)) {}
+			FIELD_SET(*this, FIX::TradingSessionID);
+			FIELD_SET(*this, FIX::TradingSessionSubID);
+		};
+		FIELD_SET(*this, FIX::TransactTime);
+		FIELD_SET(*this, FIX::NoPositions);
+		class NoPositions: public FIX::Group
+		{
+		public:
+			NoPositions() : FIX::Group(702,703,FIX::message_order(703,704,705,706,539,976,0)) {}
+			FIELD_SET(*this, FIX::PosType);
+			FIELD_SET(*this, FIX::LongQty);
+			FIELD_SET(*this, FIX::ShortQty);
+			FIELD_SET(*this, FIX::PosQtyStatus);
+			FIELD_SET(*this, FIX::NoNestedPartyIDs);
+			class NoNestedPartyIDs: public FIX::Group
+			{
+			public:
+				NoNestedPartyIDs() : FIX::Group(539,524,FIX::message_order(524,525,538,804,0)) {}
+				FIELD_SET(*this, FIX::NestedPartyID);
+				FIELD_SET(*this, FIX::NestedPartyIDSource);
+				FIELD_SET(*this, FIX::NestedPartyRole);
+				FIELD_SET(*this, FIX::NoNestedPartySubIDs);
+				class NoNestedPartySubIDs: public FIX::Group
+				{
+				public:
+					NoNestedPartySubIDs() : FIX::Group(804,545,FIX::message_order(545,805,0)) {}
+					FIELD_SET(*this, FIX::NestedPartySubID);
+					FIELD_SET(*this, FIX::NestedPartySubIDType);
+				};
+			};
+			FIELD_SET(*this, FIX::QuantityDate);
+		};
+		FIELD_SET(*this, FIX::AdjustmentType);
+		FIELD_SET(*this, FIX::ContraryInstructionIndicator);
+		FIELD_SET(*this, FIX::PriorSpreadIndicator);
+		FIELD_SET(*this, FIX::ThresholdAmount);
+		FIELD_SET(*this, FIX::Text);
+		FIELD_SET(*this, FIX::EncodedTextLen);
+		FIELD_SET(*this, FIX::EncodedText);
+		FIELD_SET(*this, FIX::NoPosAmt);
+		class NoPosAmt: public FIX::Group
+		{
+		public:
+			NoPosAmt() : FIX::Group(753,707,FIX::message_order(707,708,1055,0)) {}
+			FIELD_SET(*this, FIX::PosAmtType);
+			FIELD_SET(*this, FIX::PosAmt);
+			FIELD_SET(*this, FIX::PositionCurrency);
+		};
+		FIELD_SET(*this, FIX::SettlCurrency);
+	};
+}
+
+#endif /* FIX42_HSPOSITIONMAINTENANCEREQUEST_H */

+ 291 - 0
api/fix/src/CCall/HsPositionReport.h

@@ -0,0 +1,291 @@
+/*
+ * HsPositionReport.h
+ *
+ *  Created on: Jan 18, 2014
+ *      Author: miguoliang
+ */
+
+#ifndef FIX42_HSPOSITIONREPORT_H_
+#define FIX42_HSPOSITIONREPORT_H_
+
+#include "quickfix/fix44/Message.h"
+
+namespace FIX44
+{
+	class HsPositionReport : public Message
+	{
+	public:
+		HsPositionReport() : Message(MsgType()) {}
+		HsPositionReport(const FIX::Message& m) : Message(m) {}
+		HsPositionReport(const Message& m) : Message(m) {}
+		HsPositionReport(const HsPositionReport& m) : Message(m) {}
+		static FIX::MsgType MsgType() { return FIX::MsgType("UAP"); }
+
+		HsPositionReport(
+		const FIX::PosMaintRptID& aPosMaintRptID,
+		const FIX::ClearingBusinessDate& aClearingBusinessDate )
+		: Message(MsgType())
+		{
+			set(aPosMaintRptID);
+			set(aClearingBusinessDate);
+		}
+
+		FIELD_SET(*this, FIX::PosMaintRptID);
+		FIELD_SET(*this, FIX::PosReqID);
+		FIELD_SET(*this, FIX::PosReqType);
+		FIELD_SET(*this, FIX::SubscriptionRequestType);
+		FIELD_SET(*this, FIX::TotalNumPosReports);
+		FIELD_SET(*this, FIX::UnsolicitedIndicator);
+		FIELD_SET(*this, FIX::PosReqResult);
+		FIELD_SET(*this, FIX::ClearingBusinessDate);
+		FIELD_SET(*this, FIX::SettlSessID);
+		FIELD_SET(*this, FIX::SettlSessSubID);
+		FIELD_SET(*this, FIX::NoPartyIDs);
+		class NoPartyIDs: public FIX::Group
+		{
+		public:
+			NoPartyIDs() : FIX::Group(453,448,FIX::message_order(448,447,452,802,0)) {}
+			FIELD_SET(*this, FIX::PartyID);
+			FIELD_SET(*this, FIX::PartyIDSource);
+			FIELD_SET(*this, FIX::PartyRole);
+			FIELD_SET(*this, FIX::NoPartySubIDs);
+			class NoPartySubIDs: public FIX::Group
+			{
+			public:
+				NoPartySubIDs() : FIX::Group(802,523,FIX::message_order(523,803,0)) {}
+				FIELD_SET(*this, FIX::PartySubID);
+				FIELD_SET(*this, FIX::PartySubIDType);
+			};
+		};
+		FIELD_SET(*this, FIX::Account);
+		FIELD_SET(*this, FIX::AcctIDSource);
+		FIELD_SET(*this, FIX::AccountType);
+		FIELD_SET(*this, FIX::Symbol);
+		FIELD_SET(*this, FIX::SymbolSfx);
+		FIELD_SET(*this, FIX::SecurityID);
+		FIELD_SET(*this, FIX::SecurityIDSource);
+		FIELD_SET(*this, FIX::Product);
+		FIELD_SET(*this, FIX::CFICode);
+		FIELD_SET(*this, FIX::SecurityType);
+		FIELD_SET(*this, FIX::SecuritySubType);
+		FIELD_SET(*this, FIX::MaturityMonthYear);
+		FIELD_SET(*this, FIX::MaturityDate);
+		FIELD_SET(*this, FIX::CouponPaymentDate);
+		FIELD_SET(*this, FIX::IssueDate);
+		FIELD_SET(*this, FIX::RepoCollateralSecurityType);
+		FIELD_SET(*this, FIX::RepurchaseTerm);
+		FIELD_SET(*this, FIX::RepurchaseRate);
+		FIELD_SET(*this, FIX::Factor);
+		FIELD_SET(*this, FIX::CreditRating);
+		FIELD_SET(*this, FIX::InstrRegistry);
+		FIELD_SET(*this, FIX::CountryOfIssue);
+		FIELD_SET(*this, FIX::StateOrProvinceOfIssue);
+		FIELD_SET(*this, FIX::LocaleOfIssue);
+		FIELD_SET(*this, FIX::RedemptionDate);
+		FIELD_SET(*this, FIX::StrikePrice);
+		FIELD_SET(*this, FIX::StrikeCurrency);
+		FIELD_SET(*this, FIX::OptAttribute);
+		FIELD_SET(*this, FIX::ContractMultiplier);
+		FIELD_SET(*this, FIX::CouponRate);
+		FIELD_SET(*this, FIX::SecurityExchange);
+		FIELD_SET(*this, FIX::Issuer);
+		FIELD_SET(*this, FIX::EncodedIssuerLen);
+		FIELD_SET(*this, FIX::EncodedIssuer);
+		FIELD_SET(*this, FIX::SecurityDesc);
+		FIELD_SET(*this, FIX::EncodedSecurityDescLen);
+		FIELD_SET(*this, FIX::EncodedSecurityDesc);
+		FIELD_SET(*this, FIX::Pool);
+		FIELD_SET(*this, FIX::ContractSettlMonth);
+		FIELD_SET(*this, FIX::CPProgram);
+		FIELD_SET(*this, FIX::CPRegType);
+		FIELD_SET(*this, FIX::DatedDate);
+		FIELD_SET(*this, FIX::InterestAccrualDate);
+		FIELD_SET(*this, FIX::SecurityStatus);
+		FIELD_SET(*this, FIX::SettleOnOpenFlag);
+		FIELD_SET(*this, FIX::InstrmtAssignmentMethod);
+		FIELD_SET(*this, FIX::StrikeMultiplier);
+		FIELD_SET(*this, FIX::StrikeValue);
+		FIELD_SET(*this, FIX::MinPriceIncrement);
+		FIELD_SET(*this, FIX::PositionLimit);
+		FIELD_SET(*this, FIX::NTPositionLimit);
+		FIELD_SET(*this, FIX::UnitOfMeasure);
+		FIELD_SET(*this, FIX::TimeUnit);
+		FIELD_SET(*this, FIX::MaturityTime);
+		FIELD_SET(*this, FIX::Currency);
+		FIELD_SET(*this, FIX::SettlPrice);
+		FIELD_SET(*this, FIX::SettlPriceType);
+		FIELD_SET(*this, FIX::PriorSettlPrice);
+		FIELD_SET(*this, FIX::NoLegs);
+		class NoLegs: public FIX::Group
+		{
+		public:
+			NoLegs() : FIX::Group(555,600,FIX::message_order(600,601,602,603,607,608,609,764,610,611,248,249,250,251,252,253,257,599,596,597,598,254,612,942,613,614,615,616,617,618,619,620,621,622,623,624,556,740,739,955,956,999,1001,0)) {}
+			FIELD_SET(*this, FIX::LegSymbol);
+			FIELD_SET(*this, FIX::LegSymbolSfx);
+			FIELD_SET(*this, FIX::LegSecurityID);
+			FIELD_SET(*this, FIX::LegSecurityIDSource);
+			FIELD_SET(*this, FIX::LegProduct);
+			FIELD_SET(*this, FIX::LegCFICode);
+			FIELD_SET(*this, FIX::LegSecurityType);
+			FIELD_SET(*this, FIX::LegSecuritySubType);
+			FIELD_SET(*this, FIX::LegMaturityMonthYear);
+			FIELD_SET(*this, FIX::LegMaturityDate);
+			FIELD_SET(*this, FIX::LegCouponPaymentDate);
+			FIELD_SET(*this, FIX::LegIssueDate);
+			FIELD_SET(*this, FIX::LegRepoCollateralSecurityType);
+			FIELD_SET(*this, FIX::LegRepurchaseTerm);
+			FIELD_SET(*this, FIX::LegRepurchaseRate);
+			FIELD_SET(*this, FIX::LegFactor);
+			FIELD_SET(*this, FIX::LegCreditRating);
+			FIELD_SET(*this, FIX::LegInstrRegistry);
+			FIELD_SET(*this, FIX::LegCountryOfIssue);
+			FIELD_SET(*this, FIX::LegStateOrProvinceOfIssue);
+			FIELD_SET(*this, FIX::LegLocaleOfIssue);
+			FIELD_SET(*this, FIX::LegRedemptionDate);
+			FIELD_SET(*this, FIX::LegStrikePrice);
+			FIELD_SET(*this, FIX::LegStrikeCurrency);
+			FIELD_SET(*this, FIX::LegOptAttribute);
+			FIELD_SET(*this, FIX::LegContractMultiplier);
+			FIELD_SET(*this, FIX::LegCouponRate);
+			FIELD_SET(*this, FIX::LegSecurityExchange);
+			FIELD_SET(*this, FIX::LegIssuer);
+			FIELD_SET(*this, FIX::EncodedLegIssuerLen);
+			FIELD_SET(*this, FIX::EncodedLegIssuer);
+			FIELD_SET(*this, FIX::LegSecurityDesc);
+			FIELD_SET(*this, FIX::EncodedLegSecurityDescLen);
+			FIELD_SET(*this, FIX::EncodedLegSecurityDesc);
+			FIELD_SET(*this, FIX::LegRatioQty);
+			FIELD_SET(*this, FIX::LegSide);
+			FIELD_SET(*this, FIX::LegCurrency);
+			FIELD_SET(*this, FIX::LegPool);
+			FIELD_SET(*this, FIX::LegDatedDate);
+			FIELD_SET(*this, FIX::LegContractSettlMonth);
+			FIELD_SET(*this, FIX::LegInterestAccrualDate);
+			FIELD_SET(*this, FIX::LegUnitOfMeasure);
+			FIELD_SET(*this, FIX::LegTimeUnit);
+		};
+		FIELD_SET(*this, FIX::NoUnderlyings);
+		class NoUnderlyings: public FIX::Group
+		{
+		public:
+			NoUnderlyings() : FIX::Group(711,311,FIX::message_order(311,312,309,305,462,463,310,763,313,542,241,242,243,244,245,246,256,595,592,593,594,247,316,941,317,436,435,308,306,362,363,307,364,365,877,878,318,879,810,882,883,884,885,886,972,975,973,974,998,1000,1038,1039,1044,1045,1046,732,733,984,1037,0)) {}
+			FIELD_SET(*this, FIX::UnderlyingSymbol);
+			FIELD_SET(*this, FIX::UnderlyingSymbolSfx);
+			FIELD_SET(*this, FIX::UnderlyingSecurityID);
+			FIELD_SET(*this, FIX::UnderlyingSecurityIDSource);
+			FIELD_SET(*this, FIX::UnderlyingProduct);
+			FIELD_SET(*this, FIX::UnderlyingCFICode);
+			FIELD_SET(*this, FIX::UnderlyingSecurityType);
+			FIELD_SET(*this, FIX::UnderlyingSecuritySubType);
+			FIELD_SET(*this, FIX::UnderlyingMaturityMonthYear);
+			FIELD_SET(*this, FIX::UnderlyingMaturityDate);
+			FIELD_SET(*this, FIX::UnderlyingCouponPaymentDate);
+			FIELD_SET(*this, FIX::UnderlyingIssueDate);
+			FIELD_SET(*this, FIX::UnderlyingRepoCollateralSecurityType);
+			FIELD_SET(*this, FIX::UnderlyingRepurchaseTerm);
+			FIELD_SET(*this, FIX::UnderlyingRepurchaseRate);
+			FIELD_SET(*this, FIX::UnderlyingFactor);
+			FIELD_SET(*this, FIX::UnderlyingCreditRating);
+			FIELD_SET(*this, FIX::UnderlyingInstrRegistry);
+			FIELD_SET(*this, FIX::UnderlyingCountryOfIssue);
+			FIELD_SET(*this, FIX::UnderlyingStateOrProvinceOfIssue);
+			FIELD_SET(*this, FIX::UnderlyingLocaleOfIssue);
+			FIELD_SET(*this, FIX::UnderlyingRedemptionDate);
+			FIELD_SET(*this, FIX::UnderlyingStrikePrice);
+			FIELD_SET(*this, FIX::UnderlyingStrikeCurrency);
+			FIELD_SET(*this, FIX::UnderlyingOptAttribute);
+			FIELD_SET(*this, FIX::UnderlyingContractMultiplier);
+			FIELD_SET(*this, FIX::UnderlyingCouponRate);
+			FIELD_SET(*this, FIX::UnderlyingSecurityExchange);
+			FIELD_SET(*this, FIX::UnderlyingIssuer);
+			FIELD_SET(*this, FIX::EncodedUnderlyingIssuerLen);
+			FIELD_SET(*this, FIX::EncodedUnderlyingIssuer);
+			FIELD_SET(*this, FIX::UnderlyingSecurityDesc);
+			FIELD_SET(*this, FIX::EncodedUnderlyingSecurityDescLen);
+			FIELD_SET(*this, FIX::EncodedUnderlyingSecurityDesc);
+			FIELD_SET(*this, FIX::UnderlyingCPProgram);
+			FIELD_SET(*this, FIX::UnderlyingCPRegType);
+			FIELD_SET(*this, FIX::UnderlyingCurrency);
+			FIELD_SET(*this, FIX::UnderlyingQty);
+			FIELD_SET(*this, FIX::UnderlyingPx);
+			FIELD_SET(*this, FIX::UnderlyingDirtyPrice);
+			FIELD_SET(*this, FIX::UnderlyingEndPrice);
+			FIELD_SET(*this, FIX::UnderlyingStartValue);
+			FIELD_SET(*this, FIX::UnderlyingCurrentValue);
+			FIELD_SET(*this, FIX::UnderlyingEndValue);
+			FIELD_SET(*this, FIX::UnderlyingAllocationPercent);
+			FIELD_SET(*this, FIX::UnderlyingSettlementType);
+			FIELD_SET(*this, FIX::UnderlyingCashAmount);
+			FIELD_SET(*this, FIX::UnderlyingCashType);
+			FIELD_SET(*this, FIX::UnderlyingUnitOfMeasure);
+			FIELD_SET(*this, FIX::UnderlyingTimeUnit);
+			FIELD_SET(*this, FIX::UnderlyingCapValue);
+			FIELD_SET(*this, FIX::UnderlyingSettlMethod);
+			FIELD_SET(*this, FIX::UnderlyingAdjustedQuantity);
+			FIELD_SET(*this, FIX::UnderlyingFXRate);
+			FIELD_SET(*this, FIX::UnderlyingFXRateCalc);
+			FIELD_SET(*this, FIX::UnderlyingSettlPrice);
+			FIELD_SET(*this, FIX::UnderlyingSettlPriceType);
+			FIELD_SET(*this, FIX::NoUnderlyingAmounts);
+			class NoUnderlyingAmounts: public FIX::Group
+			{
+			public:
+				NoUnderlyingAmounts() : FIX::Group(984,985,FIX::message_order(985,986,987,988,0)) {}
+				FIELD_SET(*this, FIX::UnderlyingPayAmount);
+				FIELD_SET(*this, FIX::UnderlyingCollectAmount);
+				FIELD_SET(*this, FIX::UnderlyingSettlementDate);
+				FIELD_SET(*this, FIX::UnderlyingSettlementStatus);
+			};
+			FIELD_SET(*this, FIX::UnderlyingDeliveryAmount);
+		};
+		FIELD_SET(*this, FIX::NoPositions);
+		class NoPositions: public FIX::Group
+		{
+		public:
+			NoPositions() : FIX::Group(702,703,FIX::message_order(703,704,705,706,539,976,0)) {}
+			FIELD_SET(*this, FIX::PosType);
+			FIELD_SET(*this, FIX::LongQty);
+			FIELD_SET(*this, FIX::ShortQty);
+			FIELD_SET(*this, FIX::PosQtyStatus);
+			FIELD_SET(*this, FIX::NoNestedPartyIDs);
+			class NoNestedPartyIDs: public FIX::Group
+			{
+			public:
+				NoNestedPartyIDs() : FIX::Group(539,524,FIX::message_order(524,525,538,804,0)) {}
+				FIELD_SET(*this, FIX::NestedPartyID);
+				FIELD_SET(*this, FIX::NestedPartyIDSource);
+				FIELD_SET(*this, FIX::NestedPartyRole);
+				FIELD_SET(*this, FIX::NoNestedPartySubIDs);
+				class NoNestedPartySubIDs: public FIX::Group
+				{
+				public:
+					NoNestedPartySubIDs() : FIX::Group(804,545,FIX::message_order(545,805,0)) {}
+					FIELD_SET(*this, FIX::NestedPartySubID);
+					FIELD_SET(*this, FIX::NestedPartySubIDType);
+				};
+			};
+			FIELD_SET(*this, FIX::QuantityDate);
+		};
+		FIELD_SET(*this, FIX::NoPosAmt);
+		class NoPosAmt: public FIX::Group
+		{
+		public:
+			NoPosAmt() : FIX::Group(753,707,FIX::message_order(707,708,1055,0)) {}
+			FIELD_SET(*this, FIX::PosAmtType);
+			FIELD_SET(*this, FIX::PosAmt);
+			FIELD_SET(*this, FIX::PositionCurrency);
+		};
+		FIELD_SET(*this, FIX::RegistStatus);
+		FIELD_SET(*this, FIX::DeliveryDate);
+		FIELD_SET(*this, FIX::Text);
+		FIELD_SET(*this, FIX::EncodedTextLen);
+		FIELD_SET(*this, FIX::EncodedText);
+		FIELD_SET(*this, FIX::MatchStatus);
+		FIELD_SET(*this, FIX::PriceType);
+		FIELD_SET(*this, FIX::SettlCurrency);
+		FIELD_SET(*this, FIX::MessageEventSource);
+	};
+
+}
+
+#endif /* FIX42_HSPOSITIONREPORT_H_ */

+ 236 - 0
api/fix/src/CCall/HsRequestForPositions.h

@@ -0,0 +1,236 @@
+/*
+ * HsRequestForPositions.h
+ *
+ *  Created on: Jan 18, 2014
+ *      Author: miguoliang
+ */
+
+#ifndef FIX42_HSREQUESTFORPOSITIONS_H
+#define FIX42_HSREQUESTFORPOSITIONS_H
+
+#include "quickfix/fix44/Message.h"
+
+namespace FIX44 {
+
+class HsRequestForPositions: public Message {
+public:
+	HsRequestForPositions() : Message(MsgType()) {}
+	HsRequestForPositions(const FIX::Message& m) : Message(m) {}
+	HsRequestForPositions(const Message& m) : Message(m) {}
+	HsRequestForPositions(const HsRequestForPositions& m) : Message(m) {}
+
+	static FIX::MsgType MsgType() { return FIX::MsgType("UAN"); }
+
+	FIELD_SET(*this, FIX::StartDate);
+	FIELD_SET(*this, FIX::EndDate);
+	FIELD_SET(*this, FIX::OrderID);
+
+    FIELD_SET(*this, FIX::PosReqID);
+    FIELD_SET(*this, FIX::PosReqType);
+    FIELD_SET(*this, FIX::MatchStatus);
+    FIELD_SET(*this, FIX::SubscriptionRequestType);
+    FIELD_SET(*this, FIX::NoPartyIDs);
+    class NoPartyIDs: public FIX::Group
+    {
+    public:
+    	NoPartyIDs() : FIX::Group(453,448,FIX::message_order(448,447,452,802,0)) {}
+    	FIELD_SET(*this, FIX::PartyID);
+    	FIELD_SET(*this, FIX::PartyIDSource);
+    	FIELD_SET(*this, FIX::PartyRole);
+    	FIELD_SET(*this, FIX::NoPartySubIDs);
+    	class NoPartySubIDs: public FIX::Group
+    	{
+    	public:
+    		NoPartySubIDs() : FIX::Group(802,523,FIX::message_order(523,803,0)) {}
+    		FIELD_SET(*this, FIX::PartySubID);
+    		FIELD_SET(*this, FIX::PartySubIDType);
+    	};
+    };
+    FIELD_SET(*this, FIX::Account);
+    FIELD_SET(*this, FIX::AcctIDSource);
+    FIELD_SET(*this, FIX::AccountType);
+    FIELD_SET(*this, FIX::Symbol);
+    FIELD_SET(*this, FIX::SymbolSfx);
+    FIELD_SET(*this, FIX::SecurityID);
+    FIELD_SET(*this, FIX::SecurityIDSource);
+    FIELD_SET(*this, FIX::Product);
+    FIELD_SET(*this, FIX::CFICode);
+    FIELD_SET(*this, FIX::SecurityType);
+    FIELD_SET(*this, FIX::SecuritySubType);
+    FIELD_SET(*this, FIX::MaturityMonthYear);
+    FIELD_SET(*this, FIX::MaturityDate);
+    FIELD_SET(*this, FIX::CouponPaymentDate);
+    FIELD_SET(*this, FIX::IssueDate);
+    FIELD_SET(*this, FIX::RepoCollateralSecurityType);
+    FIELD_SET(*this, FIX::RepurchaseTerm);
+    FIELD_SET(*this, FIX::RepurchaseRate);
+    FIELD_SET(*this, FIX::Factor);
+    FIELD_SET(*this, FIX::CreditRating);
+    FIELD_SET(*this, FIX::InstrRegistry);
+    FIELD_SET(*this, FIX::CountryOfIssue);
+    FIELD_SET(*this, FIX::StateOrProvinceOfIssue);
+    FIELD_SET(*this, FIX::LocaleOfIssue);
+    FIELD_SET(*this, FIX::RedemptionDate);
+    FIELD_SET(*this, FIX::StrikePrice);
+    FIELD_SET(*this, FIX::StrikeCurrency);
+    FIELD_SET(*this, FIX::OptAttribute);
+    FIELD_SET(*this, FIX::ContractMultiplier);
+    FIELD_SET(*this, FIX::CouponRate);
+    FIELD_SET(*this, FIX::SecurityExchange);
+    FIELD_SET(*this, FIX::Issuer);
+    FIELD_SET(*this, FIX::EncodedIssuerLen);
+    FIELD_SET(*this, FIX::EncodedIssuer);
+    FIELD_SET(*this, FIX::SecurityDesc);
+    FIELD_SET(*this, FIX::EncodedSecurityDescLen);
+    FIELD_SET(*this, FIX::EncodedSecurityDesc);
+    FIELD_SET(*this, FIX::Pool);
+    FIELD_SET(*this, FIX::ContractSettlMonth);
+    FIELD_SET(*this, FIX::CPProgram);
+    FIELD_SET(*this, FIX::CPRegType);
+    FIELD_SET(*this, FIX::DatedDate);
+    FIELD_SET(*this, FIX::InterestAccrualDate);
+    FIELD_SET(*this, FIX::SecurityStatus);
+    FIELD_SET(*this, FIX::SettleOnOpenFlag);
+    FIELD_SET(*this, FIX::InstrmtAssignmentMethod);
+    FIELD_SET(*this, FIX::StrikeMultiplier);
+    FIELD_SET(*this, FIX::StrikeValue);
+    FIELD_SET(*this, FIX::MinPriceIncrement);
+    FIELD_SET(*this, FIX::PositionLimit);
+    FIELD_SET(*this, FIX::NTPositionLimit);
+    FIELD_SET(*this, FIX::UnitOfMeasure);
+    FIELD_SET(*this, FIX::TimeUnit);
+    FIELD_SET(*this, FIX::MaturityTime);
+    FIELD_SET(*this, FIX::Currency);
+    FIELD_SET(*this, FIX::NoLegs);
+    class NoLegs: public FIX::Group
+    {
+    public:
+    	NoLegs() : FIX::Group(555,600,FIX::message_order(600,601,602,603,607,608,609,764,610,611,248,249,250,251,252,253,257,599,596,597,598,254,612,942,613,614,615,616,617,618,619,620,621,622,623,624,556,740,739,955,956,999,1001,0)) {}
+    	FIELD_SET(*this, FIX::LegSymbol);
+    	FIELD_SET(*this, FIX::LegSymbolSfx);
+		FIELD_SET(*this, FIX::LegSecurityID);
+		FIELD_SET(*this, FIX::LegSecurityIDSource);
+		FIELD_SET(*this, FIX::LegProduct);
+		FIELD_SET(*this, FIX::LegCFICode);
+		FIELD_SET(*this, FIX::LegSecurityType);
+		FIELD_SET(*this, FIX::LegSecuritySubType);
+		FIELD_SET(*this, FIX::LegMaturityMonthYear);
+		FIELD_SET(*this, FIX::LegMaturityDate);
+		FIELD_SET(*this, FIX::LegCouponPaymentDate);
+		FIELD_SET(*this, FIX::LegIssueDate);
+		FIELD_SET(*this, FIX::LegRepoCollateralSecurityType);
+		FIELD_SET(*this, FIX::LegRepurchaseTerm);
+		FIELD_SET(*this, FIX::LegRepurchaseRate);
+		FIELD_SET(*this, FIX::LegFactor);
+		FIELD_SET(*this, FIX::LegCreditRating);
+		FIELD_SET(*this, FIX::LegInstrRegistry);
+		FIELD_SET(*this, FIX::LegCountryOfIssue);
+		FIELD_SET(*this, FIX::LegStateOrProvinceOfIssue);
+		FIELD_SET(*this, FIX::LegLocaleOfIssue);
+		FIELD_SET(*this, FIX::LegRedemptionDate);
+		FIELD_SET(*this, FIX::LegStrikePrice);
+		FIELD_SET(*this, FIX::LegStrikeCurrency);
+		FIELD_SET(*this, FIX::LegOptAttribute);
+		FIELD_SET(*this, FIX::LegContractMultiplier);
+		FIELD_SET(*this, FIX::LegCouponRate);
+		FIELD_SET(*this, FIX::LegSecurityExchange);
+		FIELD_SET(*this, FIX::LegIssuer);
+		FIELD_SET(*this, FIX::EncodedLegIssuerLen);
+		FIELD_SET(*this, FIX::EncodedLegIssuer);
+		FIELD_SET(*this, FIX::LegSecurityDesc);
+		FIELD_SET(*this, FIX::EncodedLegSecurityDescLen);
+		FIELD_SET(*this, FIX::EncodedLegSecurityDesc);
+		FIELD_SET(*this, FIX::LegRatioQty);
+		FIELD_SET(*this, FIX::LegSide);
+		FIELD_SET(*this, FIX::LegCurrency);
+		FIELD_SET(*this, FIX::LegPool);
+		FIELD_SET(*this, FIX::LegDatedDate);
+		FIELD_SET(*this, FIX::LegContractSettlMonth);
+		FIELD_SET(*this, FIX::LegInterestAccrualDate);
+		FIELD_SET(*this, FIX::LegUnitOfMeasure);
+		FIELD_SET(*this, FIX::LegTimeUnit);
+    };
+    FIELD_SET(*this, FIX::NoUnderlyings);
+    class NoUnderlyings: public FIX::Group
+    {
+    public:
+    	NoUnderlyings() : FIX::Group(711,311,FIX::message_order(311,312,309,305,462,463,310,763,313,542,241,242,243,244,245,246,256,595,592,593,594,247,316,941,317,436,435,308,306,362,363,307,364,365,877,878,318,879,810,882,883,884,885,886,972,975,973,974,998,1000,1038,1039,1044,1045,1046,0)) {}
+		FIELD_SET(*this, FIX::UnderlyingSymbol);
+		FIELD_SET(*this, FIX::UnderlyingSymbolSfx);
+		FIELD_SET(*this, FIX::UnderlyingSecurityID);
+		FIELD_SET(*this, FIX::UnderlyingSecurityIDSource);
+		FIELD_SET(*this, FIX::UnderlyingProduct);
+		FIELD_SET(*this, FIX::UnderlyingCFICode);
+		FIELD_SET(*this, FIX::UnderlyingSecurityType);
+		FIELD_SET(*this, FIX::UnderlyingSecuritySubType);
+		FIELD_SET(*this, FIX::UnderlyingMaturityMonthYear);
+		FIELD_SET(*this, FIX::UnderlyingMaturityDate);
+		FIELD_SET(*this, FIX::UnderlyingCouponPaymentDate);
+		FIELD_SET(*this, FIX::UnderlyingIssueDate);
+		FIELD_SET(*this, FIX::UnderlyingRepoCollateralSecurityType);
+		FIELD_SET(*this, FIX::UnderlyingRepurchaseTerm);
+		FIELD_SET(*this, FIX::UnderlyingRepurchaseRate);
+		FIELD_SET(*this, FIX::UnderlyingFactor);
+		FIELD_SET(*this, FIX::UnderlyingCreditRating);
+		FIELD_SET(*this, FIX::UnderlyingInstrRegistry);
+		FIELD_SET(*this, FIX::UnderlyingCountryOfIssue);
+		FIELD_SET(*this, FIX::UnderlyingStateOrProvinceOfIssue);
+		FIELD_SET(*this, FIX::UnderlyingLocaleOfIssue);
+		FIELD_SET(*this, FIX::UnderlyingRedemptionDate);
+		FIELD_SET(*this, FIX::UnderlyingStrikePrice);
+		FIELD_SET(*this, FIX::UnderlyingStrikeCurrency);
+		FIELD_SET(*this, FIX::UnderlyingOptAttribute);
+		FIELD_SET(*this, FIX::UnderlyingContractMultiplier);
+		FIELD_SET(*this, FIX::UnderlyingCouponRate);
+		FIELD_SET(*this, FIX::UnderlyingSecurityExchange);
+		FIELD_SET(*this, FIX::UnderlyingIssuer);
+		FIELD_SET(*this, FIX::EncodedUnderlyingIssuerLen);
+		FIELD_SET(*this, FIX::EncodedUnderlyingIssuer);
+		FIELD_SET(*this, FIX::UnderlyingSecurityDesc);
+		FIELD_SET(*this, FIX::EncodedUnderlyingSecurityDescLen);
+		FIELD_SET(*this, FIX::EncodedUnderlyingSecurityDesc);
+		FIELD_SET(*this, FIX::UnderlyingCPProgram);
+		FIELD_SET(*this, FIX::UnderlyingCPRegType);
+		FIELD_SET(*this, FIX::UnderlyingCurrency);
+		FIELD_SET(*this, FIX::UnderlyingQty);
+		FIELD_SET(*this, FIX::UnderlyingPx);
+		FIELD_SET(*this, FIX::UnderlyingDirtyPrice);
+		FIELD_SET(*this, FIX::UnderlyingEndPrice);
+		FIELD_SET(*this, FIX::UnderlyingStartValue);
+		FIELD_SET(*this, FIX::UnderlyingCurrentValue);
+		FIELD_SET(*this, FIX::UnderlyingEndValue);
+		FIELD_SET(*this, FIX::UnderlyingAllocationPercent);
+		FIELD_SET(*this, FIX::UnderlyingSettlementType);
+		FIELD_SET(*this, FIX::UnderlyingCashAmount);
+		FIELD_SET(*this, FIX::UnderlyingCashType);
+		FIELD_SET(*this, FIX::UnderlyingUnitOfMeasure);
+		FIELD_SET(*this, FIX::UnderlyingTimeUnit);
+		FIELD_SET(*this, FIX::UnderlyingCapValue);
+		FIELD_SET(*this, FIX::UnderlyingSettlMethod);
+		FIELD_SET(*this, FIX::UnderlyingAdjustedQuantity);
+		FIELD_SET(*this, FIX::UnderlyingFXRate);
+		FIELD_SET(*this, FIX::UnderlyingFXRateCalc);
+    };
+    FIELD_SET(*this, FIX::ClearingBusinessDate);
+    FIELD_SET(*this, FIX::SettlSessID);
+    FIELD_SET(*this, FIX::SettlSessSubID);
+    FIELD_SET(*this, FIX::NoTradingSessions);
+    class NoTradingSessions: public FIX::Group
+    {
+    public:
+    	NoTradingSessions() : FIX::Group(386,336,FIX::message_order(336,625,0)) {}
+    	FIELD_SET(*this, FIX::TradingSessionID);
+    	FIELD_SET(*this, FIX::TradingSessionSubID);
+    };
+	FIELD_SET(*this, FIX::TransactTime);
+	FIELD_SET(*this, FIX::ResponseTransportType);
+	FIELD_SET(*this, FIX::ResponseDestination);
+	FIELD_SET(*this, FIX::Text);
+	FIELD_SET(*this, FIX::EncodedTextLen);
+	FIELD_SET(*this, FIX::EncodedText);
+	FIELD_SET(*this, FIX::SettlCurrency);
+};
+
+} /* namespace FIX44 */
+
+#endif /* FIX44_HSREQUESTFORPOSITIONS_H */

+ 16 - 0
api/fix/src/CCall/Makefile

@@ -0,0 +1,16 @@
+OBJS = Application.o cfunc.o
+CC = g++
+INCLUDES :=-I/usr/local/include -I../sync -I../include -I.
+CPPFLAGS :=-fPIC -Wall -g -std=c++11 -lm -O2 $(INCLUDES) 
+
+libfix.so : $(OBJS)
+	ar rcs libfix.a $^
+	$(CC) -shared  $^ -o libfix.so -lm -lsignalsync -lquickfix
+
+install : libfix.so
+	sudo cp libfix.so /usr/lib
+
+.python : clean
+clean:
+	-rm -rf *.o
+	-rm -rf libfix.so libfix.a

+ 88 - 0
api/fix/src/CCall/MarketDataSnapshotFullRefresh.h

@@ -0,0 +1,88 @@
+#ifndef FIX42_MARKETDATASNAPSHOTFULLREFRESH_H
+#define FIX42_MARKETDATASNAPSHOTFULLREFRESH_H
+
+#include "quickfix/fix42/Message.h"
+
+namespace FIX42
+{
+
+  class MarketDataSnapshotFullRefresh : public Message
+  {
+  public:
+    MarketDataSnapshotFullRefresh() : Message(MsgType()) {}
+    MarketDataSnapshotFullRefresh(const FIX::Message& m) : Message(m) {}
+    MarketDataSnapshotFullRefresh(const Message& m) : Message(m) {}
+    MarketDataSnapshotFullRefresh(const MarketDataSnapshotFullRefresh& m) : Message(m) {}
+    static FIX::MsgType MsgType() { return FIX::MsgType("W"); }
+
+    MarketDataSnapshotFullRefresh(
+      const FIX::Symbol& aSymbol )
+    : Message(MsgType())
+    {
+      set(aSymbol);
+    }
+
+    FIELD_SET(*this, FIX::MDReqID);
+    FIELD_SET(*this, FIX::Symbol);
+    FIELD_SET(*this, FIX::SymbolSfx);
+    FIELD_SET(*this, FIX::SecurityID);
+    FIELD_SET(*this, FIX::IDSource);
+    FIELD_SET(*this, FIX::SecurityType);
+    FIELD_SET(*this, FIX::MaturityMonthYear);
+    FIELD_SET(*this, FIX::MaturityDay);
+    FIELD_SET(*this, FIX::PutOrCall);
+    FIELD_SET(*this, FIX::StrikePrice);
+    FIELD_SET(*this, FIX::OptAttribute);
+    FIELD_SET(*this, FIX::ContractMultiplier);
+    FIELD_SET(*this, FIX::CouponRate);
+    FIELD_SET(*this, FIX::SecurityExchange);
+    FIELD_SET(*this, FIX::Issuer);
+    FIELD_SET(*this, FIX::EncodedIssuerLen);
+    FIELD_SET(*this, FIX::EncodedIssuer);
+    FIELD_SET(*this, FIX::SecurityDesc);
+    FIELD_SET(*this, FIX::EncodedSecurityDescLen);
+    FIELD_SET(*this, FIX::EncodedSecurityDesc);
+    FIELD_SET(*this, FIX::FinancialStatus);
+    FIELD_SET(*this, FIX::CorporateAction);
+    FIELD_SET(*this, FIX::TotalVolumeTraded);
+    FIELD_SET(*this, FIX::NoMDEntries);
+    class NoMDEntries: public FIX::Group
+    {
+    public:
+    NoMDEntries() : FIX::Group(268,269,FIX::message_order(269,270,15,271,272,273,274,275,336,276,277,282,283,284,286,59,432,126,110,18,287,37,299,288,289,346,290,58,354,355,0)) {}
+      FIELD_SET(*this, FIX::MDEntryType);
+      FIELD_SET(*this, FIX::MDEntryPx);
+      FIELD_SET(*this, FIX::Currency);
+      FIELD_SET(*this, FIX::MDEntrySize);
+      FIELD_SET(*this, FIX::MDEntryDate);
+      FIELD_SET(*this, FIX::MDEntryTime);
+      FIELD_SET(*this, FIX::TickDirection);
+      FIELD_SET(*this, FIX::MDMkt);
+      FIELD_SET(*this, FIX::TradingSessionID);
+      FIELD_SET(*this, FIX::QuoteCondition);
+      FIELD_SET(*this, FIX::TradeCondition);
+      FIELD_SET(*this, FIX::MDEntryOriginator);
+      FIELD_SET(*this, FIX::LocationID);
+      FIELD_SET(*this, FIX::DeskID);
+      FIELD_SET(*this, FIX::OpenCloseSettleFlag);
+      FIELD_SET(*this, FIX::TimeInForce);
+      FIELD_SET(*this, FIX::ExpireDate);
+      FIELD_SET(*this, FIX::ExpireTime);
+      FIELD_SET(*this, FIX::MinQty);
+      FIELD_SET(*this, FIX::ExecInst);
+      FIELD_SET(*this, FIX::SellerDays);
+      FIELD_SET(*this, FIX::OrderID);
+      FIELD_SET(*this, FIX::QuoteEntryID);
+      FIELD_SET(*this, FIX::MDEntryBuyer);
+      FIELD_SET(*this, FIX::MDEntrySeller);
+      FIELD_SET(*this, FIX::NumberOfOrders);
+      FIELD_SET(*this, FIX::MDEntryPositionNo);
+      FIELD_SET(*this, FIX::Text);
+      FIELD_SET(*this, FIX::EncodedTextLen);
+      FIELD_SET(*this, FIX::EncodedText);
+    };
+  };
+
+}
+
+#endif

+ 1167 - 0
api/fix/src/CCall/cfunc.cpp

@@ -0,0 +1,1167 @@
+#define _CRT_SECURE_NO_WARNINGS
+#include "quickfix/SessionSettings.h"
+#include "quickfix/Message.h"
+#include "quickfix/Session.h"
+#include <iostream>
+#include <cstring>
+#include <cstdlib>
+#include "string.h"
+#ifndef _cplusplus
+#define _cplusplus
+#include "cfunc.h"
+#endif
+
+#include "Application.h"
+#include "quickfix/fix44/Logon.h"
+#include "quickfix/fix44/NewOrderSingle.h"
+#include "quickfix/fix44/ExecutionReport.h"
+#include "quickfix/fix44/OrderCancelRequest.h"
+#include "quickfix/fix44/OrderCancelReject.h"
+#include "quickfix/fix44/OrderCancelReplaceRequest.h"
+#include "quickfix/fix44/MarketDataRequest.h"
+#include "quickfix/fix44/OrderStatusRequest.h"
+//#include "quickfix/FIX44/TradeCaptureReportRequest.h"
+
+#include "HsCollectiveOrder.h"
+#include "HsCollectiveCancelRequest.h"
+#include "HsCollectiveOrderStatusRequest.h"
+#include "HsBatchOrder.h"
+#include "HsRequestForPositions.h"
+#include "HsPositionMaintenanceRequest.h"
+
+static void * IApplicationCB = NULL;
+void IApplicationSetCB(void *cb) {
+    IApplicationCB = cb;
+}
+
+struct SessionSettings {
+	SessionSettings(FIX::SessionSettings &ss) : obj(ss) {}
+	FIX::SessionSettings &obj;
+};
+
+struct Dictionary {
+	Dictionary(const FIX::Dictionary &dict) : obj(dict) {}
+	const FIX::Dictionary &obj;
+};
+
+struct AppTradeClient {
+	Application *obj;
+};
+
+static inline const FIX::SessionID & SessionIDRef(SessionID * sid) {
+    return *((const FIX::SessionID *)sid);
+}
+
+static inline FIX::Message & MessageRef(Message *msg) {
+    return *((FIX::Message *)msg);
+}
+
+static inline const FIX::Message & MessageRef(const Message *msg) {
+    return *((const FIX::Message *)msg);
+}
+
+void PrintHello(char *data[], int n) {
+    std::cout << data << " " << n << std::endl;
+    for (int i = 0; i < n; i++) {
+        std::cout << data[i] << std::endl;
+    }
+}
+
+SessionID * WarpSessionID(const void *sid) {
+    return (SessionID *)sid;
+}
+
+//session setting
+SessionSettings * NewSessionSettings(const char *file)
+{
+		FIX::SessionSettings settings(file);
+		FIX::SessionSettings *ss_obj = new FIX::SessionSettings(file);
+		SessionSettings *ss = new SessionSettings(*ss_obj);
+		return ss;
+ 
+}
+
+void FreeSessionSettings(SessionSettings* ss) {
+	delete &(ss->obj);
+	delete ss;
+}
+
+Dictionary* SessionSettingsGet(SessionSettings *ss, SessionID *sid)
+{
+	Dictionary *dict = new Dictionary(ss->obj.get(SessionIDRef(sid)));
+	return dict;
+}
+
+void FreeDictionary(Dictionary *dict) {
+	delete dict;
+}
+
+int DictionaryHas(Dictionary *dict, const char *find) {
+	return dict->obj.has(find);
+}
+
+const char * DictionaryGetString(Dictionary *dict, const char *find) {
+	return dict->obj.getString(find).c_str();
+}
+
+Message * WarpMessage(void *msg) {
+	return (Message *)msg;
+}
+
+const Message * WarpConstMessage(const void *msg) {
+	return (const Message *)msg;
+}
+
+void MessageSetField(Message *msg, int field, const char *value) {
+	MessageRef(msg).setField(field, value);
+}
+
+int MessageSend(Message *msg) {
+	return FIX::Session::sendToTarget(MessageRef(msg));
+}
+
+AppTradeClient * NewAppTradeClient(IApplication *app, SessionSettings *setting) {
+
+    AppTradeClient *trade = new AppTradeClient();
+    try {
+	    trade->obj = new Application(trade, app, setting->obj);
+        trade->obj->init();
+        trade->obj->IApp->onCreate(trade, trade->obj->getSessionID());
+    } catch (std::exception& e) {
+        std::cout << e.what() << std::endl;
+        return NULL;
+    }
+	return trade;
+}
+
+
+void FreeAppTradeClient(AppTradeClient * app) {
+	delete app->obj;
+	delete app;
+}
+
+void AppTradeClientStart(AppTradeClient * app) {
+	app->obj->start();
+}
+
+int AppTradeClientRun(AppTradeClient * app) {
+	return app->obj->run();
+}
+
+void AppTradeClientStop(AppTradeClient * app) {
+	app->obj->stop();
+}
+
+
+
+
+
+SessionID * AppTradeClientSessionID(AppTradeClient * app) {
+	return app->obj->getSessionID();
+}
+
+const char * AppTradeClientSenderCompID(AppTradeClient * app) {
+	return app->obj->getSenderCompID().c_str();
+}
+
+const char * AppTradeClientTargetCompID(AppTradeClient * app) {
+	return app->obj->getTargetCompID().c_str();
+}
+
+const char * AppTradeClientClOrdID(AppTradeClient * app) {
+	return app->obj->getOrderId().c_str();
+}
+
+const char * AppTradeClientOrigClOrdID(AppTradeClient * app, const Message *msg){
+	return MessageRef(msg).getField(11).c_str();
+}
+int GetFieldData(const Message * msg,int field ,OrderInfo * orderinfo){
+	switch (field){
+	case Account: {
+			FIX::Account Account;
+			MessageRef(msg).getField(Account);
+			strncpy(orderinfo->Account, Account.getValue().c_str(), 16);
+		}
+		break;
+	case AvgPx: {
+			FIX::AvgPx AvgPx;
+			MessageRef(msg).getField(AvgPx);
+			orderinfo->AvgPx =  AvgPx.getValue();
+		}
+		break;
+	case ClOrdID: {
+			FIX::ClOrdID ClOrdID;
+			MessageRef(msg).getField(ClOrdID);
+			strncpy(orderinfo->ClOrdID , ClOrdID.getValue().c_str(), 32);
+		}
+		break;
+	case OrigClOrdID: {
+			FIX::OrigClOrdID OrigClOrdID;
+			MessageRef(msg).getField(OrigClOrdID);
+			strncpy(orderinfo->OrigClOrdID , OrigClOrdID.getValue().c_str(), 32);
+		}
+		break;
+	case OrdStatusReqID: {
+			FIX::OrdStatusReqID OrdStatusReqID;
+			MessageRef(msg).getField(OrdStatusReqID);
+			strncpy(orderinfo->OrdStatusReqID , OrdStatusReqID.getValue().c_str(), 32);
+		}
+		break;
+	case CumQty: {
+			FIX::CumQty CumQty;
+			MessageRef(msg).getField(CumQty);
+			orderinfo->CumQty =  CumQty.getValue();
+		}
+		break;
+	case SecurityIDSource: {
+			FIX::SecurityIDSource SecurityIDSource;
+			MessageRef(msg).getField(SecurityIDSource);
+			strncpy(orderinfo->SecurityIDSource , SecurityIDSource.getValue().c_str(), 2);
+		}
+		break;
+	case TimeInForce: {
+			FIX::TimeInForce TimeInForce;
+			MessageRef(msg).getField(TimeInForce);
+			orderinfo->TimeInForce =  TimeInForce.getValue();
+		}
+		break;
+	case ExecID: {
+			FIX::ExecID ExecID;
+			MessageRef(msg).getField(ExecID);
+			strncpy(orderinfo->ExecID ,  ExecID.getValue().c_str(), 32);
+		}
+		break;
+	case SecurityID: {
+			FIX::SecurityID SecurityID;
+			MessageRef(msg).getField(SecurityID);
+            strncpy(orderinfo->SecurityID,  SecurityID.getValue().c_str(), 8);
+		}
+		break;
+	case LastPx: {
+			FIX::LastPx LastPx;
+			MessageRef(msg).getField(LastPx);
+			orderinfo->LastPx =  LastPx.getValue();
+		}
+		break;
+	case LastQty: {
+			FIX::LastQty LastQty;
+			MessageRef(msg).getField(LastQty);
+			orderinfo->LastQty =  LastQty.getValue();
+		}
+		break;
+	case OrderID: {
+			FIX::OrderID OrderID;
+			MessageRef(msg).getField(OrderID);
+			strncpy(orderinfo->OrderID ,  OrderID.getValue().c_str(), 32);
+		}
+		break;
+	case OrderQty: {
+			FIX::OrderQty OrderQty;
+			MessageRef(msg).getField(OrderQty);
+			orderinfo->OrderQty =  OrderQty.getValue();
+		}
+		break;
+	case OrdStatus: {
+			FIX::OrdStatus OrdStatus;
+			MessageRef(msg).getField(OrdStatus);
+			orderinfo->OrdStatus =  OrdStatus.getValue();
+		}
+		break;
+	case Price: {
+			FIX::Price Price;
+			MessageRef(msg).getField(Price);
+			orderinfo->Price =  Price.getValue();
+			std::cout << "price" << orderinfo->Price<<std::endl;
+		}
+		break;
+	case Side: {
+			FIX::Side Side;
+			MessageRef(msg).getField(Side);
+			orderinfo->Side =  Side.getValue();
+		}
+		break;
+	case TransactTime: {
+			FIX::TransactTime TransactTime;
+			MessageRef(msg).getField(TransactTime);
+			orderinfo->TransactTime =  TransactTime.getValue().getTimeT();
+			orderinfo->Millisecond = TransactTime.getValue().getMillisecond();
+		}
+		break;
+	case ExecType: {
+			FIX::ExecType ExecType;
+			MessageRef(msg).getField(ExecType);
+			orderinfo->ExecType =  ExecType.getValue();
+		}
+		break;
+	case LeavesQty: {
+			FIX::LeavesQty LeavesQty;
+			MessageRef(msg).getField(LeavesQty);
+			orderinfo->LeavesQty =  LeavesQty.getValue();
+		}
+		break;
+	case SecondaryExecID: {
+			FIX::SecondaryExecID SecondaryExecID;
+			MessageRef(msg).getField(SecondaryExecID);
+			strncpy(orderinfo->SecondaryExecID ,  SecondaryExecID.getValue().c_str(),30);
+		}
+		break;
+	case OrdRejReason: {
+			FIX::OrdRejReason OrdRejReason;
+			MessageRef(msg).getField(OrdRejReason);
+			orderinfo->OrdRejReason = OrdRejReason.getValue();
+		}
+		break;
+	case OrdType: {
+			FIX::OrdType OrdType;
+			MessageRef(msg).getField(OrdType);
+			orderinfo->OrdType = OrdType.getValue();
+		}
+		break;
+	case Text: {
+			FIX::Text Text;
+			MessageRef(msg).getField(Text);
+            std::string str = Text.getValue();
+            orderinfo->Text = (char *)malloc(str.length() + 1);
+			strncpy(orderinfo->Text , Text.getValue().c_str(), str.length() + 1);
+		}
+		break;
+	case Symbol:
+		{
+				   FIX::Symbol Symbol;
+				   MessageRef(msg).getField(Symbol);
+				   std::string str = Symbol.getValue();
+				   strncpy(orderinfo->Symbol, Symbol.getValue().c_str(), 16);
+		}
+		break;
+	}
+
+	return 1 ;
+}
+
+
+int InitOrderInfo(OrderInfo * orderinfo){
+	memset(orderinfo , 0 , sizeof(OrderInfo));
+	return 1;
+}
+
+int GetMsgType(const Message * msg ,char * cTypeValue)
+{
+	const std::string& msgTypeValue = MessageRef(msg).getHeader().getField(FIX::FIELD::MsgType);
+	strcpy(cTypeValue ,msgTypeValue.c_str());
+	return 1 ;
+}
+
+int GetFieldValue(const Message * msg ,int key ,char * cTypeValue)
+{
+	const std::string& msgTypeValue = MessageRef(msg).getField(key);
+	strcpy(cTypeValue ,msgTypeValue.c_str());
+	return 1 ;
+}
+
+
+int GetAccountStockInfo(const Message * msg, StockInfo* stockinfo,int *bLastRptRequested)
+{
+		try{
+				if (strcmp(MessageRef(msg).getField(724).c_str(), "9") != 0){
+					if (MessageRef(msg).getField(55) != ""){
+						memset(stockinfo , 0 , sizeof(StockInfo));
+						strcpy(stockinfo->Symbol, MessageRef(msg).getField(55).c_str());
+
+						FIX::FieldMap groupFM = MessageRef(msg).getGroupRef(2, 702);
+
+						stockinfo->Position = atoi(groupFM.getField(704).c_str());
+						strcpy(stockinfo->SecurityExchange, MessageRef(msg).getField(207).c_str());
+
+						int  nTag = MessageRef(msg).getField(912).find("Y");
+						if(nTag >=0){
+							*bLastRptRequested = 1 ;
+						}else{
+							*bLastRptRequested= 0 ;
+						}
+				
+					}
+					return 1 ;
+				}
+		}catch(std::exception& e) {
+			std::cout << e.what() << std::endl;
+			return 0;
+        }
+		return 0 ;
+}
+
+
+int GetAccountInfo(const Message * msg, AccountInfo* accountinfo,int *bLastRptRequested)
+{
+		try{
+				if (strcmp(MessageRef(msg).getField(724).c_str(), "9") == 0){
+					memset(accountinfo , 0 , sizeof(AccountInfo));
+					for(int i = 1 ;i <=6;i++){
+						FIX::FieldMap groupFM = MessageRef(msg).getGroupRef(i, 753);
+						std::string mv = groupFM.getField(707);
+						if (strcmp(mv.c_str() ,"FB") == 0){
+							accountinfo->FB = atof(groupFM.getField(708).c_str());
+						}else if(strcmp(mv.c_str() ,"FAV") == 0){
+							accountinfo->FAV = atof(groupFM.getField(708).c_str());
+						}else if(strcmp(mv.c_str() ,"MV") == 0){
+							accountinfo->MV = atof(groupFM.getField(708).c_str());
+						}else if(strcmp(mv.c_str() ,"F") == 0){
+							accountinfo->F = atof(groupFM.getField(708).c_str());
+						}else if(strcmp(mv.c_str() ,"SV") == 0){
+							accountinfo->SV = atof(groupFM.getField(708).c_str());
+						}else if(strcmp(mv.c_str() ,"FBF") == 0){
+							accountinfo->FBF = atof(groupFM.getField(708).c_str());
+						}
+					}
+
+				}
+				return 1 ;
+		}catch(std::exception& e) {
+			std::cout << e.what() << std::endl;
+			return 0;
+        }
+		return 0 ;
+}
+
+
+int GetOrderInfo(const Message * msg, OrderInfo * orderinfo){
+	FIX::MsgType msgType ;
+	MessageRef(msg).getHeader().getField(msgType);
+
+    try {
+		if (msgType == FIX::MsgType_ExecutionReport) {
+			InitOrderInfo(orderinfo);
+			
+			for(FIX::FieldMap::iterator it = MessageRef(msg).begin();it != MessageRef(msg).end();it++){
+				GetFieldData(msg , (*it).first , orderinfo) ;
+			}
+            return 1;
+		}
+		return 0;
+    } catch (std::exception& e) {
+        std::cout << e.what() << std::endl;
+        return 0;
+    }
+}
+
+time_t ParseTime(std::string  szTime)
+{
+	struct tm tm1;
+	time_t time1;
+	sscanf(szTime.c_str(), "%4d%2d%2d-%2d:%2d:%2d",
+		&tm1.tm_year,
+		&tm1.tm_mon,
+		&tm1.tm_mday,
+		&tm1.tm_hour,
+		&tm1.tm_min,
+		&tm1.tm_sec);
+
+	tm1.tm_year -= 1900;
+	tm1.tm_mon--;
+
+
+	tm1.tm_isdst = -1;
+
+	time1 = mktime(&tm1);
+	time1 += 28800;
+	return time1;
+}
+
+int GetMarketData(const Message *msg, TickFull *tick) {
+	FIX::MsgType msgType;
+	MessageRef(msg).getHeader().getField(msgType);
+    try {
+        if (msgType == FIX::MsgType_MarketDataSnapshotFullRefresh)
+	    {
+
+            FIX::NoMDEntries NoMDEntries;
+		    MessageRef(msg).getField(NoMDEntries);
+		/*	FIX::LastShares  LastShares;
+		    MessageRef(msg).getField(LastShares);
+			tick->LastShares = LastShares.getValue();
+			FIX::LastPx  LastPx ;
+			MessageRef(msg).getField(LastPx);
+			tick->LastPx =LastPx.getValue(); 
+			*/
+			FIX::Symbol  Symbol ;
+			MessageRef(msg).getField(Symbol);
+            memcpy(tick->Symbol, Symbol.getValue().c_str(), size_t(10));
+            int size = NoMDEntries.getValue();
+		    tick->AskCount = 0;
+		    tick->BidCount = 0;
+		    for(int i = 1; i <= size; i++) {
+	
+			    FIX::FieldMap& group = MessageRef(msg).getGroupRef(i, FIX::FIELD::NoMDEntries);
+	
+                FIX::MDEntryPx MDEntryPx;
+                FIX::MDEntrySize MDEntrySize;
+                FIX::MDEntryType MDEntryType;
+			    group.getField(MDEntryPx);
+			    group.getField(MDEntrySize);
+			    group.getField(MDEntryType);
+                if (i == 1) {
+	
+						FIX::Header header = MessageRef(msg).getHeader();
+
+						tick->Time = ParseTime(header.getField(52).c_str());
+				}
+                if(MDEntryType.getValue() == FIX::MDEntryType_BID) {
+                    if (tick->BidCount == MAX_BID_ASK_COUNT) {
+                        throw FIX::Exception("too many bid data", "");
+                    }
+				    tick->BidPrice[tick->BidCount] = MDEntryPx.getValue();
+                    tick->BidVolume[tick->BidCount] = MDEntrySize.getValue();
+				    tick->BidCount++;
+			    }else{
+                    if (tick->AskCount == MAX_BID_ASK_COUNT) {
+                        throw FIX::Exception("too many ask data", "");
+                    }
+				    tick->AskPrice[tick->AskCount] = MDEntryPx.getValue();
+                    tick->AskVolume[tick->AskCount] = MDEntrySize.getValue();
+				    tick->AskCount++;
+			    }
+		    }
+	    }  else {
+            return 0;
+        }
+    } catch (std::exception& e) {
+        std::cout << e.what() << std::endl;
+        return 0;
+    }
+    return 1;
+}
+
+
+/// Notification of a session begin created
+static void onCreate(AppTradeClient *trade, SessionID *sid) {
+	std::cout << std::endl << "onCreate - " << SessionIDRef(sid) << std::endl;
+}
+/// Notification of a session successfully logging on
+static void onLogon(AppTradeClient *trade, SessionID *sid) {
+	std::cout << std::endl << "onLogon - " << SessionIDRef(sid) << std::endl;
+}
+/// Notification of a session logging off or disconnecting
+static void onLogout(AppTradeClient *trade, SessionID *sid) {
+	std::cout << std::endl << "onLogout - " << SessionIDRef(sid) << std::endl;
+}
+/// Notification of admin message being sent to target
+static void toAdmin(AppTradeClient *trade, Message *msg, SessionID *sid) {
+	std::cout << std::endl << "toAdmin - " << SessionIDRef(sid) << "    " << MessageRef(msg) << std::endl;
+}
+/// Notification of app message being sent to target
+static void toApp(AppTradeClient *trade, Message *msg, SessionID *sid) {
+	std::cout << std::endl << "toApp - " << SessionIDRef(sid) << "    " << MessageRef(msg) << std::endl;
+}
+/// Notification of admin message being received from target
+static void fromAdmin(AppTradeClient *trade, const Message *msg, SessionID *sid) {
+	std::cout << std::endl << "fromAdmin - " << SessionIDRef(sid)<< "    " << MessageRef(msg) << std::endl;
+}
+/// Notification of app message being received from target
+static void fromApp(AppTradeClient *trade, const Message *msg, SessionID *sid) {
+	std::cout << std::endl << "fromApp - " << SessionIDRef(sid) << "    " << MessageRef(msg) << std::endl;
+}
+
+
+/// Notification of a session begin created
+static void onCreateCB(AppTradeClient *trade, SessionID *sid) {
+	//std::cout << std::endl << "onCreate - cb" << SessionIDRef(sid) << std::endl;
+    IApplication *app = trade->obj->IApp;
+    app->defaultCallBack(app->onCreateCB, trade, NULL, sid);
+}
+/// Notification of a session successfully logging on
+static void onLogonCB(AppTradeClient *trade, SessionID *sid) {
+		//std::cout << std::endl << "onLogonCB - cb" << SessionIDRef(sid) << std::endl;
+    IApplication *app = trade->obj->IApp;
+    app->defaultCallBack(app->onLogonCB, trade, NULL, sid);
+}
+/// Notification of a session logging off or disconnecting
+static void onLogoutCB(AppTradeClient *trade, SessionID *sid) {
+	//std::cout << std::endl << "onLogoutCB - cb" << SessionIDRef(sid) << std::endl;
+    IApplication *app = trade->obj->IApp;
+    app->defaultCallBack(app->onLogoutCB, trade, NULL, sid);
+}
+/// Notification of admin message being sent to target
+static void toAdminCB(AppTradeClient *trade, Message *msg, SessionID *sid) {
+	//std::cout << std::endl << "toAdminCB - cb" << SessionIDRef(sid) << std::endl;
+
+    IApplication *app = trade->obj->IApp;
+    app->defaultCallBack(app->toAdminCB, trade, msg, sid);
+}
+/// Notification of app message being sent to target
+static void toAppCB(AppTradeClient *trade, Message *msg, SessionID *sid) {
+	//std::cout << std::endl << "toAppCB - cb" << SessionIDRef(sid) << std::endl;
+    IApplication *app = trade->obj->IApp;
+    app->defaultCallBack(app->toAppCB, trade, msg, sid);
+}
+/// Notification of admin message being received from target
+static void fromAdminCB(AppTradeClient *trade, const Message *msg, SessionID *sid) {
+	//std::cout << std::endl << "fromAdminCB - cb" << SessionIDRef(sid) << std::endl;
+    IApplication *app = trade->obj->IApp;
+    app->defaultCallBack(app->fromAdminCB, trade, msg, sid);
+}
+/// Notification of app message being received from target
+static void fromAppCB(AppTradeClient *trade, const Message *msg, SessionID *sid) {
+	//std::cout << std::endl << "fromAppCB - cb" << SessionIDRef(sid) << std::endl;
+
+    IApplication *app = trade->obj->IApp;
+    app->defaultCallBack(app->fromAppCB, trade, msg, sid);
+}
+
+//application
+IApplication * NewCBIApplication(void *cb, 
+    void *onCreate, void *onLogon, void *onLogout, void *toAdmin, void *toApp, void *fromAdmin, void *fromApp) {
+    if (cb == NULL) {
+        cb = IApplicationCB;
+    }
+    if (cb == NULL) {
+        return NULL;
+    }
+	IApplication *iapp = new IApplication();
+    //callback1
+	iapp->fromAdmin = fromAdminCB;
+	iapp->fromApp = fromAppCB;
+	iapp->onCreate = onCreateCB;
+	iapp->onLogon = onLogonCB;
+	iapp->onLogout = onLogoutCB;
+	iapp->toAdmin = toAdminCB;
+	iapp->toApp = toAppCB;
+    //callback2 for go
+	iapp->fromAdminCB = fromAdmin;
+	iapp->fromAppCB = fromApp;
+	iapp->onCreateCB = onCreate;
+	iapp->onLogonCB = onLogon;
+	iapp->onLogoutCB = onLogout;
+	iapp->toAdminCB = toAdmin;
+	iapp->toAppCB = toApp;
+    iapp->defaultCallBack = (void (*) (void *pfunc, AppTradeClient*, const Message*, SessionID*))cb;
+	return iapp;
+}
+
+//application
+IApplication * NewDefaultIApplication() {
+	IApplication *iapp = new IApplication();
+	iapp->fromAdmin = fromAdmin;
+	iapp->fromApp = fromApp;
+	iapp->onCreate = onCreate;
+	iapp->onLogon = onLogon;
+	iapp->onLogout = onLogout;
+	iapp->toAdmin = toAdmin;
+	iapp->toApp = toApp;
+	return iapp;
+}
+
+IApplication * NewIApplication(void *onCreate, void *onLogon, void *onLogout, void *toAdmin, void *toApp, void *fromAdmin, void *fromApp) {
+	IApplication *iapp = new IApplication();
+	iapp->fromAdmin = (void (*)(AppTradeClient*, const Message*, SessionID*))fromAdmin;
+	iapp->fromApp = (void (*)(AppTradeClient*, const Message*, SessionID*))fromApp;
+	iapp->onCreate = (void (*)(AppTradeClient*, SessionID*))onCreate;
+	iapp->onLogon = (void (*)(AppTradeClient*, SessionID*))onLogon;
+	iapp->onLogout = (void (*)(AppTradeClient*, SessionID*))onLogout;
+	iapp->toAdmin = (void (*)(AppTradeClient*, Message*, SessionID*))toAdmin;
+	iapp->toApp = (void (*)(AppTradeClient*, Message*, SessionID*))toApp;
+	return iapp;
+}
+
+void FreeIApplication(IApplication *app) {
+	delete app;
+}
+
+int SendToTarget(FIX44::Message * pRequest , AppTradeClient * trade)
+{
+	FIX44::Header &header = pRequest->getHeader();
+	header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+	header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));
+	pRequest->setSessionID(SessionIDRef(trade->obj->getSessionID()));
+	return FIX::Session::sendToTarget(*pRequest);
+}
+
+
+int AppTradeClientSendOrder(AppTradeClient * trade, const char * aSymbol,const char *clordid, const char side, const char orderType, 
+	                        double qty, double price, const char *account) {
+    try
+    {
+		
+		FIX::OrdType ordType;
+		FIX44::NewOrderSingle newOrderSingle(
+		FIX::ClOrdID(clordid),
+		FIX::Side(side),
+		FIX::TransactTime(), ordType = FIX::OrdType(orderType));
+		newOrderSingle.set(FIX::HandlInst('1'));
+		newOrderSingle.set(FIX::OrderQty(qty));
+
+
+		//newOrderSingle.getHeader().setField(FIX::OnBehalfOfCompID(onBehalfOfCompID));
+		//newOrderSingle.set(FIX::SecondaryClOrdID(secondaryClOrdID));
+		newOrderSingle.set(FIX::Account(account));
+		
+		newOrderSingle.set(FIX::TransactTime());
+		
+		if ( ordType == FIX::OrdType_LIMIT || ordType == FIX::OrdType_STOP_LIMIT ) {
+			newOrderSingle.set(FIX::Price(price));
+		}
+		newOrderSingle.set(FIX::Symbol(aSymbol));
+
+		
+
+		FIX44::Header &header = newOrderSingle.getHeader();
+		header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+		header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));   
+		newOrderSingle.setSessionID(SessionIDRef(trade->obj->getSessionID()));
+		return FIX::Session::sendToTarget(newOrderSingle);
+    } catch ( std::exception & e ) {
+        std::cout << "Message Not Sent: " << e.what();
+	    return -1;
+	}
+}
+
+
+
+
+
+int AppTradeClientTradeCaptureReportRequest(AppTradeClient * trade, const char *reqId, int reqType, char subReqType) {
+	try
+    {
+   /*     FIX42::TradeCaptureReportRequest req;
+        req.setField(FIX::TradeRequestID(reqId));
+        req.setField(FIX::TradeRequestType(reqType));
+        req.setField(FIX::SubscriptionRequestType(subReqType));
+        FIX44::TradeCaptureReportRequest::NoDates date;
+        date.set(FIX::TransactTime(FIX::UtcTimeStamp (0, 0, 0, 20, 3, 2013)));
+        req.addGroup(date);
+        date.set(FIX::TransactTime());
+        req.addGroup(date);
+		FIX44::Header &header = req.getHeader();
+		header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+		header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));   
+		req.setSessionID(SessionIDRef(trade->obj->getSessionID()));
+        std::cout << req << std::endl;
+		return FIX::Session::sendToTarget(req);
+		*/
+		return -1;
+    } catch ( std::exception & e ) {
+        std::cout << "TradeCaptureReportRequest : " << e.what();
+	    return -1;
+	}
+}
+
+int AppTradeCilentOrderCancelReplace(AppTradeClient * trade, 
+									//const char *bookId, 
+									const char *aSymbol,
+									const char * origclordid ,
+									const char *clordid, 
+									const char aHandlInst,
+									const char side, 
+									const char orderType, 
+									double price,
+									double qty ,
+									const char * account,
+									const char * securitytype,
+									const char * orderid 
+									)
+{
+	try
+    {
+	 /*   FIX44::OrderCancelReplaceRequest * cancelReplaceRequest = new FIX44::OrderCancelReplaceRequest(
+	    FIX::OrigClOrdID(origclordid), FIX::ClOrdID(clordid),
+		FIX::HandlInst(aHandlInst),FIX::Symbol(aSymbol),
+	    FIX::Side(side), FIX::TransactTime(), FIX::OrdType(orderType));
+
+	    //cancelReplaceRequest->set( FIX::HandlInst(inst) );
+	    //cancelReplaceRequest->setField(48, bookId);
+	    //cancelReplaceRequest->setField(22, "8");
+
+	    cancelReplaceRequest->set( FIX::Price(price));
+	    cancelReplaceRequest->set( FIX::OrderQty(qty) );
+		cancelReplaceRequest->set(FIX::Account(account));
+		cancelReplaceRequest->set(FIX::SecurityType(securitytype));
+
+		cancelReplaceRequest->set(FIX::OrderID(orderid));
+
+	    int ret = SendToTarget(cancelReplaceRequest , trade);
+	    delete cancelReplaceRequest ;
+	    return ret ;
+		*/
+		return -1 ;
+    } catch ( std::exception & e ) {
+        std::cout << "order cancel : " << e.what();
+	    return -1;
+	}
+}
+
+int AppTradeClientCancelOrder(AppTradeClient * trade,
+							const char *aSymbol,
+							//const char *bookId,
+							const char *origClOrdID, 
+							const char *clordid, 
+							const char side,
+							//double qty,
+							const char * account,
+							//const char * securitytype,
+							const char * orderid )
+{
+    try
+    {
+		FIX44::OrderCancelRequest *orderCancelRequest = new FIX44::OrderCancelRequest(
+		FIX::OrigClOrdID(origClOrdID),
+		FIX::ClOrdID(clordid),
+		FIX::Side(side),
+		FIX::TransactTime());
+		//orderCancelRequest->setField(48, bookId);
+		//orderCancelRequest->setField(22, "8");
+
+		orderCancelRequest->set(FIX::Symbol(aSymbol));
+		//orderCancelRequest->set(FIX::OrderQty(qty));
+
+		orderCancelRequest->set(FIX::Account(account));
+		//orderCancelRequest->set(FIX::SecurityType(securitytype));
+		orderCancelRequest->set(FIX::OrderID(orderid));
+
+		FIX44::Header &header = orderCancelRequest->getHeader();
+		header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+		header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));
+		orderCancelRequest->setSessionID(SessionIDRef(trade->obj->getSessionID()));
+		int ret = FIX::Session::sendToTarget(*orderCancelRequest); 
+        std::cout << *orderCancelRequest << std::endl;
+		delete orderCancelRequest;
+		return ret;
+    } catch ( std::exception & e ) {
+        std::cout << "order cancel : " << e.what();
+	    return -1;
+	}
+}
+
+int AppTradeClientOrderStatus(AppTradeClient * trade,
+							const char *aSymbol,
+							//const char *bookId,
+							const char *clordId, 
+							//const char *ordStatusReqId,
+							const char side,
+							//const char * account,
+							//const char * securitytype,
+							const char * orderid
+							)
+{
+
+
+
+    try
+    {
+		FIX44::OrderStatusRequest *orderStatusRequest = new FIX44::OrderStatusRequest(
+		FIX::ClOrdID(clordId), FIX::Side(side));
+		//orderStatusRequest->setField(48, bookId);
+		//orderStatusRequest->setField(22, "8");
+        //orderStatusRequest->setField(OrdStatusReqID, ordStatusReqId);
+
+		orderStatusRequest->set(FIX::Symbol(aSymbol));
+		//orderStatusRequest->set(FIX::Account(account));
+		//orderStatusRequest->set(FIX::SecurityType(securitytype));
+		orderStatusRequest->set(FIX::OrderID(orderid));
+
+
+		FIX44::Header &header = orderStatusRequest->getHeader();
+		header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+		header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));   
+		orderStatusRequest->setSessionID(SessionIDRef(trade->obj->getSessionID()));
+		int ret = FIX::Session::sendToTarget(*orderStatusRequest);
+        std::cout << *orderStatusRequest << std::endl;
+		delete orderStatusRequest ;
+		return ret ;
+    } catch ( std::exception & e ) {
+        std::cout << "Message Not Sent: " << e.what();
+	    return -1;
+	}
+}
+
+int  AppTradeClientCollectiveOrder(AppTradeClient * trade ,
+							//const char *bookId,
+							const char *clordId, 
+							const char  aHandlInst,
+							const char  ordertype,
+							const char *sideStr,
+							const char *symbolStr,
+							const char *orderQtyStr,
+							const char *priceStr,
+							const char *securityExchangeStr,
+							const char *currencyStr,
+							const char *account,
+							const char *securityTypeStr,
+							const char *accountStr,
+							int   entrustNum 
+							)
+{
+
+    try
+    {
+		FIX44::HsCollectiveOrder  *collectiveOrder = new FIX44::HsCollectiveOrder();
+		
+		//collectiveOrder->setField(48, bookId);
+		collectiveOrder->set(FIX::ClOrdID(clordId));
+		collectiveOrder->set(FIX::HandlInst(aHandlInst));
+		collectiveOrder->set(FIX::OrdType(ordertype));
+		collectiveOrder->set(FIX::SideStr(sideStr));
+		collectiveOrder->set(FIX::SymbolStr(symbolStr));
+		collectiveOrder->set(FIX::OrderQtyStr(orderQtyStr));
+		collectiveOrder->set(FIX::PriceStr(priceStr));
+		collectiveOrder->set(FIX::SecurityExchangeStr(securityExchangeStr));
+		collectiveOrder->set(FIX::CurrencyStr(currencyStr));
+		collectiveOrder->set(FIX::Account(account));
+		collectiveOrder->set(FIX::SecurityTypeStr(securityTypeStr));
+		collectiveOrder->set(FIX::AccountStr(accountStr));
+		collectiveOrder->set(FIX::EntrustNum(entrustNum));
+
+
+		FIX44::Header &header = collectiveOrder->getHeader();
+		header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+		header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));   
+		collectiveOrder->setSessionID(SessionIDRef(trade->obj->getSessionID()));
+		int ret = FIX::Session::sendToTarget(*collectiveOrder);
+        std::cout << *collectiveOrder << std::endl;
+		delete collectiveOrder ;
+		return ret ;
+    } catch ( std::exception & e ) {
+        std::cout << "Message Not Sent: " << e.what();
+	    return -1;
+	}
+}
+
+int  AppTradeClientCollectiveOrderCancel(AppTradeClient * trade,
+							//const char *bookId,
+							const char *clordId, 
+							int   entrustNum ,
+							const char *entrustNoStr,
+							const char *securityExchangeStr,
+							const char *currencyStr,
+							const char *account
+							)
+{
+
+    try
+    {
+		FIX44::HsCollectiveCancelRequest  *collectiveCancelRequest = new FIX44::HsCollectiveCancelRequest();
+		
+		//collectiveCancelRequest->setField(48, bookId);
+		collectiveCancelRequest->set(FIX::ClOrdID(clordId));
+		collectiveCancelRequest->set(FIX::EntrustNum(entrustNum));
+		collectiveCancelRequest->set(FIX::EntrustNoStr(entrustNoStr));
+		collectiveCancelRequest->set(FIX::SecurityExchangeStr(securityExchangeStr));
+		collectiveCancelRequest->set(FIX::CurrencyStr(currencyStr));
+		collectiveCancelRequest->set(FIX::Account(account));
+
+		FIX44::Header &header = collectiveCancelRequest->getHeader();
+		header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+		header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));   
+		collectiveCancelRequest->setSessionID(SessionIDRef(trade->obj->getSessionID()));
+		int ret = FIX::Session::sendToTarget(*collectiveCancelRequest);
+        std::cout << *collectiveCancelRequest << std::endl;
+		delete collectiveCancelRequest ;
+		return ret ;
+    } catch ( std::exception & e ) {
+        std::cout << "Message Not Sent: " << e.what();
+	    return -1;
+	}
+}
+
+int  AppTradeClientCollectiveOrderStatus(AppTradeClient * trade,
+							//const char *bookId,
+							int   entrustNum ,
+							const char *entrustNoStr,
+							const char *account
+							)
+{
+
+    try
+    {
+		FIX44::HsCollectiveOrderStatusRequest  *collectiveOrderStatusRequest = new FIX44::HsCollectiveOrderStatusRequest();
+		
+		//collectiveOrderStatusRequest->setField(48, bookId);
+		collectiveOrderStatusRequest->set(FIX::EntrustNum(entrustNum));
+		collectiveOrderStatusRequest->set(FIX::EntrustNoStr(entrustNoStr));
+		collectiveOrderStatusRequest->set(FIX::Account(account));
+
+		FIX44::Header &header = collectiveOrderStatusRequest->getHeader();
+		header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+		header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));   
+		collectiveOrderStatusRequest->setSessionID(SessionIDRef(trade->obj->getSessionID()));
+		int ret = FIX::Session::sendToTarget(*collectiveOrderStatusRequest);
+        std::cout << *collectiveOrderStatusRequest << std::endl;
+		delete collectiveOrderStatusRequest ;
+		return ret ;
+    } catch ( std::exception & e ) {
+        std::cout << "Message Not Sent: " << e.what();
+	    return -1;
+	}
+}
+
+
+int  AppTradeClientBatchOrder(AppTradeClient * trade,
+							//const char *bookId,
+							const char *clordId, 
+							const char  aHandlInst,
+							const char  ordertype,
+							const char **symbolStr,
+							const char **sideStr,
+							const char **orderQtyStr,
+							const char **priceStr,
+							const char **securityExchangeStr,
+							const char **currencyStr,
+							const char **securityTypeStr,
+							const char *account,
+							int   num
+							)
+{
+
+    try
+    {
+		FIX44::HsBatchOrder  *batchOrder = new FIX44::HsBatchOrder();
+		
+		//batchOrder->setField(48, bookId);
+		batchOrder->set(FIX::ClOrdID(clordId));
+		for(int i= 0 ;i<num ;i++){
+			batchOrder->set(FIX::HandlInst('2'));
+			batchOrder->set(FIX::OrdType('2'));
+			batchOrder->set(FIX::SymbolStr(symbolStr[i]));
+			batchOrder->set(FIX::SideStr(sideStr[i]));
+			batchOrder->set(FIX::TransactTime());
+			batchOrder->set(FIX::OrderQtyStr(orderQtyStr[i]));
+			batchOrder->set(FIX::PriceStr(priceStr[i]));
+			batchOrder->set(FIX::SecurityExchangeStr(securityExchangeStr[i]));
+			batchOrder->set(FIX::CurrencyStr(currencyStr[i]));
+			batchOrder->set(FIX::SecurityType(securityTypeStr[i]));
+			batchOrder->set(FIX::Account(account));
+			batchOrder->set(FIX::EntrustCount(2));
+		}
+
+		FIX44::Header &header = batchOrder->getHeader();
+		header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+		header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));   
+		batchOrder->setSessionID(SessionIDRef(trade->obj->getSessionID()));
+		int ret = FIX::Session::sendToTarget(*batchOrder);
+        std::cout << *batchOrder << std::endl;
+		delete batchOrder ;
+		return ret ;
+    } catch ( std::exception & e ) {
+        std::cout << "Message Not Sent: " << e.what();
+	    return -1;
+	}
+}
+
+int  AppTradeClientRequestForPositions(AppTradeClient * trade,
+							//const char *bookId,
+							const char *posReqID, 
+							int         posReqType,
+							const char *account,
+							int         accountType
+							)
+{
+	
+    try
+    {
+		FIX44::HsRequestForPositions  *requestForPositions = new FIX44::HsRequestForPositions();
+		
+		//requestForPositions->setField(48, bookId);
+		requestForPositions->set(FIX::PosReqID(posReqID));
+		requestForPositions->set(FIX::PosReqType(posReqType));
+		requestForPositions->set(FIX::Account(account));
+		requestForPositions->set(FIX::AccountType(accountType));
+		//requestForPositions->set(FIX::Currency("CNY"));
+
+		FIX44::Header &header = requestForPositions->getHeader();
+		header.setField( FIX::SenderCompID(trade->obj->getSenderCompID()));
+		header.setField( FIX::SenderCompID(trade->obj->getTargetCompID()));   
+		requestForPositions->setSessionID(SessionIDRef(trade->obj->getSessionID()));
+		int ret = FIX::Session::sendToTarget(*requestForPositions);
+		delete requestForPositions ;
+		return ret ;
+    } catch ( std::exception & e ) {
+        std::cout << "Message Not Sent: " << e.what();
+	    return -1;
+	}
+}
+
+
+/*
+int  AppTradeClientMarketData(AppTradeClient * trade, const char *bookId)
+{
+	//FIX::Message MessageS;
+    FIX::MDReqID mdReqID(trade->obj->getOrderId());
+	FIX::SubscriptionRequestType subType( FIX::SubscriptionRequestType_SNAPSHOT_PLUS_UPDATES  );
+	FIX::MarketDepth marketDepth(0);
+	FIX44::MarketDataRequest message(mdReqID, subType, marketDepth);
+
+	FIX::MDUpdateType mdUpdateType(0);
+	message.set(mdUpdateType);
+
+	FIX44::MarketDataRequest::NoMDEntryTypes marketDataEntryGroup;
+	FIX::MDEntryType mdEntryTypeBid(FIX::MDEntryType_BID);
+	marketDataEntryGroup.set(mdEntryTypeBid);
+	message.addGroup(marketDataEntryGroup);
+
+	FIX::MDEntryType mdEntryTypeAsk( FIX::MDEntryType_OFFER );
+	marketDataEntryGroup.set( mdEntryTypeAsk );
+	message.addGroup(marketDataEntryGroup);
+
+	FIX44::MarketDataRequest::NoRelatedSym symbolGroup;
+	FIX::SecurityID sid(bookId);
+	FIX::SecurityIDSource sidSource("8");
+	symbolGroup.set(sid);
+	//symbolGroup.set(sidSource);
+	message.addGroup(symbolGroup);
+	int ret = SendToTarget(&message , trade);
+	return ret  ;
+}
+*/
+
+int  AppTradeClientMarketData(AppTradeClient * trade, const char *bookId,const char subscriptionRequestType)
+{
+	std::cout << bookId << subscriptionRequestType<<"AppTradeClientMarketData begin"<< std::endl ;
+	//FIX::Message MessageS;
+	std::string strOrderId = trade->obj->getOrderId();
+
+    FIX::MDReqID mdReqID(strOrderId);
+	
+
+	FIX44::MarketDataRequest marketDataRequest;
+
+	marketDataRequest.set(FIX::MDReqID(mdReqID));
+	marketDataRequest.set(FIX::SubscriptionRequestType(subscriptionRequestType));
+	marketDataRequest.set(FIX::MDUpdateType(0));
+	marketDataRequest.set(FIX::MarketDepth(1));
+	marketDataRequest.set(FIX::NoRelatedSym(1));
+
+	FIX44::MarketDataRequest::NoMDEntryTypes entryTypeGroup;
+	entryTypeGroup.set(FIX::MDEntryType('0'));
+	marketDataRequest.addGroup(entryTypeGroup);
+
+	entryTypeGroup.set(FIX::MDEntryType('1'));
+	marketDataRequest.addGroup(entryTypeGroup);
+
+
+	FIX44::MarketDataRequest::NoRelatedSym symbolGroup;
+
+	symbolGroup.set(FIX::Symbol(bookId));
+
+	marketDataRequest.addGroup(symbolGroup);
+
+	int ret = SendToTarget(&marketDataRequest , trade);
+
+    std::cout << marketDataRequest << std::endl;
+ 
+
+	return ret  ;
+}
+
+
+char * MessageToStr(const Message *msg) {
+    if (msg == NULL) {
+        return NULL;
+    }
+    const std::string& str = MessageRef(msg).toString();
+    char * addr = strdup(str.c_str());
+    return addr;
+}
+
+void Free(void * str) {
+    if (str == NULL) {
+        return;
+    }
+    free(str);
+}

+ 259 - 0
api/fix/src/CCall/cfunc.h

@@ -0,0 +1,259 @@
+#ifndef _CFUNC_H_
+#define _CFUNC_H_
+
+#include "FixValue.h"
+#include "FixValueNumber.h"
+#ifdef _cplusplus
+extern "C" {
+#endif
+
+typedef unsigned int uint;
+typedef signed char schar;
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef long long int64;
+typedef unsigned long long uint64;
+typedef struct SessionID SessionID;
+typedef struct SessionSettings SessionSettings;
+typedef struct Dictionary Dictionary;
+typedef struct Message Message;
+typedef struct AppTradeClient AppTradeClient;
+
+typedef struct IApplication {
+  /// Notification of a session begin created
+  void (*onCreate)(AppTradeClient *, SessionID *);
+  /// Notification of a session successfully logging on
+  void (*onLogon)(AppTradeClient *, SessionID *);
+  /// Notification of a session logging off or disconnecting
+  void (*onLogout)(AppTradeClient *, SessionID *);
+  /// Notification of admin message being sent to target
+  void (*toAdmin)(AppTradeClient *, Message *, SessionID *);
+  /// Notification of app message being sent to target
+  void (*toApp)(AppTradeClient *, Message *, SessionID *);
+  /// Notification of admin message being received from target
+  void (*fromAdmin)(AppTradeClient *, const Message *, SessionID *);
+  /// Notification of app message being received from target
+  void (*fromApp)(AppTradeClient *, const Message *, SessionID *);
+  //为了go的调用方便,封装了这样的一个接口
+  void (*defaultCallBack) (void *pfunc, AppTradeClient *, const Message *, SessionID *);
+  void *onCreateCB;
+  void *onLogonCB;
+  void *onLogoutCB;
+  void *toAdminCB;
+  void *fromAdminCB;
+  void *fromAppCB;
+  void *toAppCB;
+} IApplication;
+
+//预留一点空间,现在测试的情况是最大20
+#define	MAX_BID_ASK_COUNT	25
+typedef struct TickFull
+{
+	double	AskPrice[MAX_BID_ASK_COUNT];
+	double	BidPrice[MAX_BID_ASK_COUNT];
+	double	AskVolume[MAX_BID_ASK_COUNT];
+	double	BidVolume[MAX_BID_ASK_COUNT];
+    char	Symbol[8];
+	int	    Time;
+	int     Millisecond;
+	int     AskCount;
+    int     BidCount;
+	double  LastPx ;
+	double  LastShares ;
+} TickFull;
+
+typedef struct StockInfo
+{
+	char  Symbol[15];
+	int   Position ;
+	char  SecurityExchange[10];
+}StockInfo;
+
+typedef struct AccountInfo
+{
+	double FB;
+	double FAV;
+	double MV;
+	double F;
+	double SV;
+	double FBF;
+}AccountInfo;
+typedef struct OrderInfo
+{
+    char OrderID[32];//Unique identifier for Order as assigned by exchange
+    char SecondaryExecID[32];
+    char ClOrdID[32] ;//Client side order identifier
+    char OrigClOrdID[32];
+    char OrdStatusReqID[32];
+    char ExecID[32] ; //Execution ID for this fill.
+    char Account[16];//Account ID of the current logged in LMAX member
+	char Symbol[16];
+    char SecurityID[8];
+	double AvgPx ;//Calculated average price of all fills on this order.
+	double CumQty;//Contains the cumulated traded quantity for the order through its life.
+	double LastPx ;//Price of this fill 
+	double LastQty;//
+	double OrderQty ;//Number of contracts submitted by the client
+    double LeavesQty ;//成交手数
+    double Price ;//Price per contract
+    char *Text;
+	int OrdRejReason;
+	int TransactTime ;//Time of execution/order creation
+	int Millisecond ;
+    char SecurityIDSource[2];	
+	char TimeInForce ;//Specifies how long the order remains in effect.   0=Good for Day (GFD) 3=Immediate or Cancel (IOC) 4=Fill or Kill (FOK)Limit Orders support TimeInForce values of IOC, FOK, and GFD. Market Orders support TimeInForce values of IOC, FOK.
+    char OrdType;
+    char OrdStatus ;
+	char Side ;//1=BUY ,2=SELL
+    char ExecType ;//Describes the type of execution report. Same possible values as Order Status.   0=NEW 1=PARTIALLY FILL 2=FILL 4=CANCELED 5=REPLACE 8=REJECTED 
+} OrderInfo;
+
+//SessionSettings api
+SessionSettings * NewSessionSettings(const char *file);
+void FreeSessionSettings(SessionSettings *obj);
+Dictionary* SessionSettingsGet(SessionSettings *ss, SessionID *sid);
+
+//Dictionary api
+int DictionaryHas(Dictionary *obj, const char *find);
+const char * DictionaryGetString(Dictionary *obj, const char *find);
+void FreeDictionary(Dictionary *dict);
+
+//message api
+Message * WarpMessage(void *msg);
+void MessageSetField(Message *msg, int field, const char *value);
+int MessageSend(Message *msg);
+char * MessageToStr(const Message *msg);
+void Free(void *);
+const Message * WarpConstMessage(const void *msg);
+void PrintHello(char *data[], int n);
+//SessionID api
+SessionID * WarpSessionID(const void *sid);
+
+IApplication * NewDefaultIApplication();
+void IApplicationSetCB(void *);
+IApplication * NewCBIApplication(void *cb, void *onCreate, void *onLogon, void *onLogout, void *toAdmin, void *toApp, void *fromAdmin, void *fromApp);
+
+IApplication * NewIApplication(void *onCreate, void *onLogon, void *onLogout, void *toAdmin, void *toApp, void *fromAdmin, void *fromApp);
+void FreeIApplication(IApplication *app);
+//application api
+AppTradeClient * NewAppTradeClient(IApplication *app, SessionSettings *setting);
+void FreeAppTradeClient(AppTradeClient * app);
+void AppTradeClientStart(AppTradeClient * app);
+void AppTradeClientStop(AppTradeClient * app);
+int AppTradeClientRun(AppTradeClient * app);
+
+SessionID *AppTradeClientSessionID(AppTradeClient * app);
+const char *AppTradeClientSenderCompID(AppTradeClient * app);
+const char *AppTradeClientTargetCompID(AppTradeClient * app);
+const char *AppTradeClientClOrdID(AppTradeClient * app);
+
+int GetAccountInfo(const Message * msg, AccountInfo* accountinfo,int *bLastRptRequested);
+int GetFieldValue(const Message * msg, int key,char * value);
+int GetMarketData(const Message *msg, TickFull *tick);
+int GetOrderInfo(const Message * msg, OrderInfo * orderinfo);
+int GetAccountStockInfo(const Message * msg, StockInfo * stockinfo ,int *bLastRptRequested);
+int GetMsgType(const Message * msg ,char * cTypeValue);
+
+const char * AppTradeClientOrigClOrdID(AppTradeClient * app, const Message *msg);
+
+
+int AppTradeClientSendOrder(AppTradeClient * trade, const char * aSymbol,const char *clordid, const char side, const char orderType, 
+	                        double qty, double price, const char *account); //,const char * secondaryClOrdID,const char * onBehalfOfCompID
+
+
+int AppTradeClientTradeCaptureReportRequest(AppTradeClient * trade, const char *reqId, int reqType, char subReqType);
+int AppTradeClientOrderStatus(AppTradeClient * trade,
+							const char *aSymbol,
+							const char *clordId, 
+							//const char *ordStatusReqId,
+							const char side,
+							//const char * account,
+							//const char * securitytype,
+							const char * orderid
+							);
+
+int AppTradeClientCancelOrder(AppTradeClient * trade,
+							const char *aSymbol,
+							const char *origClOrdID, 
+							const char *clordid, 
+							const char side,
+							//double qty,
+							const char * account,
+							//const char * securitytype,
+							const char * orderid );
+
+
+int AppTradeCilentOrderCancelReplace(AppTradeClient * trade, 
+									const char *aSymbol,
+									const char * origclordid ,
+									const char *clordid, 
+									const char aHandlInst,
+									const char side, 
+									const char orderType, 
+									double price,
+									double qty ,
+									const char * account,
+									const char * securitytype,
+									const char * orderid 
+									);
+
+int  AppTradeClientCollectiveOrder(AppTradeClient * trade ,
+							const char *clordId, 
+							const char  aHandlInst,
+							const char  ordertype,
+							const char *sideStr,
+							const char *symbolStr,
+							const char *orderQtyStr,
+							const char *priceStr,
+							const char *securityExchangeStr,
+							const char *currencyStr,
+							const char *account,
+							const char *securityTypeStr,
+							const char *accountStr,
+							int   entrustNum 
+							);
+
+int  AppTradeClientCollectiveOrderCancel(AppTradeClient * trade,
+							const char *clordId, 
+							int   entrustNum ,
+							const char *entrustNoStr,
+							const char *securityExchangeStr,
+							const char *currencyStr,
+							const char *account
+							);
+
+int  AppTradeClientCollectiveOrderStatus(AppTradeClient * trade,
+							int   entrustNum ,
+							const char *entrustNoStr,
+							const char *account
+							);
+int  AppTradeClientBatchOrder(AppTradeClient * trade,
+							const char *clordId, 
+							const char  aHandlInst,
+							const char  ordertype,
+							const char **symbolStr,
+							const char **sideStr,
+							const char **orderQtyStr,
+							const char **priceStr,
+							const char **securityExchangeStr,
+							const char **currencyStr,
+							const char **securityTypeStr,
+							const char *account,
+							int   num
+							);
+
+int  AppTradeClientRequestForPositions(AppTradeClient * trade,
+							const char *posReqID, 
+							int         posReqType,
+							const char *account,
+							int         accountType
+							);
+
+int  AppTradeClientMarketData(AppTradeClient * trade, const char *bookId,const char subscriptionRequestType);
+
+
+#ifdef _cplusplus
+}
+#endif
+
+#endif

BIN
api/fix/src/CCall/cfunc.o


BIN
api/fix/src/CCall/libfix.a


BIN
api/fix/src/CCall/libfix.so


+ 57 - 0
api/fix/src/CCall/ufx_security_interface.h

@@ -0,0 +1,57 @@
+/** @file
+* 统一接入加密算法头文件
+* @author  周辉
+* @author  恒生电子股份有限公司
+* @version 2.0
+* @date    20131118初始版本
+*/
+///修改历史
+
+#ifndef _UFXSECURITY_H_
+#define _UFXSECURITY_H_
+
+
+#ifdef _WIN32
+#if !defined( FUNCTION_CALL_MODE )
+#define FUNCTION_CALL_MODE		__stdcall
+#endif
+#else
+#define FUNCTION_CALL_MODE
+#endif
+
+
+extern "C"
+{
+
+
+//BASE64加解密
+int FUNCTION_CALL_MODE UFX_Base64Encode(char *lpOut, const char *lpIn, unsigned int len);
+int FUNCTION_CALL_MODE UFX_Base64Decode(char *lpOut, const char *src);
+
+//Blowfish加解密,加密后密码长度为加密前2倍
+/*
+*	lpOut						加密后密码缓存,要求长度至少为密码明文长度2倍
+*	nOutLength			加密后密码缓存最大长度
+*	lpIn            加密前密码
+*	nInLength       加密器密码长度
+*	lpKey           秘钥
+ */
+void FUNCTION_CALL_MODE UFX_BlowfishEncode(char *lpOut, int nOutLength, const char *lpIn, int nInLength, const char *lpKey);
+void FUNCTION_CALL_MODE UFX_BlowfishDecode(char *lpOut, const char *lpIn, int nInLength, const char *lpKey);
+
+
+//DES加解密 目前密码长度最长支持8位
+/*
+*	lpOut						加密后密码缓存,要求长度至少为密码明文长度2倍
+*	nOutLength			加密后密码缓存最大长度
+*	lpIn            加密前密码
+*	nInLength       加密器密码长度
+*	lpKey           秘钥
+ */
+void FUNCTION_CALL_MODE UFX_DesEncode(char *lpOut, int nOutLength, const char *lpIn, int nLength, const char *lpKey);
+void FUNCTION_CALL_MODE UFX_DesDecode(char *lpOut, const char *lpIn, int nLength, const char *lpKey);
+
+
+}
+
+#endif // _UFXSECURITY_H_

+ 25 - 0
api/fix/src/CONTRIBUTORS

@@ -0,0 +1,25 @@
+Oren Miller
+John Duncan
+Bill Caputo
+John Didion
+Pat Gremo
+Stancescu Constantin
+Gene Gorokhovsky
+Nicholas Palmer
+Alex Hornby
+Daniel May
+Joerg Thoennes
+Heri Steuer
+Timothy Yates
+Anne Lewis
+Vladimir Arnost
+Brendan B. Boerner
+Robert Bill
+Caleb Epstein
+Kritstopher Peterson
+Vladimir Arnost
+Brian Erst
+Alexey Zubko
+Kyle Consalus
+Mike Gatny
+Rich Holm

+ 1 - 0
api/fix/src/INSTALL

@@ -0,0 +1 @@
+For installation instructions and documentation, refer to doc/html/index.html

+ 46 - 0
api/fix/src/LICENSE

@@ -0,0 +1,46 @@
+The QuickFIX Software License, Version 1.0
+ 
+Copyright (c) 2001-2010 quickfixengine.org  All rights
+reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ 
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+3. The end-user documentation included with the redistribution,
+   if any, must include the following acknowledgment:
+      "This product includes software developed by
+       quickfixengine.org (http://www.quickfixengine.org/)."
+   Alternately, this acknowledgment may appear in the software itself,
+   if and wherever such third-party acknowledgments normally appear.
+ 
+4. The names "QuickFIX" and "quickfixengine.org" must
+   not be used to endorse or promote products derived from this
+   software without prior written permission. For written
+   permission, please contact ask@quickfixengine.org
+ 
+5. Products derived from this software may not be called "QuickFIX",
+   nor may "QuickFIX" appear in their name, without prior written
+   permission of quickfixengine.org
+ 
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL QUICKFIXENGINE.ORG OR
+ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+

+ 6 - 0
api/fix/src/Makefile.am

@@ -0,0 +1,6 @@
+SUBDIRS = UnitTest++ src bin spec test examples doc
+
+# Install pkgconf definition
+
+pkgconfdir=$(libdir)/pkgconfig
+pkgconf_DATA = quickfix.pc

+ 1373 - 0
api/fix/src/NEWS

@@ -0,0 +1,1373 @@
+1.13.3
+------
+Added support for FIX 5.0 sp1 and sp2
+
+Fixed bug with ResetSeqNumFlag going out but not coming back.
+Logon will now be processed correctly even if field is absent
+if sequence number is set to 1.
+
+Fixed bug where data dictionary settings in the default section
+were being ignored. Mostly manifested itself by doing validation
+the user didn't want done, such as user defined field validation.
+
+Fixed initialization errors with OdbcConnection which caused some
+problems connecting to the database.
+
+Updated the generator.  Should be more consistent.  Deprecated fields
+are not longer necessary as they are now generated along with current
+fields.
+
+1.13.2
+------
+Fixed bug where messages containing repeating groups would 
+not be properly resent under a FIXT.1.1 session
+
+Fixed bug where group fields would not be in the correct order
+after copying a group object.
+
+Fixed compilation error with OdbcStore
+
+Updated m_stop variable in initator and acceptor to true
+to better reflect initial state.
+
+Fixed issue with reconnect when acceptor not available and timeout
+interval is reached.
+
+Objects take in timestamps instead of generating them themselves
+to make them more testable.
+
+Generated python and ruby APIs no longer rely on pulling in
+FIX namespace so there are no clashes.
+
+1.13.1
+------
+Fixed install script under unix systems. The new FIX 5.0 and 
+FIXT 1.1 headers were not being installed.
+
+Fixed compiler errors under windows due to typedefs conflicting
+with #defines.
+
+Fixed exception being thrown when no LogFactory is provided.
+
+User defined UTC timestamps will have milliseconds now.
+
+Fixed memory leaks and other bugs in odbc interfaces.
+
+Fixed exception caused by peername returning a null char*.
+
+Corrected installation problems when DESTDIR is provided.
+
+QuickFIX should build on netbsd, though it is not yet
+officially supported.
+
+Perfomance optimization for .NET messagecrackers.
+
+
+1.13.0
+------
+Support for FIX 5.0 and FIXT 1.1 session transport.
+
+Added solution files for Visual Studio 2008 and 2010.
+
+Compiles under newer versions of gcc.
+
+JNI API is no longer.  QuickFIX/J is recommended.  JAR file
+included with quickfix distribution for your convenience.
+
+Full support for 64 bit systems.
+
+Switched from proprietary unit testing framework to UnitTest++.
+
+Added settings for send and recieve buffer size on sockets.
+
+Header and Trailer generated instead of hardcoded.
+
+Groups can be queries against DataDictionary.
+
+ConfigError will be generated if session is defined twice. Several other
+improvements to recognizing bad configuration files.
+
+PersistMessages is true by default.
+
+identifyMessage exposed to .NET API.
+
+Fixed some potential deadlock scenarios with socket implementation.
+
+Added support for backing up logs.
+
+Added millisecond resolution to logs.
+
+Added NullMessageStore implementation.
+
+Sessions can be queried for data dictionary and configuration settings.
+
+Fixed problems with resent messages going out with repeating groups
+fields in the wrong order.
+
+Fixed some issues with database connection pools.
+
+Persistance is done before sending and will fail if message cannot be
+stored or sequence number cannot be incremented.
+
+Builds against STLPORT 5.
+
+Log messages can be redirected to different database tables.
+
+Added memory pressure to .NET messages to give a hint to the
+GC that memory should be reclaimed.
+
+When polling you can pass in a timeout value.
+ 
+Many other minor bug fixes.
+
+1.12.4
+------
+ODBC escape values for times used in time values so they work with any database.
+
+Session will not throw an exception when sending a message without a MsgType.
+
+Added NetworkStatusReport and NetworkStatusRequest messages fix FIX 4.4.
+
+.NET SessionID object can be constructed with field objects.
+
+getSessions implemented in SessionSettings object in .NET.
+
+SessionSettings can be output in the same format as the input stream.
+
+Fixed repeating groups in ruby which where incorrectly instantiating arrays
+indicating sorting order.
+
+Fixed crashes in .NET due to logger being called after going out of scope.
+
+Fixed crashes in gcc due to different allocators being used in user application
+vs QuickFIX library by the FieldMap.
+
+Disposing an initiator or acceptor in .NET will also call stop.
+
+1.12.3
+------
+A logon will now be sent immediately after initiator establishes a connection.
+Previously we were waiting up to 1 second before sending a logon.
+
+PersistMessages configuration setting will not store any messages when sent to Y.
+This is useful for sessions where you never want to do a resend request. Mostly for
+high bandwidth sessions.
+
+.NET field objects have static members for each of their enumeration values.
+This is equivalent to the Java implementation. (i.e., OrderSide.BUY).
+
+Fixed bugs in python and ruby APIs where objects passed into Initiator or
+Acceptor were being garbage collected to early causing random crashed.
+This was due to Swig not creating placeholders for these objects to live.
+
+Additional global logging indicated when an initiator/acceptor is created/destroyed,
+and started/stopped.  Global log also with log messages that do not belong to any
+loaded sessions.
+
+Configuration settings are now case insensitive (the keys, not the values).
+
+Underlying socket exception is provided if acceptor cannot be created.
+
+ODBC escape sequences are used for time columns so correct format is always
+sent to the underlying database.
+
+Fixed problem where file descriptors were not being released in ThreadedSocketInitiator
+due to uninitialized variable.
+
+Fixed some incorrect parsting of HTTP messages. Never manifested itself
+as any problem, but fixed none the less.
+
+Various copilation fixes for SunPRO compiler.
+
+1.12.2
+------
+Fixed bug in SocketConnector in Windows where failed connections were not
+being detected. Fixes bad behavior in SocketInitiator where it will attempt
+to connect once, but never try to reconnect.
+
+HttpAcceptPort setting added. When set, QuickFIX will accept HTTP requests
+to the given port.  Pointing a browser to this port will bring up a control
+panel that allows you to view/update certain session states.
+
+Fixed bugs in Python api generation.
+
+Fixed Equals method for Field in .NET.  Added Equals and GetHashCode
+implementations for SessionID.
+
+Log will display ip address instead of hostname of incoming connections
+in log.  Fixes problem where hostname is not always available.
+
+Many performance optimizations.  Performance is considerably better.
+
+Fixed bugs when checking for required fields.
+
+1.12.1
+------
+Fixed bugs with non-blocking sockets where select statement would go into an
+infinite loop due to a bad file descriptor which was not properly removed.
+
+Fixed bug in SocketInitiator where initator would crash if the socket
+was pending a connection when disconnecting.
+
+MemoryStore in .NET api uses proper access specifier so compiler does not
+complain that it is abstract.
+
+Added SendRedundantResendRequests for certifications that require you to
+send a resend request even if it appears redundant.
+
+BusinessMessageReject includes field in text if applicable.
+
+Compiles under gcc 4.1
+
+Fixed UnsatisfiedLinkError when creating FileLogFactory in java.
+
+Fixed various bugs with ResetOnLogon functionality.
+
+Fixed bug where MySQLLog was writing bad strings to table.
+
+Fixed some error messages in MySQL store.
+
+Added support for reconnect in MySQL 5.
+
+Display file name when FileStore or File Log cannot open a file.
+
+Rejects are delivered to fromAdmin even if sequence number is too high.
+
+Initiator stores and instance of the global log.
+
+1.12.0
+------
+SocketAcceptor and ThreadedSocketAcceptor can listen for connections on
+multiple ports.  SocketAcceptPort no longer needs to be in the DEFAULT
+section and can be assigned to sessions.  Sessions can share accepting
+ports like before.
+
+SocketAcceptor/Initiator now implemented using non-blocking sockets.  There
+is no longer a danger of dead-locking when using these objects.
+
+Support for ODBC log and message store.  QuickFIX can now be used with any 
+database with an ODBC driver on windows.  Direct MSSQL implementation is
+no longer supported.
+
+Global log exists for logging that does not pertain to an existing session.
+Things like incoming connections where the session is not yet identified
+go in here.  The message store factory has a new create() method for creating
+a global log without a session id.
+
+MessageStore interface now supports refresh which will load in settings
+from the persisted store.  RefreshOnLogon configuration setting will
+refresh the store whenever the session logs on.  Useful for creating
+backup systems.
+
+Added funtionally complete Ruby API.
+
+Python API now supports repeating groups and start() method.
+
+Message::replaceGroup can be used to replace a specific instance of a 
+repeating group.
+
+Message::isEmpty can be used to determine if there are any fields in a
+message.  Message::clear can clear all fields from a message.
+
+New configuration parameter LogoutTimeout allows you to adjust amount of
+time before session forces a disconnect when there is no logout response.
+
+CheckCompID configuration parameter can be set to N to disable validation
+of message comp ids.  This is for systems that send incorrect compids by
+design.
+
+DataDictionary can now be parsed from a stream.  This allows you to
+store the DataDictionary however you like as long as you can produce
+a stream in the QuickFIX xml format.
+
+Database IOExceptions now contain reasons for the IO failure which is logged
+if possible.
+
+clear() method on database log implementation take the session qualifier into
+account if applicable.
+
+MySQL and PostgreSQL implementations properly escape strings so any message
+can be recorded no matter what it contains.
+
+Double fields now have a constructor allowing you to pass in the padding
+length of the decimal value.
+
+ScreenLog can read setting from configuration file.  No longer required to
+hardcode settings into constructor.
+
+The last received time is now only updated if a message passes validation.
+
+Fixed bug where connections weren't being properly decremented inside
+connection pool.  Caused a resource leak by not releasing connections.
+
+Fixed bug with session time when end time is less than the start time on 
+the next day.
+
+Fixed bug with session time which spans different time zones.
+
+Fixed a bug so logouts will show logout reason.
+
+Fixed bugs pertaining to generating SQL to clear logs.
+
+Support for repeating groups in headers and trailers. DataDictionary validation 
+will also process repeating groups within the message header and trailer.
+
+.NET Field objects now have ToString, Equals, and GetHashCode implementations.
+Added GetHashCode implementation to SessionID.
+
+Reject message will always be processed, even when the session isn't logged on.
+
+Fixed support for nested repeating groups in Java API.
+
+OrigSendingTime now always matches SendingTime when sending a SequenceReset.
+
+Dictionary has a setDay method symetrical to getDay.
+
+Fixed 64 bit compatibility errors in JNI layer.
+
+Added default constructor for SessionID in Java and .NET APIs.
+
+Fixed name of message_log table in mysql creation scripts.
+
+Fixed race condition when stopping/starting initiator/acceptors.
+
+ResetOnLogon will reset state before sending/receiving logon messages.
+
+.NET logs, message stores, initiators and acceptors are now disposable so 
+resources can be immediately recovered.
+
+Fixed incorrect Socket Error log message when properly stopping a threaded
+connection.
+
+1.11.1
+------
+Added padding support for double fields.  Allows you to supply the
+minimum number of decimal places in a double.  When set to two, 9 will
+become 9.00, but 9.121 will remain the same.
+
+Fixed bug in MySQLLog where it tries to log to old incoming_log table
+instead of the newer messages_log table.
+
+FileLog clear() method did not work.  This has been fixed.
+
+clear() method for sql logs were clearing old incoming and outgoing
+tables instead of the newer messages table.
+
+When the clear() method on a log is called, only the logs
+pertaining to that session will be deleted.  Previously it was
+deleting logs from all sessions.
+
+Fixed problem when building from the IDE which would lock the .NET
+libraries causing the builds for some .NET projects to fail.
+
+Added Dictionary, MySQL and PostgreSQL source files to vs6 jni project.
+
+In .NET, settings can now be pulled from the SESSION section, and not
+just the DEFAULT section.
+
+Fixed port issues in example cvonfiguration files.
+
+1.11.0
+------
+Updated code so it will compile under gcc 4.0 and Visual Studio .NET 2005.
+For visual studio, all solution files are merged into a single file.  So
+the quickfix C++, .NET, JNI, test applications and example applications
+are all built in a single step.
+
+Added MessageStore and Log support for PostgreSQL and MS SQL Server.
+
+ConnectionPools are available for MySQL and PostgreSQL. Configuration settings
+MySQLStoreUseConnectionPool, MySQLLogUseConnectionPool, 
+PostgreSQLStoreUseConnectionPool, and PostgreSQLLogUseConnectionPool have been
+added.  When connection pools are enabled, any sessions which share the same
+connection parameters (database, user, password, host and port) will share
+a connection.  This is particularly useful for PostgreSQL which has pretty
+low limitations on the number of connections it allows.
+
+JNI Wrapper has been made compatible with 64 bit systems.
+
+Session::logout can be passed a string which contains the reason for the
+logout.  The reason will be placed into the text field of the Logout message.
+
+FileLog no longer has separate files for incoming and outgoing messages.  All
+messages are placed into one messages file so the original order of the
+transactions can be reconstructed accurately.
+
+SessionSettings can be set programatically from .NET and Java.  You no longer
+have to use the hack where you create a stream in the format of a configuration
+file and parse it into a settings file.  Direct access to getters and setters
+are exposed.
+
+Removing a group will update the leading count field.
+
+Fixed various bugs with resetting sequence numbers using the ResetSeqNumFlag=Y,
+including issues with ResetOnDisconnect and ResetOnLogoff. Also if in a state where
+we are not logged on and the messages are going to be reset, no messages will be
+succesfully sent (there is no point).
+
+Log class has a clear() method which can be used to clear out the logs
+programatically.
+
+Various fixes to handling of resend requests.
+
+Session qualifier can be accessed from SessionID in .NET
+
+getFieldTag method on DataDictionary will use a tags name to return its number.
+
+Milliseconds can be specified by user in UtcTimeStamp and UtcTimeOnly fields.
+
+Deprecated Message::getString method has been removed, you must now use toString.
+
+Reject reasons are logged by the session even if they cannot be sent to the
+counterparty.
+
+Sequence reset will be processed even if the messages sequence number is too high.
+
+Second thread and buffer queue removed from ThreadedSocketConnection.  Each connection
+now only has one thread which interacts with the socket directly.
+
+When a session is reset(), a logout message will be sent to the counterparty.
+
+OrigSendingTime will contain milliseconds when applicable.
+
+Repeating groups can now be removed from messages/groups.
+
+Negative numbers will now be parsed correctly when received in double fields.
+Before these would get converted into 0.
+
+If a null value is set into a character field, the field will be set as empty
+instead of putting a null character into the field.
+
+MySQLLog will use the correct log settings instead of getting its settings
+from the MySQLStore.
+
+Fixed bug where getWeekDay would sometimes return a negative number.
+
+Fixed various issues with FIX data dictionary files.
+
+Added many methods missing from the .NET and Java wrappers of the Session class.
+
+Event object can be passed a value to indicate how long to wait for the event
+instead of being hardcoded to 100 milliseconds.
+
+Fixed out of range error when pulling UtcTimeOnly fields out of groups.
+
+.NET Message wrapper can parse a message with validation turned off.
+setString method also exposed.  fromString method exposed to SessionID.
+
+fromString method exposed to SessionID in java API.
+
+DataDictionary will throw a .NET ConfigError exception instead of letting
+the uncaught unmanaged exception propogate, causing a crash.
+
+Time objects are no longer implemented using tm structure.
+
+1.10.2
+------
+Reset functionality will work if the user appends ResetSeqNumFlag=Y into the
+logon message from the toAdmin callback.  Allows for manual reset support.
+
+1.10.1
+------
+Fixed bugs regarding sequence reset functionality.  QuickFIX was not correctly
+respoding with a logon message when receiving a sequence reset.
+
+1.10.0
+------
+ResetSeqNumFlag is always set when expected sender and target message sequence 
+numbers are 1.  QuickFIX will also reset it's sequence numbers when it
+received a ResetSeqNumFlag set to 'Y'.
+
+ValidateUserDefinedFields configuration parameter available.  Defaults to Y
+which provides functionality of older releases.  When set to N, user defined
+fields will not be validated on incoming messages.
+
+Initiators and Acceptors can be reliably stopped and restarted as many times
+as you like.  Previously they could only be started and stopped once.
+
+Presence of required fields will be validated inside of required repeating
+groups.  Required fields will also be validated in the header and trailer.
+
+getSessions on acceptor and initiator will return a collection of managed
+sessions.
+
+Correctly handle scenario where a SocketConnection receives a first message
+that is not a logon.  Previously it would cause the session to be registered
+without ever unregistering and thus not allowing any new connections.
+
+Hearbeat monitor is reset when receiving a message with incorrect MsgSeqNum.
+
+Much more thorough logging inside of Session class.
+
+QuickFIX will add the text from a RejectLogon exception into the Text field
+of the Logout message.
+
+BusinessMessageReject, instead of Reject, will be send with a conditionally
+required field is not found.
+
+Double fields will no longer encode values less than 0.0001 in scientific
+notation.
+
+Initiator will no longer initiate socket connections outside of the session
+time.  Previously it would connect and immediately close connection during
+every retry interval.
+
+Receipt of a message without an empty MsgType field is now handled gracefully.
+
+Fixed bug where FileStore would not correctly persist numbers if set to a
+lower sequence number that contained less characters than the current
+sequence number.
+
+An exception thrown from Session::generateReject will no longer result in
+a system crash.
+
+SessionID strings can now be correctly parsed if the SenderCompID contains a
+dash.
+
+Very large resend request processing will not longer result in a stack overflow.
+
+If no length is found in the parser buffer, it will now be cleared out 
+instead of reused.
+
+SessionSettings adds extra sanity checks for configuration files, such as 
+ensuring initiator or acceptor are present and spelled correctly.
+
+Removed dependence of socket code on FIONREAD/NREAD.  The value of the recv
+call is now used to determine dropped connections. All socket code has been
+pulled out of the parser class.
+
+Logout message will be processed even if no Logon was received.
+
+C++ MessageCracker contains non-const onMessage methods for use with toAdmin 
+and toApp callbacks.
+
+Added block, poll, and isLoggedOn to initiator/acceptor for java and .NET APIs.
+
+isAdmin, isApp, and GetEnumerator available on Message class in .NET.
+GetEnumerator also available on Header and Trailer.
+
+force flag can be passed into initiator and acceptor stop methods in
+java and .NET
+
+Java will only be compiled under unix when using the -with-java configure
+directive.
+
+CheckSum will not become negative field is set with negative character.
+
+RuntimeErrors regarding port numbers no longer display large numbers as negative.
+
+Directories created by quickfix use more 0777 instead of 0700.
+
+Bug when copying SessionIDs with SessionQualifiers has been fixed.
+
+SessionSettings can be set at runtime using setter calls from java.
+
+Apple standards used when installing java libraries under MAC OS/X.
+
+1.9.4
+-----
+Fixed compilation and linking errors in .NET library.
+
+ThreadedSocketInitiator will reconnect when roaming into a sessions start time.
+
+Instead of the shell/bat scripts allocated extra memory for the JVM to build
+the java API, the memory is allocated in the ant script.
+
+Added mutex locker to Session::unregisterSession
+
+Added strptime implementation from PowerDog for Visual Studio. MySQL code will
+build under windows now.
+
+1.9.3
+-----
+.NET crashes do to random NullPointerExceptions has been fixed.  The
+.NET library seems to be completely stable now even under heavy load.
+
+When supplying a DataDictionary to Message::setString, the fields in
+repeating groups will now be placed in the correct order.
+
+Session will no longer send additional logout messages when one is pending.
+
+SocketAcceptor will no longer allow two connections to log on to the same
+session.
+
+When receiving a resend request for a larger than expected sequence number,
+QF will treat this like an INFINITE request.  This alleviates problems from
+receiving requests for extremely large numbers which cause a lot of lookups.
+
+When receiving a SequenceReset and GapFill flag set to N, the message will
+be processed even if the MsgSeqNum field is completely absent.
+
+Included message stores will now load up start times with the correct day
+of the year so week long sessions can safely be taken down and brought back
+up.
+
+Message and Parser can now handle messages with null characters.
+
+Session::sendToTarget is now able to route orders using a session qualifier.
+
+Message will be invalid in setString if it has trailing characters extra
+trailing characters that do not belong to a field.
+
+Messages with repeating groups can now have a properly implemented
+copy constructor.  It is safe to copy all messages.
+
+Added wrappers in .NET for some missing methods in DataDictionary and 
+Session classes.
+
+process_sleep has proper support for millisecond precision under windows.
+
+Some messages in FIX44.xml were identified with the wrong MsgType string.
+
+Added missing DKReason enumerations to FIX40.xml, FIX41.xml, and FIX42.xml
+
+Fixed problem where FieldMap::calculateString did not properly reset the
+output string under VC6.  This caused problems with resend requests.
+
+JNI library will check input parameters for nulls and throw a 
+NullPointerException if the method cannot handle a null value.
+
+Python library will be installed to the site module path.
+
+get method for retrieving a single message has been removed from MessageStore.
+Only the get methods for retreiving a range needs to be implemented now.
+
+Added missing UserRequest and UserResponse messages for FIX.4.4
+
+Session differentiates between dropping a connection and disconnecting
+normally in the event logs.
+
+1.9.2
+-----
+Fixed incorrect versioning of libraries under unix systems
+
+1.9.1
+-----
+Multi-character Currencies will no longer be rejected
+
+Fixed problems with MySQLStore loading in the wrong fields on startup.
+
+MySQLStore queries will retry once if connection to the daemon got dropped.
+
+Fixed link errors when building with some versions of Visual Studio.
+
+Fixed compilation errors when using STLPort
+
+Applied patches for SUNPro support
+
+Message::toXML() will place field values in a CDATA section in the text 
+element so it can handle special XML characters. Placing XML strings that
+contain CDATA sections into a xmldata field will still cause
+problems but I'm not sure much can be done about that.
+
+More updates to FIX40 and FIX41 data dictionaries.
+
+1.9.0
+-----
+Session time logic pulled out into new SessionTime class.  Now supports 
+weeklong sessions!  CME conterparties, start your engines!  Use the
+StartDay and EndDay configuration settings.
+
+Massive performance improvements.  Receiving and Sending message rates are
+dramatically improved.
+
+SessionQualifier added which allows you to uniquely identify a session with
+otherwise identical characteristics. You can now have multiple sessions
+which share the same BeginString, SenderCompID, and TargetCompID. Use the
+SessionQualifier configuration setting. *NOTE* this necessitated a change in 
+the MySQL schema.  Regenerate your databases.
+
+Fixed some compilation problems which manifested themselves under VB.NET
+
+Administrative processing will be done after receiving a message if necessary.
+This prevents dropping of heartbeats when a session is pegged with
+traffic, causing the session to terminate.
+
+Some improvement in compilation times.  I'd like to see more work done to
+bring them down.
+
+Made several updates and corrections to the data dictionary.
+
+Made compatible with SubPRO compiler. We do not own this compiler so users
+who do will need to keep us up to date on compatability issues.
+
+Fixed some potential memory leaks in the python API.
+
+If a message store cannot be created under java, a proper java exception will
+be thrown.
+
+SessionSettings will throw ConfigError as java exception.
+
+JavaLogFactory throw ConfigError if log cannot be created.
+
+Connection classes correctly propogate RecvFailed exception.
+
+getFieldType exposed in java DataDictionary, although the enumerations are not
+yet exposed.  You need to test against their integer values.
+
+1.8.0
+-----
+Completed python API. Now QuickFIX can be used to FIX enable python scripts. 
+This is currently only tested on linux.  It will probably work on solaris, and 
+FreeBSD. To enable the python interface, run configure with 
+--with-python=<dir containing Python.h>. Most of the python API is generated
+with SWIG (www.swig.org), thanks to them for updating their software to 
+accomodate our requirements. If you wish to regenerate the API off of the 
+SWIG interface definition file, you must get the latest SWIG from cvs.
+
+VB.NET API works again.
+
+Logout message with message indicated expected and received MsgSeqNum is sent
+if a too low sequence number is received.
+
+Initiator and Acceptor poll() commands now work under Windows.
+
+MySQL log and store will use proper escape sequences if any double quotes
+appear in the message.  Previously, these resulted in I/O errors.
+
+UtcDate becomes UtcDateOnly as per FIX.4.4
+
+Executor example application implemented in VB.NET and python. Documentation now
+includes VB.NET and python code snippets.
+
+Fixed a couple bugs with the MySQL message store. Some of the sequence numbers
+were being stored/retrieved in reverse. (thanks to Pasqale d'Aloise)
+
+Correct useful error is logged if a message is received with a sequence number
+too low without a PossDup flag.  The previous error "Field Not Found" was 
+incorrect.
+
+The default behavior in the MessageCracker for admin messages is to ignore the
+messages.  Application messages will continue to throw UnsupportedMessageType.
+
+Unit tests are always built without optimizations to speed up compilation.
+
+MySQL scripts, log, and message store explicitly set the user to root by
+default to reflect requirements of new versions of MySQL.
+
+JNI workspace now points to the project in the correct directory, so the JNI
+library will build normally without having to modify the workspace.
+
+The first message received within the sessions time frame should always be
+processed. There were some circumstances where it would not correctly identify
+itself as being in the session time until the second message.
+
+Fixed some minor issues with the libxml based parse to make it more generally
+useful.
+
+process_sleep can sleep for sub-second timespans again.
+
+Added constructor which takes in SessionSettings to .NET FileLogFactory
+
+1.7.1
+-----
+License moved over to quickfixengine.org. Otherwise it is identical.
+
+logon() and logoff() methods provided for the Session class, allowing you to 
+programatically.  Session times still work normally, but anytime during the 
+session time you can logoff and then re-logon.
+
+When stopping an initiator or acceptor, all sessions will go through a proper 
+logoff sequence instead of just disconnecting.  A session will be killed if it 
+does not receive a logoff response within 5 seconds.
+
+Sequence numbers will be incremented correctly when rejected a resent message.
+This fixes an infinite resend request problem.
+
+Reject messages will no longer reverse routing fields if they
+were sent as blanks, fixing an inifinite resend request problem.
+
+A Session's MessageStore can now be accessed with getStore() method. Both 
+getLog() and getStore() are available in Java and .NET APIs.
+
+Improved logging for disconnect scenarios.
+
+Message class now as isAdmin and isApp member functions.
+
+Message exposes iterators under Java which return fields as 
+StringFields. Now you can iterate through all fields to dynamically
+discover what is available in a message.
+
+removeField added to Java Message.
+
+More Session methods are exposed in Java and .NET.
+
+Methods to retrieve information about what is in a DataDictionary now exposed
+through Java interface.
+
+In Java, constructor that takes in a DataDictionary but turns off validation
+is exposed.
+
+getGroup under Java will throw a proper exception instead of aborting.
+
+In the data dictionary file, omments can be added between values under 
+enumerations without QuickFIX complaining about the format.
+
+Windows version whould now build with millisecond support.
+
+In FIX 4.0, Time type is treated like a UtcTimeStamp instead of a String.
+
+Example applications are part of the main build under *nix.
+
+stop on the initiator and acceptor will now work with the block() call.
+
+SecurityIDSource changed from CHAR to STRING in FIX44.xml
+
+Fixed warning when building .NET library.
+
+1.7.0
+-----
+FIX 4.4 support added to .NET! The .NET API had to be segmented into two
+assemblies: quickfix_net and quickfix_net_messages.  Why?  Well, the Managed
+C++ compiler has a bug that causes it to choke on any class with more than 17
+nested classes.  FIX 4.4 being the monster that it is, has several messages
+with more than 17 repeating groups (yikes!), so the generated code choked.
+This caused me some pain but eventually I came up with the less than ideal
+but workable solution of generating the message code as C#, which does not
+suffer from this problem.  So part of the .NET API is implemented in Managed
+C++ and part of it in C#.
+
+Java package changed from org.quickfix to just quickfix.  I know this is a
+horrible thing to do to you but the fact is we just don't have the domain
+name.  In the meantime I have registered quickfixengine.org (nothing is there yet)
+
+Session mutex is locked during a resend request.  This will prevent new messages
+from being sent in the middle of a resend request, which could cause all sorts
+of havoc.
+
+Support added for Mac OS X and FreeBSD. Mac OS X doesn't currently support
+sending milliseconds in UtcTimeStamps.  Some of the documentation for these
+two systems isn't complete, so you should follow the linux documentation.
+
+Session more gracefully handles sending of messages during the logon process.
+
+Session will disconnect instead of sending a reject message on a bad logon.
+In the future we may want to provide and option to send a logout with an
+error message, although this is not generally recommended.
+
+reverseRoute added to message which will fill in inversed routing information
+based on another message, allowing you to conveniently send a response.  The
+Session class uses this for reject messages in order to ensure optional routing
+tags are included in rejects.
+
+Acceptance test runner ported to ruby 1.8.
+
+For windows, debug libraries are placed into a separate debug directory instead
+of being named things like quickfix_debug.lib.  The reason is that .NET projects
+don't seem to support the notion of different versions of a build having different
+file names, just different directories.  So in order to standardize I had to
+change everything to follow this format.
+
+DataDictionary class has been wrapped for Java and .NET.  This allows you to
+pass a DD into a message constructor along with a string.  This will allow you 
+to parse messages with repeating groups.
+
+Fixed problems with Session states not automatically resetting to prepare for
+the start of a new session.  Sessions should now reset their state at the 
+correct times.
+
+Added toString() call to SessionID
+
+SessionID's can now be streamed in from a string. Useful if you want to stream out
+a list of sessions to a file and recreate the objects from that file.
+
+Values in the settings file are read by a more inclusive regexp so many more
+special characters can be used.
+
+UtcTimeStamps now support milliseconds.  SendingTimes for FIX versions
+4.2 and higher will be sent with millisecond resolution.  A new session level
+setting MillisecondsInTimestamp is provided.  The default value is Y.
+
+Messages will be correctly parsed if it receives a partial BodyLength field.  
+The parser will make sure the complete field has been received before parsing
+the rest of the message.
+
+The blockingStart call has been renamed to simply block, and a new poll call
+has been added to Initiator and Acceptor.  So options for running quickfix are
+through the start(), block(), and poll(), commands.
+
+getYearDay added to UtcTimeStamp and UtcTimeDate which returns the current day
+of the year. (e.g. January 31 = 31, Febuary 1 = 32 )
+
+Floating point fields will be accepted with multiple leading 0's.
+
+.NET now has wrappers for the low-level C++ accessors for Message and Group.
+
+Added support for isSetField to java.
+
+Corrected some threading issues in windows by switching from _beginthread to 
+beginthreadex and from GetCurrentThread to GetCurrentThreadId
+
+1.6.0
+-----
+FIX 4.4 support for C++ and Java APIs, with .NET on the way.  You can
+technically use 4.4 with .NET now, but the generated message classes
+are not yet available.
+
+Messages with repeating groups will no longer be silenty ignored when 
+no data dictionary is available.  QuickFIX will accept the message and 
+send a proper reject message at validation.  Reject message will be
+supplied for unspecified repeating tags, and count mismatches for
+repeating groups.
+
+ResendRequests are now done to INFINITY to reduce race condition
+scenarios.
+
+Out of sequence ResendRequest don't alter sequence numbers which
+would cause race conditions during simultaneous ResendRequests.
+
+Each C++ message is placed in its own file. This separation repairs
+issues with Visual Studio running out of heap space.  This does mean,
+however, that you will need to include the header for each individual
+you intend on using instead of just including Messages.h
+
+Fields of type MultipleValueString that have enumerations will check
+each individual value instead of checking the string as a whole. For
+instance if you are sent a MVS containing "A C 5", the validator will
+verify that A C and 5 are all valid enumerations.
+
+More descriptive error messages when reading invalid DataDictionary
+files.  QuickFIX will no longer crash when givin a badly formatted
+XML document, instead a ConfigError is thrown.
+
+Repeating groups within Component are now read correctly from the
+DataDictionary file.
+
+DataDictionary will enforce that field names are unique.  This
+prevents accidentally assigning two different field names to the
+same tag number.
+
+Fixed a bug where messages sent while logged off were not stored in
+the MessageStore, causing them to never be resent.
+
+By popular demand, the .NET API now exposes the isSetField call. This
+allows .NET users to check for the presence of a field in a message.
+
+Fixed bug where re-used Field classes would not recalculate their
+length and checksum when their values changes, causing messages to
+be sent out with incorrect lenths or checksums.
+
+Fixed bug that cause the sendToTarget( Message, String, String )
+signature would always fail from the Java API.
+
+Fixed incomplete copy operator for DataDictionary.
+
+ScreenLog now displays proper timestamps.
+
+libxml2 can be linked into windows build as an alternative to MSXML.
+
+Added accessor to Session class for the DataDictionary.
+
+Banzai should load correctly with the supplied configuration file.
+
+socket_t will be defined as int if not defined by the system. This
+allows QF to be compiled on older systems such as Solaris 2.6
+
+1.5.0
+-----
+Support for DATA fields. This will allow to safely send encrypted and
+compressed fields.  Out of necessity, FIX parser uses the length field
+instead of just looking for 10=SOH. This means behavior will be slightly
+different when receiving messages with an incorrect length.
+
+Acceptor and Initiator start() method is a non-blocking call. onRun
+is no longer called in your application.  Instead you must call stop on
+your initiator or acceptor when you want it to shut down.
+
+Fixed several problems with parsing nested repeating groups and groups
+with components.
+
+Added UseDataDictionary field which defaults to Y. You must explicitly
+set this field to N if you DONT want to use a DataDictionary.
+
+New include structure for C++. Includes are now in the form of
+quickfix/[file].h instead of the old quickfix/include/[file].h
+
+Several optimizations added to increase the speed of creating, parsing,
+and sending messages.  Overall performance of the engine should be
+considerably better.  Messages with repeating groups should show dramatic 
+performance increase.
+
+All libraries are now build as shared libraries. This also doubles the speed
+of the build under gcc because object files only need to be compiled once
+instead of twice as before.
+
+Header file dependencies have been reduced to speed up build. This may means
+headers that were previously pulled in automatically via other header files,
+may no longer do so.  You will now need to explicitly include these files where
+needed.
+
+Fixed some resource leaks when shutting down threads.
+
+Added java acceptance tests. All FIX test scripts can now be run with
+the runat_java and runat_java.bat commands in the test directory. FIX 4.3
+tests now run with runat_threaded
+
+Queued logon messages (logons messages received with sequence number to
+high), are skipped when processing queue.
+
+Build will pull CFLAGS, CXXFLAGS, and LDFLAGS in from the environment.
+Default compiler flags are now -O2 -g. This may cause problems with some
+older versions of gcc. Set CXXFLAGS to -O or blank if you have problems
+compiling
+
+Added new 'void toString( std::string& )' and 'void toXML( std::string& )' 
+method calls. These are more efficient than 'string toString()' and
+'string toXML' calls.  The new versions should be used if these methods
+are called in a loop for better performance.
+
+FileLog forcefully flushes writes so the state of the storage file is
+always up to date.
+
+1.4.1
+-----
+Fixed compilation errors when building under gcc 3.x (matching throw
+specifiers, JNI patch).  Also got rid of warnings caused by generated
+source files not ending with newlines.
+
+getValue call in Java and .NET message class will throw and IncorrectDataFormat
+exception instead of just crashing.  In C++, method also throws 
+IncorrectDataFormat instead of FieldConvertError.
+
+QuickFIX C++ call stack is available by running configure with the
+--enable-callstack option, or defining USING_CALLSTACK in windows_config.h
+
+Engine will no longer crash when specifying an invalid hostname
+
+Added ConfigError throw specifier to Initiator/Acceptor start method. 
+
+Removed ^M characters from install-sh which caused compile problems on
+some systems.
+
+Fixed code generation so groups withing components within groups are
+show up in message classes.
+
+Added missing SEQNUM type to DataDictionary.
+
+Increased heap size for Visual Studio so heap allocation errors are
+less likely when compiling.
+
+In Java, renamed Session class to SessionSettings to match the C++ API
+
+Fixed bug where session times would not ever reset when the start time
+is greater than the end time.
+
+Reentrant system calls are used when they are available. Fixed
+unsynchronized resource bug on multi-processor machines.
+
+Initiator and Acceptor use correct result after spawning thread,
+instead of assigning the boolean result as the threadid.
+
+Fixed deadlock in ThreadedSocketAcceptor and ThreadedSocketInitiator
+when shutting down.
+
+UtcDate now calls the correct constructor so it is initialized
+properly.
+
+Java MessageCracker now supports FIX 4.3 messages.
+
+1.4.0
+-----
+Support for FIX 4.3
+
+New less redundant DataDictionary format, with support for component blocks
+
+reset method on Session now available in JAVA and .NET API's
+
+setNextSenderMsgSeqNum and setNextTargetMsgSeqNum available on session in all API's
+
+Changes made to messages in toAdmin and toApp in JAVA are correctly applied when sending
+
+new throw specifiers on fromAdmin and fromApp message. Prevents
+crashes from occuring when no data dictionary is used.
+
+isSetField method added to JAVA API. Methods in version specific
+messages also have methods to check if fields are set.
+
+sendToTarget throws SessionNotFound exception instead of just crashing
+under .NET
+
+Fixed memory leaks in JNI interface
+
+Fixed race condition between sending application and admin messages
+
+Processing of Queue in ThreadedSocketConnection modified so it can
+better handle large sustained throughput
+
+.NET namespace changed from Fix to QuickFix. Resolves conflict with
+unmanaged FIX namespace allowing library to be used from VB.NET
+
+Messages with repeating groups no longer take in the number of
+repeating groups in the constructor.  This value was always
+overwritten when adding groups anyway.
+
+The start method in Initiator and Acceptor can throw an exception if a
+serious error occurs.
+
+SocketAcceptor and ThreadedSocketAcceptor will no longer allow you to 
+silently takeover a used port.  An exception will be thrown instead.
+
+New constructor for SessionID takes strings.
+
+New setting ValidateFieldsHaveValue can be set to N to prevent
+rejecting messages with empty fields.
+
+MySQL MessageStore will properly reset sequence numbers
+
+Java field classes have final integers which identify the tag number
+of the field.
+
+Java and .NET will no longer crash when a incorrectly formatted field
+is read from a session without a data dictionary.
+
+1.3.2
+-----
+More portable file copies during build process on unix
+
+1.3.1
+-----
+Fixed memory leak in repeating groups caused by FieldMap not calling
+clear() in destructor.
+
+Corrected some minor errors building sample applications on some systems.
+
+1.3.0
+-----
+Support for java on linux and solaris! Note some compilers/linux distributions
+dont seem to do as well with this as others.
+
+Added support for repeating groups in .NET and java APIs.
+
+Event and message logging now available through the Log interface. This is
+separate from the MessageStore which is now more acurately refered to as
+a state mechanism.
+
+MySQLFileStore added.  Now QuickFIX can maintain state in a production quality
+open source database right out of the box.
+
+--with-stlport configure option added for building with STLport.  This
+fixes stability problems that users have been experiencing on
+multi-processor machines with 2.95.x compilers.
+
+Message decoding has been optimized. Decoding FIX messages is now 3
+times faster than before.
+
+Message class can now output FIX messages as XML.
+
+Fixed copy operator for FieldMaps that contain repeating groups.
+
+Fixed resource leaks in .NET API.  Message class should now be garbage 
+collected correctly. Also implemented IDisposable interface for
+Message. Be sure you know what you are doing before using this!
+
+DataDictionary parser works much better.  In particular it is able to 
+generate the FIX40.xml and FIX41.xml files much more accurately.
+
+Test Requests are now sent properly during times of high activity.
+
+Test Request time span shortened for a timed out connection.
+
+MessageStore sets and gets strings instead of messages. This allows
+the session to properly parse stored messages using its data
+dictionary. The old way was causing problems with resends with 
+repeating groups.
+
+All MessageStore functions can now throw an IOException. If a session traps
+an IOException it will consider it a serious problem and disconnect.
+
+The get method in MessageStore that asks for a range is now a void method
+instead of a boolean. If there is a problem retrieving a message, throw an
+IOException.  If you are asked for a message you do not have, just send back
+whatever is available within the range.
+
+Faster load times for sessions that share a data dictionary. Each 
+DataDictionary file is now only parsed once on startup.
+
+In JAVA booleans are properly represented as booleans instead of Strings
+
+Currency types are properly represented as Strings
+
+Rejecting a resent message will no longer increment the expected
+sequence number.
+
+Can now properly accept a message with repeating group where the
+counter is set to zero.
+
+Continuous builds now being run on windows-vc6, windows-vc7, and 
+linux-pgcc-2-95-2, and solaris-gcc-2-95-3-stlport
+
+Message::getString() deprecated in favor of Message::toString()
+
+1.2.1
+-----
+config.h no longer included from Utility.h.  This was causing problems
+when people wanted to build quickfix application without autotools.
+
+More robust detection of dropped/bad sockets. One of our users ran
+into a problem with this during certification with the CME. He has
+confirmed that it works correctly now.
+
+Closing acceptors now works in all situations.
+
+Mutex locking in session is a little smarter, making it easier to
+syncrhonize applications.
+
+code is now auto formatted with astyle. This makes it easier for
+people to contribute code without having to worry as much about
+conforming to coding standards.
+
+1.2.0
+-----
+First release of .NET API for QuickFIX. The API is mostly a direct
+port of the JAVA API, future versions well attempt to refine this API
+to use more .NET specific constructs. QuickFIX applications can now be
+written in C# or VB.NET or any other CLR language.
+
+Documentation covers all API's, C++, Java, and .NET
+
+New example application executor. Executor example is implemented in
+C++, Java and C# for side by side comparison.
+
+Fixed bug where the session time range was not calculated correctly
+when minutes or seconds were involved. (.i.e., is that start time was
+set to 12:30:00, the 30 would cause problems, wheras 12:00:00 would be fine).
+
+Resend requests with EndSeqNo set to 0 (>=FIX 4.2) or 999999 (<=FIX
+4.1) are now supported.
+
+Possible duplicate messages with a sequence number that is too low
+will no longer be forwarded to the application callback.
+
+FIX Specification parser modified so it will now capture some fields
+that it was missing. The FIX42.xml file in particular is more complete.
+
+Made Java API more consistant with C++ API.
+
+1.1.1
+-----
+Fixed memory leak caused by copying repeating groups.
+
+Added acceptance tests for FIX 4.0 and 4.1
+
+When new fields are added to the header or trailer portion of the XML
+data dictionary, QuickFIX will now handle them appropriately.
+
+Header fields, not just body fields, can now be added to messages
+passing through toApp and toAdmin callbacks
+
+New setting CheckLatency and MaxLatency are available for session 
+configuration. CheckLatency defaults to Y and determines if a session
+will check if a message looks too old to process. MaxLatency defaults
+to 120 and is the maximum number of seconds a message can be out of
+date and still be considered good.
+
+New setting ValidateFieldsOutOfOrder is available for session
+configuration. Sets whether or not header and body fields can be out
+of order. Useful for connecting to systems that don't properly sort their 
+fields.
+
+New setting LogonTimeout is availbale for session configuration. 
+Number of seconds QuickFIX will wait to receive a logon response. 
+Defaults to 10.
+
+Another fix put in to allow string based enumeration to be properly validated.
+
+RefMsgType field no longer added to reject messages in versions
+earlier than 4.2
+
+SequenceReset messages are now appropriately send with OrigSendingTime field.
+
+RejectLogon, DoNotSend and UnsupportedMessageType exceptions added to
+JAVA interface.
+
+New settings ResetOnLogout and ResetOnDisconnect will reset sequence
+numbers when a session is respectively normally or abnormally terminated.
+
+<string> is included from Exceptions.h, which makes QF compilable with STLPort.
+
+1.1.0
+-----
+Added support for messages with repeating groups.
+
+Added ThreadedSocketInitiator and ThreadedSocketAcceptor. Each session
+has its own thread for listening on a socket and one for processing messages.
+
+The signature for toApp and toAdmin have changed from 
+   ( const Message&, const SessionID& )
+to ( Message&, const SessionID& ). 
+This allows applications to add fields to messages before they are sent out. 
+Particularly useful for administrative messages that need fields that arn't
+added by default.
+
+Filestore is much more memory efficient. Only file offsets are stored in memory
+and messages are retreived on in as needed basis. This keeps memory use way
+down and also is a little faster for normal operations.
+
+On Linux and Solaris upgraded from libxml to libxml2. It is recomended by 
+the libxml guys that all new applications use libxml2. configure will verify
+that libxml is installed on a system and automatically add the necessary
+command line parameters.
+
+Possible duplicate messages are now passed to the fromAdmin and
+fromApp application callbacks. Applications must now check for this
+field and determine how possible duplicate messages should be handled.
+
+Values.h correctly generated enumerations for fields of type INT.
+
+Validation works with STRING enumerations, not just CHAR and INT.
+
+Sockets are now properly closed if a connection fails. This fixes a
+leak in socket resources that appeared after a large number of
+reconnect attempts.
+
+RefTagID, RefMsgType are no longer added to reject message in versions
+of FIX 4.1 and earlier. BusinessMessageReject no longer used in FIX
+versions 4.1 and earlier.
+
+Improved DataDictionary generation. More enumerations are listed.
+ 
+1.0.4
+-----
+Fixed bug in FileStore where .session file was overwritten on reload.
+
+SocketInitiator now supports multiple alternate host and ports which allows
+QuickFIX to take advantage of systems with failover servers.
+
+Custom build step under windows is now compatible with Visual Studio 7.
+
+Changed fields from template instantiated classes to standard classes in
+order to stop Visual Studio 6 from crashing while in auto-complete mode.
+
+Changed char pointer comparison operators for StringField to friend functions
+so left hand side comparisons can be done such as "value" == senderCompID.
+
+Began implementation of repeating groups.
+	
+1.0.3
+-----
+Added unit testing framework to ordermatch
+
+Fixed bug in ordermatch where executing a partailly filled order resulted in
+the order being left open with a negative ammount.
+
+Added commands to standard input for ordermatch to list available symbols and
+for displaying a book.
+
+Began implementation of C API.
+
+Added target field to order table in banzai.
+
+Banzai can now properly handle receiving executions from multiple targets
+
+1.0.2
+-----
+Fixed an incorrect number 84600 in FieldTypes.h with the
+constant UTC_DAY which is the correct 86400
+
+1.0.1
+-----
+Several classes deriving from FIX::Application had different throw specifiers 
+than the base class.  This caused compilation errors with some compilers.  
+This has been corrected.
+
+FAQ has been updated.

BIN
api/fix/src/Release/ccall_example.exe


BIN
api/fix/src/Release/ccall_example.pdb


BIN
api/fix/src/Release/cfix.exp


BIN
api/fix/src/Release/cfix.pdb


BIN
api/fix/src/Release/sync.exp


BIN
api/fix/src/Release/sync.pdb


+ 12 - 0
api/fix/src/THANKS

@@ -0,0 +1,12 @@
+Jim Downs
+Chris Charlier
+Jim Northey
+Roy Singham
+Dan Goodwin
+Kyle Ragsdale
+Pat Sarnacke
+Lenny Shleymovich
+Benjamin Blair
+Pavel Zeldin
+Bill Adelman
+John Lopez

+ 1 - 0
api/fix/src/bin/Makefile.am

@@ -0,0 +1 @@
+SUBDIRS = cfg

+ 1 - 0
api/fix/src/bin/cfg/Makefile.am

@@ -0,0 +1 @@
+EXTRA_DIST = *.cfg

+ 25 - 0
api/fix/src/bin/cfg/banzai.cfg

@@ -0,0 +1,25 @@
+[DEFAULT]
+ConnectionType=initiator
+ReconnectInterval=60
+FileStorePath=store
+FileLogPath=log
+StartTime=00:00:00
+EndTime=00:00:00
+UseDataDictionary=Y
+DataDictionary=D:\dev\ea_sign\clib\tools\fix\spec\FIX44.xml
+
+# standard config elements
+[SESSION]
+# inherit ConnectionType, ReconnectInterval and SenderCompID from default
+BeginString=FIX.4.4
+SenderCompID=DiSanBo
+TargetCompID=LMXBDM
+SocketConnectHost=localhost
+SocketConnectPort=11434
+HeartBtInt=10
+Username=DiSanBo
+Password=Password123
+ResetOnDisconnect=N
+ResetOnLogout=N
+ResetOnLogon=Y
+ReconnectInterval=2

+ 46 - 0
api/fix/src/bin/cfg/banzai.cfg.0

@@ -0,0 +1,46 @@
+[DEFAULT]
+ConnectionType=initiator
+HeartBtInt=30
+FileStorePath=store
+StartTime=00:00:00
+EndTime=00:00:00
+UseDataDictionary=N
+SocketConnectHost=localhost
+
+[SESSION]
+BeginString=FIX.4.2
+SenderCompID=CLIENT1
+TargetCompID=EXECUTOR
+SocketConnectPort=5001
+
+[SESSION]
+BeginString=FIX.4.2
+SenderCompID=CLIENT2
+TargetCompID=EXECUTOR
+SocketConnectPort=5001
+
+[SESSION]
+BeginString=FIX.4.2
+SenderCompID=CLIENT1
+TargetCompID=ORDERMATCH
+SocketConnectPort=5002
+
+[SESSION]
+BeginString=FIX.4.2
+SenderCompID=CLIENT2
+TargetCompID=ORDERMATCH
+SocketConnectPort=5002
+
+[SESSION]
+BeginString=FIXT.1.1
+DefaultApplVerID=FIX.5.0
+SenderCompID=CLIENT1
+TargetCompID=EXECUTOR
+SocketConnectPort=5001
+
+[SESSION]
+BeginString=FIXT.1.1
+DefaultApplVerID=FIX.5.0
+SenderCompID=CLIENT2
+TargetCompID=EXECUTOR
+SocketConnectPort=5001

+ 95 - 0
api/fix/src/bin/cfg/executor.cfg

@@ -0,0 +1,95 @@
+[DEFAULT]
+ConnectionType=acceptor
+SocketAcceptPort=5001
+SocketReuseAddress=Y
+StartTime=00:00:00
+EndTime=00:00:00
+FileLogPath=log
+
+[SESSION]
+BeginString=FIX.4.0
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT1
+FileStorePath=store
+DataDictionary=../spec/FIX40.xml
+
+[SESSION]
+BeginString=FIX.4.0
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT2
+FileStorePath=store
+DataDictionary=../spec/FIX40.xml
+
+[SESSION]
+BeginString=FIX.4.1
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT1
+FileStorePath=store
+DataDictionary=../spec/FIX41.xml
+
+[SESSION]
+BeginString=FIX.4.1
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT2
+FileStorePath=store
+DataDictionary=../spec/FIX41.xml
+
+[SESSION]
+BeginString=FIX.4.2
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT1
+FileStorePath=store
+DataDictionary=../spec/FIX42.xml
+
+[SESSION]
+BeginString=FIX.4.2
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT2
+FileStorePath=store
+DataDictionary=../spec/FIX42.xml
+
+[SESSION]
+BeginString=FIX.4.3
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT1
+FileStorePath=store
+DataDictionary=../spec/FIX43.xml
+
+[SESSION]
+BeginString=FIX.4.3
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT2
+FileStorePath=store
+DataDictionary=../spec/FIX43.xml
+
+[SESSION]
+BeginString=FIX.4.4
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT1
+FileStorePath=store
+DataDictionary=../spec/FIX44.xml
+
+[SESSION]
+BeginString=FIX.4.4
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT2
+FileStorePath=store
+DataDictionary=../spec/FIX44.xml
+
+[SESSION]
+BeginString=FIXT.1.1
+DefaultApplVerID=FIX.5.0
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT1
+FileStorePath=store
+TransportDataDictionary=../spec/FIXT11.xml
+AppDataDictionary=../spec/FIX50.xml
+
+[SESSION]
+BeginString=FIXT.1.1
+DefaultApplVerID=FIX.5.0
+SenderCompID=EXECUTOR
+TargetCompID=CLIENT2
+FileStorePath=store
+TransportDataDictionary=../spec/FIXT11.xml
+AppDataDictionary=../spec/FIX50.xml

+ 36 - 0
api/fix/src/bin/cfg/ordermatch.cfg

@@ -0,0 +1,36 @@
+[DEFAULT]
+ConnectionType=acceptor
+SocketAcceptPort=5002
+SocketReuseAddress=Y
+FileStorePath=store
+StartTime=00:00:00
+EndTime=00:00:00
+DataDictionary=../spec/FIX42.xml
+
+[SESSION]
+BeginString=FIX.4.2
+SenderCompID=ORDERMATCH
+TargetCompID=CLIENT1
+
+[SESSION]
+BeginString=FIX.4.2
+SenderCompID=ORDERMATCH
+TargetCompID=CLIENT2
+
+[SESSION]
+BeginString=FIXT.1.1
+DefaultApplVerID=FIX.5.0
+SenderCompID=ORDERMATCH
+TargetCompID=CLIENT1
+FileStorePath=store
+TransportDataDictionary=../spec/FIXT11.xml
+AppDataDictionary=../spec/FIX50.xml
+
+[SESSION]
+BeginString=FIXT.1.1
+DefaultApplVerID=FIX.5.0
+SenderCompID=ORDERMATCH
+TargetCompID=CLIENT2
+FileStorePath=store
+TransportDataDictionary=../spec/FIXT11.xml
+AppDataDictionary=../spec/FIX50.xml

+ 21 - 0
api/fix/src/bin/cfg/tradeclient.cfg

@@ -0,0 +1,21 @@
+[DEFAULT]
+ConnectionType=initiator
+ReconnectInterval=60
+FileStorePath=store
+FileLogPath=log
+StartTime=00:00:00
+EndTime=00:00:00
+UseDataDictionary=Y
+DataDictionary=../spec/FIX42.xml
+HttpAcceptPort=9911
+
+# standard config elements
+
+[SESSION]
+# inherit ConnectionType, ReconnectInterval and SenderCompID from default
+BeginString=FIX.4.2
+SenderCompID=CLIENT1
+TargetCompID=EXECUTOR
+SocketConnectHost=127.0.0.1
+SocketConnectPort=5001
+HeartBtInt=30 

BIN
api/fix/src/bin/debug/executor_cpp/executor_cpp.exe


BIN
api/fix/src/bin/debug/executor_cpp/executor_cpp.ilk


BIN
api/fix/src/bin/debug/ordermatch/ordermatch.exe


BIN
api/fix/src/bin/debug/ordermatch/ordermatch.ilk


BIN
api/fix/src/bin/debug/tradeclient/tradeclient.exe


BIN
api/fix/src/bin/debug/tradeclient/tradeclient.ilk


+ 4 - 0
api/fix/src/bin/run_banzai.bat

@@ -0,0 +1,4 @@
+set JAR=../lib/jar
+set CLASSPATH=%JAR%/banzai.jar;%JAR%/quickfixj-all-1.4.0.jar;%JAR%/slf4j-api-1.5.3.jar;%JAR%/slf4j-jdk14-1.5.3.jar;%JAR%/mina-core-1.0.3.jar;%JAR%/backport-util-concurrent-3.0.jar;%JAR%/log4j.jar
+
+java Banzai

+ 5 - 0
api/fix/src/bin/run_banzai.sh

@@ -0,0 +1,5 @@
+#!/bin/sh
+JAR=../lib/jar
+RUN_CLASSPATH=$JAR/banzai.jar:$JAR/quickfixj-all-1.4.0.jar:$JAR/slf4j-api-1.5.3.jar:$JAR/slf4j-jdk14-1.5.3.jar:$JAR/mina-core-1.0.3.jar:$JAR/backport-util-concurrent-3.0.jar:$JAR/log4j.jar
+
+java -cp $RUN_CLASSPATH Banzai

+ 1 - 0
api/fix/src/bin/run_executor_cpp.bat

@@ -0,0 +1 @@
+release\executor_cpp\executor_cpp.exe cfg\executor.cfg

+ 2 - 0
api/fix/src/bin/run_executor_cpp.sh

@@ -0,0 +1,2 @@
+#!/bin/sh
+./executor cfg/executor.cfg

+ 1 - 0
api/fix/src/bin/run_executor_cpp_debug.bat

@@ -0,0 +1 @@
+debug\executor_cpp\executor_cpp.exe cfg\executor.cfg

+ 1 - 0
api/fix/src/bin/run_executor_csharp.bat

@@ -0,0 +1 @@
+release\executor_csharp\executor_csharp.exe cfg\executor.cfg

+ 1 - 0
api/fix/src/bin/run_executor_csharp_debug.bat

@@ -0,0 +1 @@
+debug\executor_csharp\executor_csharp.exe cfg\executor.cfg

+ 4 - 0
api/fix/src/bin/run_executor_python.sh

@@ -0,0 +1,4 @@
+#!/bin/sh
+export PYTHONPATH=../lib/python
+
+python ../examples/executor/python/executor.py cfg/executor.cfg

+ 6 - 0
api/fix/src/bin/run_executor_ruby.sh

@@ -0,0 +1,6 @@
+#!/bin/sh
+export LD_LIBRARY_PATH=../src/C++/.libs
+export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH
+export RUBYLIB=../lib/ruby
+
+ruby -I ../lib/ruby ../examples/executor/ruby/executor.rb cfg/executor.cfg

+ 1 - 0
api/fix/src/bin/run_executor_vbnet.bat

@@ -0,0 +1 @@
+release\executor_vbnet\executor_vbnet.exe cfg\executor.cfg

+ 1 - 0
api/fix/src/bin/run_executor_vbnet_debug.bat

@@ -0,0 +1 @@
+debug\executor_vbnet\executor_vbnet.exe cfg\executor.cfg

+ 1 - 0
api/fix/src/bin/run_ordermatch.bat

@@ -0,0 +1 @@
+release\ordermatch\ordermatch.exe cfg\ordermatch.cfg

+ 2 - 0
api/fix/src/bin/run_ordermatch.sh

@@ -0,0 +1,2 @@
+#!/bin/sh
+./ordermatch cfg/ordermatch.cfg

+ 1 - 0
api/fix/src/bin/run_ordermatch_debug.bat

@@ -0,0 +1 @@
+debug\ordermatch\ordermatch.exe cfg\ordermatch.cfg

+ 1 - 0
api/fix/src/bin/run_tradeclient.bat

@@ -0,0 +1 @@
+release\tradeclient\tradeclient.exe cfg\tradeclient.cfg

+ 2 - 0
api/fix/src/bin/run_tradeclient.sh

@@ -0,0 +1,2 @@
+#!/bin/sh
+./tradeclient cfg/tradeclient.cfg

+ 1 - 0
api/fix/src/bin/run_tradeclient_debug.bat

@@ -0,0 +1 @@
+debug\tradeclient\tradeclient.exe cfg\tradeclient.cfg

+ 20 - 0
api/fix/src/bootstrap

@@ -0,0 +1,20 @@
+#!/bin/sh
+rm -rf *.cache
+rm -rf config
+mkdir config
+echo aclocal...
+aclocal
+echo autoheader...
+autoheader
+echo libtoolize...
+`which glibtoolize`
+if [ $? = 0 ]; then
+    glibtoolize --force --copy --automake
+else
+    libtoolize --force --copy --automake
+fi
+echo automake...
+automake --foreign --add-missing --copy
+echo autoconf...
+autoconf
+echo "Now run configure with any arguments necessary"

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff