
    |~gvZ                     :   d dl m Z d dlZ ed       ed       ed       ed       ed       ed       ed	       ed
       ed       ed      f
Z ed       ed       ed       ed       ed       ed       ed
      fZ ed       ed       ed       ed       ed       ed      fZ ed       ed       ed       ed       ed       ed       ed       ed      fZ ed       ed       ed        ed!       ed"       ed#       ed$       ed%       ed&       ed'       ed(       ed)       ed*       ed+       ed,       ed-       ed.       ed!       ed/      fZ ed       ed0       ed1       ed2      fZ ed3       ed4       ed5       ed6      fZ	 ed7       ed8       ed9       ed:       ed;      fZ
 ed<       ed=       ed>       ed?       ed@      fZi d d!d  edA      ifdBdd  edC      ifdDdi d  edE      dB edF      dD edG      dH ed      dI edJ      dK edL      dM edN      dO edP      dQ edR      dS edT      dU edV      dW edX      dY edZ      d[ ed\      d] ed^      d_ ed`      fdHda edb       edc       edd      defdIdfd  edg      ifdKd3d  edh      ifdMdid  edj      ifdOdkd  edl      ifdQdmd  edn      ifdSdod  edp      ifdUdqd  edr      ifdWdsd  edt      ifdYdu edv       edw      dxfd[dy edz       ed{      dxfd]d| ed}       ed~       ed      defd_d ed       ed0       ed       ed       ed       ed       ed       ed       eds       ed       ed      dfddd  ed      ifi dd ed       ed       ed       ed      dfdd ed       ed       ed       ed       ed       ed      dfdd ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed      dfdd ed       ed       ed       ed      dfddi d  ed      dB ed      dD ed      dH ed      dI ed      dK ed      dM ed      dO ed      dQ ed      dS ed      dU ed      dW ed«      dY edë      d[ edī      d] edū      d_ edƫ      d edǫ       edȫ       edɫ       edʫ       ed˫       ed̫       edͫ       edΫ       edϫ       edЫ      dќ	fddi d  edԫ      dB edի      dD ed֫      dH ed׫      dI edث      dK ed٫      dM edګ      dO ed۫      dQ edܫ      dS edݫ      dU edޫ      dW ed߫      dY ed      d[ ed      d] ed      d_ ed      d ed       ed       ed       ed       ed       ed       ed       ed       ed       ed      dќ	fdd ed       ed       ed       ed       ed       ed       ed      dfdd ed       ed       ed       ed       ed       ed       ed        ed       ed       ed       ed       ed      dfddd  ed	      ifd
dd  ed      ifdd ed       ed       ed        ed       ed       ed       ed       ed      dfdd ed       ed       ed       ed       ed       ed       ed       ed       ed       ed      d
fdd ed       ed        ed!       ed"       ed#       ed$      dfd%d& ed'       ed(       ed)       ed*       ed+       ed,       ed-       ed.       ed/       ed0      d
fd1d2 ed3       ed4       ed5       ed6       ed7       ed8       ed9       ed:       ed;      d<	fd=d> ed?       ed@       edA       edB       edC       edD       edE      dfdFdG edH       edI       edJ       edK       edL       edM      dfi dNdO edP       ed"       edQ       edR       edS       edT       edU       edV       edW       edX      d
fdYdZi d  ed[      dB ed\      dD ed]      dH ed^      dI ed_      dK ed`      dM eda      dO edb      dQ edc      dS edd      dU ede      dW edf      dY edg      d[ edh      d] edi      d_ edj      fdkdli d  edm      dB edn      dD edo      dH edp      dI edq      dK edr      dM eds      dO edt      dQ edu      dS edv      dU edw      dW edx      dY edy      d[ edz      d] ed{      d_ ed|      fd}d~ ed       ed       ed       ed$       ed      dfdd ed       ed       ed       ed       ed      dfdd ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed      dfdd ed       ed       ed       ed      dfdd ed       ed       ed       ed      dfdd ed       ed       ed      defdd ed       ed       ed      defdd ed       ed       ed      defddd  ed      ifdd ed       ed       ed      defddd  ed      ifdd ed       ed       ed       ed«      dÜfdĐdd  edƫ      ifdǐd edɫ       edʫ      dxfdːd edͫ       edΫ       edϫ       edЫ       edѫ      dfiZdedefdԄZdedefdՄZdedefdׄZy(      )gettextNMiscellaneousComputerPhonezAccess pointzAudio/video
PeripheralImagingWearableToyUncategorizedDesktopServerLaptopHandheldPalmCellularCordless
SmartphoneModemISDNFullyu   1–17 percentu   17–33 percentu   33–50 percentu   50–67 percentu   67–83 percentu   83–99 percentzNot availableHeadset	HandsfreeUnknown
MicrophoneLoudspeaker
HeadphoneszPortable audioz	Car audiozSet-top boxzHi-Fi audioVCRzVideo camera	CamcorderzVideo monitorzVideo display and loudspeakerzVideo conferencingz
Gaming/ToyKeyboardPointingComboDisplayCameraScannerPrinterzWrist watchPagerJacketHelmetGlassesRobotVehicleDoll
ControllerGamezGeneric Unknown   zGeneric Phone   zGeneric ComputerzDesktop WorkstationzServer-class Computer      zHandheld PC/PDA (clamshell)   zPalm-size PC/PDA   zWearable computer (watch size)   Tablet   zDocking Station	   z
All in One
   zBlade Server   Convertible   
