anchor.diff:  
     // called by a client to login via Smart App Launch
     // launches the user's referred browser, and waits for the cycle to complete
  -  TSmartLoginState = (stStarting, stDone, stComplete);
  +  TSmartLoginState = (stStarting, stDone, stComplete, stError);
     TIdleEvent = procedure(out stop : boolean) of object;
     TOpenURLEvent = procedure(url : String) of object;
     TSmartAppLaunchLogin = class (TAdvObject)
  
positive.code:     s := ARequestInfo.RawHTTPCommand.Split([' ']);
      pm := TParseMap.create(s[1].Substring(6));
      try
        FAuthCode := pm.GetVar('code');
        FFinalState := pm.GetVar('state');
        State := stDone;
      finally
        pm.free;
  
negative.code:     FOnOpenURL: TOpenURLEvent;
      Fversion: String;
      FName: String;
      FErrorMessage : String;
  
      procedure SetServer(const Value: TRegisteredFHIRServer);
      procedure Settoken(const Value: TSmartOnFhirAccessToken);
  