def __init__(self, *, parent=None, con=None, **kwargs):
if parent and con:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>self.con = parent.con if parent else con<EOL>main_resource = kwargs.pop('<STR_LIT>', None) or (<EOL>getattr(parent, '<STR_LIT>', None) if parent else None)<EOL>super().__init__(<EOL>protocol=parent.protocol if parent else kwargs.get('<STR_LIT>'),<EOL>main_resource=main_resource)<EOL>cloud_data = kwargs.get(self._cloud_data_key, {})<EOL>cc = self._cc  <EOL>self._track_changes = TrackerSet(casing=cc)<EOL>self.object_id = cloud_data.get(cc('<STR_LIT:id>'), None)<EOL>self.__created = cloud_data.get(cc('<STR_LIT>'), None)<EOL>self.__modified = cloud_data.get(cc('<STR_LIT>'), None)<EOL>local_tz = self.protocol.timezone<EOL>self.__created = parse(self.created).astimezone(<EOL>local_tz) if self.__created else None<EOL>self.__modified = parse(self.modified).astimezone(<EOL>local_tz) if self.__modified else None<EOL>self.__display_name = cloud_data.get(cc('<STR_LIT>'), '<STR_LIT>')<EOL>self.__name = cloud_data.get(cc('<STR_LIT>'), '<STR_LIT>')<EOL>self.__surname = cloud_data.get(cc('<STR_LIT>'), '<STR_LIT>')<EOL>self.__title = cloud_data.get(cc('<STR_LIT:title>'), '<STR_LIT>')<EOL>self.__job_title = cloud_data.get(cc('<STR_LIT>'), '<STR_LIT>')<EOL>self.__company_name = cloud_data.get(cc('<STR_LIT>'), '<STR_LIT>')<EOL>self.__department = cloud_data.get(cc('<STR_LIT>'), '<STR_LIT>')<EOL>self.__office_location = cloud_data.get(cc('<STR_LIT>'), '<STR_LIT>')<EOL>self.__business_phones = cloud_data.get(cc('<STR_LIT>'), []) or []<EOL>self.__mobile_phone = cloud_data.get(cc('<STR_LIT>'), '<STR_LIT>')<EOL>self.__home_phones = cloud_data.get(cc('<STR_LIT>'), []) or []<EOL>emails = cloud_data.get(cc('<STR_LIT>'), [])<EOL>self.__emails = Recipients(<EOL>recipients=[(rcp.get(cc('<STR_LIT:name>'), '<STR_LIT>'), rcp.get(cc('<STR_LIT:address>'), '<STR_LIT>'))<EOL>for rcp in emails],<EOL>parent=self, field=cc('<STR_LIT>'))<EOL>email = cloud_data.get(cc('<STR_LIT:email>'))<EOL>self.__emails.untrack = True<EOL>if email and email not in self.__emails:<EOL><INDENT>self.__emails.add(email)<EOL><DEDENT>self.__business_address = cloud_data.get(cc('<STR_LIT>'), {})<EOL>self.__home_address = cloud_data.get(cc('<STR_LIT>'), {})<EOL>self.__other_address = cloud_data.get(cc('<STR_LIT>'), {})<EOL>self.__preferred_language = cloud_data.get(cc('<STR_LIT>'),<EOL>None)<EOL>self.__categories = cloud_data.get(cc('<STR_LIT>'), [])<EOL>self.__folder_id = cloud_data.get(cc('<STR_LIT>'), None)<EOL>mail = cloud_data.get(cc('<STR_LIT>'), None)<EOL>user_principal_name = cloud_data.get(cc('<STR_LIT>'), None)<EOL>if mail and mail not in self.emails:<EOL><INDENT>self.emails.add(mail)<EOL><DEDENT>if user_principal_name and user_principal_name not in self.emails:<EOL><INDENT>self.emails.add(user_principal_name)<EOL><DEDENT>self.__emails.untrack = False<EOL>
Create a contact API component

        :param parent: parent account for this folder
        :type parent: Account
        :param Connection con: connection to use if no parent specified
        :param Protocol protocol: protocol to use if no parent specified
         (kwargs)
        :param str main_resource: use this resource instead of parent resource
         (kwargs)