Detachable   zIoT Gateway   zMini PC   zStick PCWatchzGeneric WatchzSports Watch
Smartwatch)r   r/   r0   ClockzGeneric ClockzGeneric DisplayzRemote ControlzGeneric Remote ControlzEye-glasseszGeneric Eye-glassesTagzGeneric TagKeyringzGeneric KeyringzMedia PlayerzGeneric Media PlayerzBarcode ScannerzGeneric Barcode ScannerThermometerzGeneric ThermometerzEar Thermometer)r   r/   zHeart Rate SensorzGeneric Heart Rate SensorzHeart Rate BeltzBlood PressurezGeneric Blood PressurezArm Blood PressurezWrist Blood PressurezHuman Interface DevicezGeneric Human Interface DeviceMouseJoystickGamepadzDigitizer TabletzCard ReaderzDigital PenTouchpadzPresentation Remote)r   r/   r0   r1   r2   r3   r4   r5   r7   r8   r9      zGlucose MeterzGeneric Glucose Meter   zRunning Walking SensorzGeneric Running Walking SensorzIn-Shoe Running Walking SensorzOn-Shoe Running Walking SensorzOn-Hip Running Walking Sensor)r   r/   r0   r1      CyclingzGeneric CyclingzCycling ComputerzSpeed SensorzCadence SensorzPower SensorzSpeed and Cadence Sensor)r   r/   r0   r1   r2   r3      zControl DevicezGeneric Control DeviceSwitchzMulti-switchButtonSliderzRotary SwitchzTouch PanelzSingle SwitchzDouble SwitchzTriple SwitchzBattery SwitchzEnergy Harvesting SwitchzPush ButtonDial)r   r/   r0   r1   r2   r3   r4   r5   r7   r8   r9   r:   r<   r>      zNetwork DevicezGeneric Network DevicezAccess PointzMesh DevicezMesh Network Proxy   SensorzGeneric SensorzMotion SensorzAir quality SensorzTemperature SensorzHumidity SensorzLeak SensorzSmoke SensorzOccupancy SensorzContact SensorzCarbon Monoxide SensorzCarbon Dioxide SensorzAmbient Light SensorzEnergy SensorzColor Light SensorzRain SensorzFire SensorzWind SensorzProximity SensorzMulti-SensorzFlush Mounted SensorzCeiling Mounted SensorzWall Mounted SensorMultisensorzEnergy MeterzFlame DetectorzVehicle Tire Pressure Sensor)	rL   rM   rO   rT   rU               rX   zLight FixtureszGeneric Light Fixturesz
Wall LightzCeiling LightzFloor LightzCabinet Lightz
Desk LightzTroffer LightzPendant LightzIn-ground LightzFlood LightzUnderwater LightzBollard with LightzPathway LightzGarden LightzPole-top Light	SpotlightzLinear LightzStreet LightzShelves Lightz	Bay LightzEmergency Exit LightzLight ControllerzLight DriverBulbzLow-bay LightzHigh-bay LightrY   FanzGeneric FanzCeiling Fanz	Axial FanzExhaust FanzPedestal FanzDesk FanzWall Fan)r   r/   r0   r1   r2   r3   r4   rZ   HVACzGeneric HVAC
Thermostat
HumidifierzDe-humidifierHeaterRadiatorBoilerz	Heat PumpzInfrared HeaterzRadiant Panel Heaterz
Fan HeaterzAir Curtain)r   r/   r0   r1   r2   r3   r4   r5   r7   r8   r9   r:   r[   zAir ConditioningzGeneric Air Conditioning   zGeneric Humidifier   HeatingzGeneric Heating)r   r/   r0   r1   r2   r3   r4   r5      zAccess ControlzGeneric Access ControlzAccess DoorzGarage DoorzEmergency Exit DoorzAccess LockElevatorWindowzEntrance Gatez	Door LockLocker)
r   r/   r0   r1   r2   r3   r4   r5   r7   r8      zMotorized DevicezGeneric Motorized DevicezMotorized GateAwningzBlinds or ShadesCurtainsScreen   zPower DevicezGeneric Power DevicezPower OutletzPower StripPlugzPower Supplyz
LED DriverzFluorescent Lamp GearzHID Lamp GearzCharge Casez
Power Bank   zLight SourcezGeneric Light SourcezIncandescent Light BulbzLED LampzHID LampzFluorescent Lampz	LED ArrayzMulti-Color LED ArrayzLow voltage halogenz#Organic light emitting diode (OLED))	r   r/   r0   r1   r2   r3   r4   r5   r7       zWindow CoveringzGeneric Window CoveringzWindow ShadeszWindow BlindszWindow AwningzWindow CurtainzExterior ShutterzExterior Screen!   z
Audio SinkzGeneric Audio SinkzStandalone SpeakerSoundbarzBookshelf SpeakerzStandmounted SpeakerSpeakerphone"   zAudio SourcezGeneric Audio SourceAlarmBellHornzBroadcasting DevicezService DeskKioskzBroadcasting Room
Auditorium#   zMotorized VehiclezGeneric Motorized VehicleCarzLarge Goods Vehiclez2-Wheeled Vehicle	MotorbikeScooterMopedz3-Wheeled VehiclezLight Vehiclez	Quad BikeMinibusBusTrolleyzAgricultural VehiclezCamper / Caravanz!Recreational Vehicle / Motor Home$   zDomestic AppliancezGeneric Domestic ApplianceRefrigeratorFreezerOven	MicrowaveToasterzWashing MachineDryerzCoffee makerzClothes ironzCurling ironz
Hair dryerzVacuum cleanerzRobotic vacuum cleanerzRice cookerzClothes steamer%   zWearable Audio DevicezGeneric Wearable Audio DeviceEarbudz	Neck Band)r   r/   r0   r1   r2   &   AircraftzGeneric AircraftzLight Aircraft
Microlight
ParagliderzLarge Passenger Aircraft'   zAV EquipmentzGeneric AV Equipment	AmplifierReceiverRadioTuner	Turntablez	CD Playerz
DVD PlayerzBluray PlayerzOptical Disc PlayerzSet-Top Box(   zDisplay EquipmentzGeneric Display Equipment
TelevisionMonitor	Projector)   zHearing aidzGeneric Hearing aidzIn-ear hearing aidzBehind-ear hearing aidzCochlear Implant*   GamingzGeneric GamingzHome Video Game ConsolezPortable handheld console+   SignagezGeneric SignagezDigital SignagezElectronic Label1   zPulse OximeterzGeneric Pulse OximeterzFingertip Pulse OximeterzWrist Worn Pulse Oximeter2   zWeight ScalezGeneric Weight Scale3   zPersonal Mobility Devicez Generic Personal Mobility DevicezPowered WheelchairzMobility Scooter4   zContinuous Glucose Monitorz"Generic Continuous Glucose Monitor5   zInsulin PumpzGeneric Insulin PumpzInsulin Pump, durable pumpzInsulin Pump, patch pumpzInsulin Pen)r   r/   r2   r7   6   zMedication DeliveryzGeneric Medication Delivery7   
SpirometerzGeneric SpirometerzHandheld SpirometerQ   zOutdoor Sports ActivityzGeneric Outdoor Sports ActivityzLocation DisplayzLocation and Navigation DisplayzLocation PodzLocation and Navigation Podklassreturnc                 @    | dz	  dz  }|dkD  r	t         d   S t         |   S )Nr7   rr   r8   )	major_cls)r   indexs     5/usr/lib/python3/dist-packages/blueman/DeviceClass.pyget_major_classr     s,    aZ4Eqy|U    c                    | st        d      S | dz	  dz  }|dk(  r$| dz	  dz  }|t        t              k  r	t        |   S y|dk(  r$| dz	  dz  }|t        t              k  r	t        |   S y|dk(  r$| d	z	  d
z  }|t        t              k  r	t        |   S y|dk(  r$| dz	  dz  }|t        t
              k  r	t
        |   S y|d	k(  r$| dz	  dz  }|t        t              k  r	t        |   S y|dk(  rt        d      S |d
k(  r$| dz	  dz  }|t        t              k  r	t        |   S y|dk(  r$| dz	  dz  }|t        t              k  r	t        |   S yt        d      S )Nr   r7   rr   r/   r0   ?    r1   r3   r5   r2   r4   r   )	_lencomputer_minor_clsphone_minor_clsaccess_point_minor_clsaudio_video_minor_clsperipheral_minor_clswearable_minor_clstoy_minor_cls)r   iminor_indexs      r   get_minor_classr     s   |	!tAAvzT)/00%k22	
azT)_--";//	
azT)344)+66	
azT)233(55	
azT)122'44	
a|	
azT)/00%k22	
azT)]++ --Y<r   
appearancec                    | dz	  }| dz  }d|cxk  rdk  sn d|cxk  rdk  r'n n$t        j                  d|         t        d   d   S |d	kD  r$t        j                  d
|         t        d   d   S t        |   \  }}||vr|S ||   S )Nr4   r   rO   0   r   P   zReserved category found: r   r   zInvalid category found: )loggingdebuggatt_appearance_categorieswarning)r   catsubcatcat_namesubcatss        r   gatt_appearance_to_namer     s    

