title: unordered_set EXC_BAD_ACCESS in constrain_hash
body: <p><strong>EDIT: This is fixed now. Noticed on the apple forums that other people have experienced issues with Xcode 8.3. I reverted back to Xcode 8.2 from Xcode version 8.3 / 8.3.1 and the crash has stopped.</strong> </p>
  
  <p>I have an unordered_set that causes a EXC_BAD_ACCESS in the constrain_hash function found in stl</p>
  
  <p>I have recreated the code that is using the unordered_set below.</p>
  
  <p>I cant seem to work out what is causing this. My code builds and runs in visual studio but in xcode causes a run time crash. If i comment out the code using the unordered_set my app will run fine. </p>
  
  <p>All i can think of is it is overwriting memory somehow. I recently updated to Xcode to 8.3.1 also. The code below is being run within a thread also. </p>
  
  <pre><code>enum EPRIMARY_STATE
  {
      e1_PRIMARY_STATE,e2_PRIMARY_STATE,e3_PRIMARY_STATE,e4_PRIMARY_STATE,e5_PRIMARY_STATE,e6_PRIMARY_STATE,e7_PRIMARY_STATE,e8_PRIMARY_STATE,eMAX_PRIMARY_STATE
  };
  
  enum EMAIN_STATE
  {
      eFIRST_STATE,eSECOND_STATE,eTHIRD_STATE,eFOUR_STATE,eFIVE_STATE,eSIX_STATE,eSEVEN_STATE,eEIGHT_STATE,eNINE_STATE,eTEN_STATE,e11_STATE,
      e12_STATE,e13_STATE,e14_STATE,e15_STATE,e16_STATE,e17_STATE,e18_STATE,e19_STATE,e20_STATE,
      e21_STATE,e22_STATE,e23_STATE,e24_STATE,e25_STATE,e26_STATE,e27_STATE,e28_STATE,e29_STATE,
      e30_STATE,e31_STATE,e32_STATE,e33_STATE,e34_STATE,e35_STATE,e36_STATE,e37_STATE,e38_STATE,
      e39_STATE,e40_STATE,e41_STATE,e42_STATE,e43_STATE,e44_STATE,e45_STATE,e46_STATE,e47_STATE,
  
      eMAX_STATE,
      eINVALID_STATE
  };
  
  enum EBackUpID
  {
      e1_BackUpID,e2_BackUpID,e3_BackUpID,e4_BackUpID,e5_BackUpID,
      e6_BackUpID,e7_BackUpID,e8_BackUpID,e9_BackUpID,e10_BackUpID,
      e11_BackUpID,e12_BackUpID,e13_BackUpID,e14_BackUpID,e15_BackUpID,e16_BackUpID,
      e17_BackUpID,e18_BackUpID,e19_BackUpID,e20_BackUpID,e21_BackUpID,e22_BackUpID,
      e23_BackUpID,e24_BackUpID,e25_BackUpID,e26_BackUpID,e27_BackUpID,e28_BackUpID,
      e29_BackUpID,e30_BackUpID,e31_BackUpID,e32_BackUpID,e33_BackUpID,e34_BackUpID,
      e35_BackUpID,e36_BackUpID,e37_BackUpID,e38_BackUpID,e39_BackUpID,e40_BackUpID,
      e41_BackUpID,e42_BackUpID,e43_BackUpID,
      e44_BackUpID,e45_BackUpID,e46_BackUpID,e47_BackUpID,e48_BackUpID,e49_BackUpID,
      e50_BackUpID,e51_BackUpID,e52_BackUpID,e53_BackUpID,e54_BackUpID,e55_BackUpID,
      e56_BackUpID,e57_BackUpID,e58_BackUpID,e59_BackUpID,e60_BackUpID,e61_BackUpID,
      e62_BackUpID,e63_BackUpID,e64_BackUpID,e65_BackUpID,e66_BackUpID,e67_BackUpID,
      e68_BackUpID,e69_BackUpID,e70_BackUpID,e71_BackUpID,e72_BackUpID,e73_BackUpID,
      e74_BackUpID,e75_BackUpID,e76_BackUpID,e77_BackUpID,e78_BackUpID,e79_BackUpID,
      e80_BackUpID,e81_BackUpID,e82_BackUpID,e83_BackUpID,e84_BackUpID,e85_BackUpID,
      e86_BackUpID,e87_BackUpID,e88_BackUpID,e89_BackUpID,e90_BackUpID,e91_BackUpID,
      e92_BackUpID,e93_BackUpID,e94_BackUpID,e95_BackUpID,e96_BackUpID,e97_BackUpID
  };
  
  class CSet
  {
  public:
      //  this is used to create the object that will be used
      CSet(): m_ePrimS(e1_PRIMARY_STATE), m_eMainState(eFIRST_STATE), m_eBackUpID(e1_BackUpID) {}
  
      CSet( const EPRIMARY_STATE ePrimS, const EMAIN_STATE eMainState, const EBackUpID eBackUpID ): m_ePrimS(ePrimS), m_eMainState(eMainState), m_eBackUpID(eBackUpID) {}
  
      bool operator==( const CSet&amp; a ) const { return( (a.m_ePrimS == m_ePrimS) &amp;&amp; (a.m_eMainState == m_eMainState) ); }
  
      EPRIMARY_STATE m_ePrimS;
      EMAIN_STATE m_eMainState;
      EBackUpID m_eBackUpID;
  };
  
  class CSetHash
  {
  public:
      std::size_t operator() ( const CSet&amp; a ) const { return( (33 * (a.m_ePrimS+1)) ^ (a.m_eMainState + 1) ); }
  };
  
  typedef std::unordered_set&lt; CSet, CSetHash &gt; TAnimHashTable;
  
  class CTest
  {
      TAnimHashTable m_aSetHash;
  
  public:
      void Do() {
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eFIRST_STATE, e4_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eFIRST_STATE, e5_BackUpID ) ); m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eFIRST_STATE, e6_BackUpID ) );
          m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eFIRST_STATE, e7_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eFIRST_STATE, e8_BackUpID ) );m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eFIRST_STATE, e9_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eFIRST_STATE, e11_BackUpID ) );m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eFIRST_STATE, e10_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eSECOND_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eSECOND_STATE, e13_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eSECOND_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eSECOND_STATE, e15_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eSECOND_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eSECOND_STATE, e17_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eSECOND_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eSECOND_STATE, e18_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e31_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e31_STATE, e13_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e31_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e31_STATE, e15_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e31_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e31_STATE, e17_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e31_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e31_STATE, e18_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e32_STATE, e12_BackUpID ) );m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e32_STATE, e13_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e32_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e32_STATE, e15_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e32_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e32_STATE, e17_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e32_STATE, e19_BackUpID ) );m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e32_STATE, e18_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eTHIRD_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eTHIRD_STATE, e13_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eTHIRD_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eTHIRD_STATE, e15_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eTHIRD_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eTHIRD_STATE, e17_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eTHIRD_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eTHIRD_STATE, e18_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e28_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e28_STATE, e13_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e28_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e28_STATE, e15_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e28_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e28_STATE, e17_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e28_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e28_STATE, e18_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e29_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e29_STATE, e13_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e29_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e29_STATE, e15_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e29_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e29_STATE, e17_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e29_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e29_STATE, e18_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eSEVEN_STATE, e52_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eSEVEN_STATE, e48_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eSEVEN_STATE, e50_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eSEVEN_STATE, e51_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eSEVEN_STATE, e49_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eSEVEN_STATE, e54_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eSEVEN_STATE, e53_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eSEVEN_STATE, e55_BackUpID ) );
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, eFOUR_STATE, e94_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, eFOUR_STATE, e90_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, eFOUR_STATE, e92_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, eFOUR_STATE, e93_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, eFOUR_STATE, e91_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, eFOUR_STATE, e96_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, eFOUR_STATE, e95_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, eFOUR_STATE, e97_BackUpID));
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eFIVE_STATE, e94_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eFIVE_STATE, e90_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eFIVE_STATE, e92_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eFIVE_STATE, e93_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eFIVE_STATE, e91_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eFIVE_STATE, e96_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eFIVE_STATE, e95_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eFIVE_STATE, e97_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eSIX_STATE, e24_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eSIX_STATE, e20_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eSIX_STATE, e22_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eSIX_STATE, e23_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eSIX_STATE, e21_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eSIX_STATE, e26_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eSIX_STATE, e25_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eSIX_STATE, e27_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e12_STATE, e57_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e12_STATE, e56_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e13_STATE, e59_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e13_STATE, e58_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e14_STATE, e78_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e14_STATE, e77_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e15_STATE, e80_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e15_STATE, e79_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e16_STATE, e82_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e16_STATE, e81_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e17_STATE, e84_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e17_STATE, e83_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e18_STATE, e86_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e18_STATE, e85_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e19_STATE, e88_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e19_STATE, e87_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e20_STATE, e62_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e20_STATE, e62_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e21_STATE, e65_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e21_STATE, e65_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eTEN_STATE, e62_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eTEN_STATE, e62_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e11_STATE, e65_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e11_STATE, e65_BackUpID ) );
          m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e22_STATE, e61_BackUpID ) ); m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e23_STATE, e64_BackUpID ) );
          m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e24_STATE, e60_BackUpID ) ); m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e25_STATE, e63_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eEIGHT_STATE, e44_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eEIGHT_STATE, e40_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eEIGHT_STATE, e42_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eEIGHT_STATE, e43_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eEIGHT_STATE, e41_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eEIGHT_STATE, e46_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eEIGHT_STATE, e45_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eEIGHT_STATE, e47_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eNINE_STATE, e44_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eNINE_STATE, e40_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eNINE_STATE, e42_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eNINE_STATE, e43_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eNINE_STATE, e41_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eNINE_STATE, e46_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eNINE_STATE, e45_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eNINE_STATE, e47_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e26_STATE, e34_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e27_STATE, e37_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e30_STATE, e6_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e30_STATE, e9_BackUpID ) );
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e33_STATE, e4_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e33_STATE, e5_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e33_STATE, e6_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e33_STATE, e7_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e33_STATE, e8_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e33_STATE, e9_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e33_STATE, e11_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e33_STATE, e10_BackUpID ) );
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e34_STATE, e4_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e34_STATE, e5_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e34_STATE, e6_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e34_STATE, e7_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e34_STATE, e8_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e34_STATE, e9_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e34_STATE, e11_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e34_STATE, e10_BackUpID));
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e35_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e35_STATE, e13_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e35_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e35_STATE, e15_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e35_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e35_STATE, e17_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e35_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e35_STATE, e18_BackUpID ) );
  
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e36_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e36_STATE, e13_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e36_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e36_STATE, e15_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e36_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e36_STATE, e17_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e36_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e36_STATE, e18_BackUpID ) );
  
          m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e37_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e37_STATE, e13_BackUpID ) );
          m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e37_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e37_STATE, e15_BackUpID ) );
          m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e37_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e37_STATE, e17_BackUpID ) );
          m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e37_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e37_STATE, e18_BackUpID ) );
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e41_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e41_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e41_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e41_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e41_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e41_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e41_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e41_STATE, e18_BackUpID));
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e42_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e42_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e42_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e42_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e42_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e42_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e42_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e42_STATE, e18_BackUpID));
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e43_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e43_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e43_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e43_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e43_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e43_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e43_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e43_STATE, e18_BackUpID));
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e46_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e46_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e46_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e46_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e46_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e46_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e46_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e46_STATE, e18_BackUpID));
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e45_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e45_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e45_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e45_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e45_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e45_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e45_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e45_STATE, e18_BackUpID));
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e44_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e44_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e44_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e44_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e44_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e44_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e44_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e44_STATE, e18_BackUpID));
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e39_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e39_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e39_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e39_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e39_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e39_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e39_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e39_STATE, e18_BackUpID));
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e40_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e40_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e40_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e40_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e40_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e40_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e40_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e40_STATE, e18_BackUpID));
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e47_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e47_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e47_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e47_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e47_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e47_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e47_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e47_STATE, e18_BackUpID));
  
          m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e38_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e38_STATE, e13_BackUpID));
          m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e38_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e38_STATE, e15_BackUpID));
          m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e38_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e38_STATE, e17_BackUpID));
          m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e38_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e38_STATE, e18_BackUpID));
      }
  };
  
  
  int main(int argc, const char * argv[]) {
  
      CTest test1; test1.Do();
      CTest test2; test2.Do();
      CTest test3; test3.Do();
      CTest test4; test4.Do();
      CTest test5; test5.Do();
      CTest test6; test6.Do();
      CTest test7; test7.Do();
      CTest test8; test8.Do();
      CTest test9; test9.Do();
      CTest test10; test10.Do();
      CTest test11; test11.Do();
      CTest test12; test12.Do();
      CTest test13; test13.Do();
      CTest test14; test14.Do();
      CTest test15; test15.Do();
      CTest test16; test16.Do();
  
      CTest ptest1; ptest1.Do();
      CTest ptest2; ptest2.Do();
      CTest ptest3; ptest3.Do();
      CTest ptest4; ptest4.Do();
      CTest ptest5; ptest5.Do();
      CTest ptest6; ptest6.Do();
      CTest ptest7; ptest7.Do();
      CTest ptest8; ptest8.Do();
      CTest ptest9; ptest9.Do();
      CTest ptest10; ptest10.Do();
      CTest ptest11; ptest11.Do();
      CTest ptest12; ptest12.Do();
      CTest ptest13; ptest13.Do();
      CTest ptest14; ptest14.Do();
      CTest ptest15; ptest15.Do();
      CTest ptest16; ptest16.Do();
  
      return 0;
  }
  </code></pre>