anchor.diff:  
   //Discrete pallette for the Sesmi project
   function CreateHansPalette(const aTitle: string): TWDPalette;
  -begin
  +var
  +  factor: Double;
  +begin
  +  factor := 1 / 1000000000;
     Result := TDiscretePalette.Create(aTitle, [
  -    TDiscretePaletteEntry.Create(TGeoColors.Create($Ff000000), -40000, 0, '<0'),
  -    TDiscretePaletteEntry.Create(TGeoColors.Create($Ff0047ba), 0, 25, '0-25'),
  -    TDiscretePaletteEntry.Create(TGeoColors.Create($Ff6da5ff), 25, 30, '25-30'),
  -    TDiscretePaletteEntry.Create(TGeoColors.Create($Ffffff00), 30, 45, '30-45'),
  -    TDiscretePaletteEntry.Create(TGeoColors.Create($Ffff8000), 45, 60, '45-60'),
  -    TDiscretePaletteEntry.Create(TGeoColors.Create($Ffff0000), 60, 75, '60-75'),
  -    TDiscretePaletteEntry.Create(TGeoColors.Create($Ff8100c1), 75, 20000, '>75')
  +    TDiscretePaletteEntry.Create(TGeoColors.Create($Ff000000), -40000*factor, 0*factor, '<0'),
  +    TDiscretePaletteEntry.Create(TGeoColors.Create($Ff0047ba), 0*factor, 25*factor, '0-25'),
  +    TDiscretePaletteEntry.Create(TGeoColors.Create($Ff6da5ff), 25*factor, 30*factor, '25-30'),
  +    TDiscretePaletteEntry.Create(TGeoColors.Create($Ffffff00), 30*factor, 45*factor, '30-45'),
  +    TDiscretePaletteEntry.Create(TGeoColors.Create($Ffff8000), 45*factor, 60*factor, '45-60'),
  +    TDiscretePaletteEntry.Create(TGeoColors.Create($Ffff0000), 60*factor, 75*factor, '60-75'),
  +    TDiscretePaletteEntry.Create(TGeoColors.Create($Ff8100c1), 75*factor, 20000*factor, '>75')
     ],TGeoColors.Create($00000000)); //default: transparant
   end;
   
  
positive.code:           value := aPayload.bb_read_double(aCursor);
            if fLinkLayers.TryGetValue(fieldInfo, layer) then
              layer.AddValue(timestamp, value);
            if fTrackLayers.TryGetValue(fieldInfo, trackLayer) then
              trackLayer.AddValue(sensorid, value);
          end;
        sensordata_linkid:
          begin
  
negative.code:   end;
  end;
  
  procedure TSesmiScenario.triggerUpdateTimesliderData;
  begin
    fTimeSliderDataTimer.Arm(DateTimeDelta2HRT(2*dtOneSecond),
      procedure (aTimer: TTimer; aTime: THighResTicks)
      var
        jsonTSData: string;
        client: TClient;
        palette: TWDPalette;
      begin
        palette := CreateHansPalette('NO2');
        try
          jsonTSData := jsonTimesliderData(sensordata_no2 shr 3, palette);
        finally
          palette.Free;
        end;
        for client in clients do
        begin
          client.signalString('{"type":"timesliderEvents","payload":{"setEvents":['+jsonTSData+']}}');
        end;
      end);
  end;
  
  { TSesmiProject }
  
  function TSesmiProject.addClient(const aClientID: string): TClient;
  