C$F
cRR3_"_1*>?)!,Q//	r2:,?@)!,Q//237HgWvr   )r   r   r   r   r   r   r   r   r   imaging_minor_clsr   r   r   intstrr   r   r    r   r   <module>r      s      ojMgJnmlOiLjMeHo)	2 oiLhKhKjMfIjM & ojMjMlOgJfI" gJo! * oiLkNiLlOmlOkNmmeHnkNo%&iLlOM' V ojMjMgJ	  iLhKiLiL	  mgJhKhKiL  gJiLfIlOfIo9tQ012
3o7T1_-.
/o 	: -a 23 -a 56-a 78- ak- a =>	-
 a 23- a @A- ak- a 12- ao- a/- a.- ao- a.- a	l- a
m- .o& 	71_-^,\?, -'o, 	7T1_-.
/-o. 	9tQ012
3/o0 	dA&>$?@
A1o2 	=4#8!9:
;3o4 	54=)*
+5o6 	9tQ012
37o8 	>D!$:";<
=9o: 	tQ'@%AB
C;o< 	=#8!9 124 5=o@ 	q)D'E$%&7$8!: ;AoD 	A&>$?!"#7!8!"#9!:< =EoJ 	#A.N,O,-jM,-gJ,-jM,-iL,-.@,A,-m,<,-m,<,-.?,@,-jM,-.C,D
&F 
GKo` 	?T1%<#=>
?aob 	#A.N,O,-.N,O,-.N,O,-.M,N&P Qcoj 	9Q0112~./0~.9:< =kov 	A&>$?$%hK$%n$5$%hK$%hK$%o$6$%m$4$%o$6$%o$6$%o$6$%&6$7$%&@$A$%m$4$%fI/ 0woR 	A&>$?$%n$5$%m$4$%&:$;= >SoZ 	8 ?dA./ ?Ao.?A23? A23? A/0	?
 Am,? An-? A01? A./? A67? A56? A45? Ao.? A23? Am,? Am,?  Am,!?" 01n-456734m,n-./<=3? @[oN 	 9dA&>$? 9"AlO9"Ao$69 #Am$49 #Ao$6	9
 #AlO9 #Ao$69 #Ao$69 #A&7$89 #Am$49 #A&8$99 #A&:$;9 #Ao$69 #An$59 #A&6$79 #AkN9  #An$5!9" %&n$5$%o$6$%kN$%&<$=$%&8$9$%n$5$%fI$%o$6$%&6$739 :OoB 	5=)=);=)>*::( )CoP 	6!N+L/L/O,H+J-H+K.-.23L/M*, -Qoh 	a(B&CD
Eioj 	<$"6 78
9kol 	9Q01z]x[{^0156|_}-/ 0mo| 	A&>$?$%m$4$%m$4$%&;$<$%m$4$%jM$%hK$%o$6$%kN$%hK	1 	2}oP 	a(B&C&'(8&9&'k&'(:&;&'
m&'k 3 4Qo\ 	>!$:";"#N"3"#M"2"#F)"#N"3"#L/"#$;"<"#O"4"#M"2"#L/	3 	4]op 	>!$:";"#$=">"#J-"#J-"#$6"7"#K."#$;"<"#$9":"#$I"JL MqoB 	Q'@%A%&%7%&%7%&%7%&'7%8%&'9%:%&'8%9; <CoP 	<"6 7 !"6 7 !* !"5 6 !"8 9 !. 13 4Qo\ 	>!$:";"#L/"#G*"#F)"#F)"#$9":"#N"3"#G*"#$7"8"#L/	3 	4]op 	 !Oq)D'E !O!%qx!O!%q)>'?!O "&q)<'=!O "&q~	!O
 "&q|!O "&qz!O "&q)<'=!O "&q'9!O "&q~!O "&q|!O "&qx!O "&q|!O "&q)?'@!O "&q);'<!O "&q)L'M!O PqoP 	 ">$*F(G ">"&.(9">"&)"> #'&	"> #'+	">
 #')"> #'*;(<"> #''
"> #'.(9"> #'.(9"> #'.(9"> #',"> #'*:(;"> #'*B(C"> #'-(8"> #'*;(<"> ?Qop 	"1-L+M+,X;+,Y<+,\?+,[>	%; <qoz 	:a 23 01oo :;	= >{oD 	>!$:";"#K."#J-"#G*"#G*"#K."#K."#L/"#O"4"#$9":"#M"2
4 
5EoZ 	q)D'E'('(|'(~!7 8[ob 	=#8!9!"#7!8!"#;!<!"#5!68 9coj 	8A./789:< =kop 	9Q0101124 5qov 	A&>$?$%&@$A$%&A$BD Ewo| 	>D!$:";<
=}o~ 	%a0R.S./0D.E./0B.C(E FoD	 	'$2V0W)X
YE	oF	 	>!$:";"#$@"A"#$>"?"#M"24 5G	oN	 	 4+H)I"J
KO	oP	 	<"6 7 !"7 8: ;Q	oT	 	$Q/P-Q-./A-B-./P-Q-.~->-./L-M	'O PU	o d	3 3 33 33 3n  r   